Skip to content

k0ber/Notifications

Repository files navigation

NotificationsLib 1.0.0

Библиотека для отправки уведомлений

Usage

Для корректной работы библиотеки, необходимо объявить сервис в менифесте приложения:

Структура карты сообщений:

{
  "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

Ваша реализация может отличаться от приведённого выше примера.

Important

Не меняйте название иконки приложения ❗ У стандартного юнити проекта под андроид иконка называется app_icon и находится в res/drawable, если у неё будет другое название или другое расположение, уведомление будет сформировано без картинки и впоследствии проигнорировано (оно не появится в статус-баре) системой Андроид с ошибкой в логах: "Notification ignored with icon==0 ..."

Changelog

v1.0.0 (15 января 2015)
  • Релиз бета версии

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages