Библиотека для отправки уведомлений
Для корректной работы библиотеки, необходимо объявить сервис в менифесте приложения:
Структура карты сообщений:
{
"interval": BOOLEAN,
"notifications"[]:
{
"nid": INT,
"messages"[]:
{
"mid": INT,
"text": STRING
},
"time": INT
}
}
interval - флаг того, что указанный массив уведомлений будет повторяться notifications - массив уведомлений nid - идентификатор уведомления messages - массив текстов уведомлений, при совершении уведомления, берется рандомное сообщение mid - идентификатор сообщения text - текст сообщения time - время уведомления в минутах с текущего момента
===
Чтобы установить новую карту уведомлений в соответствии со схемой, необходимо вызвать из юнити статический метод
static void setNotificationMap(Activity activity, String jSonStrMap)
передав туда ссылку на текущее активити и строку, содержащую закодированный JSON объект. Установка новой карты затирает старую.
Для того, чтобы отменить появление дальнейших уведомлений в статус баре, необходимо вызвать метод
static void cancelNotify(Activity activity)
Метод для возврата айди уведомления, которое появится в статус баре следующим.
static int getNextId(Activity activity)
Айди будет возвращён в соответствии с картой уведомлений. Если уведомления были отменены, или все показаны метод вернёт -1.
При клике по уведомлению будет открыто приложение, из которого была установлена карта уведомлений. В интенте этого приложения будут лежать значеия ID уведомления и ID сообщения, "NID" и "MID" соответсвенно, всё в соответствии с установленной картой. Чтобы достать эти айдишники из интента при запуске приложения, можно воспользоваться следующим кодом в скрипте, который будет срабатывать после инициализации Юнити:
public void GetIntent() {
[X]if UNITY_ANDROID
using (var actClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
intentActivityContext = actClass.GetStatic<AndroidJavaObject>("currentActivity");
var intent = intentActivityContext.Call<AndroidJavaObject>("getIntent");
var nID = intent.Call<int>("getIntExtra", "NID", -1);
var mID = intent.Call<int>("getIntExtra", "MID", -1);
getNid = nID;
getMid = mID;
}
[X]endif
Ваша реализация может отличаться от приведённого выше примера.
Не меняйте название иконки приложения ❗ У стандартного юнити проекта под андроид иконка называется app_icon и находится в res/drawable, если у неё будет другое название или другое расположение, уведомление будет сформировано без картинки и впоследствии проигнорировано (оно не появится в статус-баре) системой Андроид с ошибкой в логах: "Notification ignored with icon==0 ..."
- Релиз бета версии