Buffer icon Проекты

23 марта 2016-го

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Push-уведомления для iOS в Unity

Используя Unity для мобильной разработки, часто возникает необходимость добавить push-уведомления в свою игру или приложение. И если вы планируете выпускать игру для платформы iOS, то в Unity уже есть средства для работы с уведомлениями. Для Android нужно будет писать нативный плагин, об этом в другой раз.

И так, предположим серверная часть у вас уже готова, настроены сертификаты и т. д. Осталось сделать реализацию для приложения.

Первое, что нужно сделать — объявить, что вы хотите получать уведомления:

using NS = UnityEngine.iOS.NotificationServices;
using RN = UnityEngine.iOS.RemoteNotification;
...
void Awake () {
   NS.RegisterForNotifications(NotificationType.Alert|NotificationType.Badge|NotificationType.Sound);
   isTokenSent = false;
   isErrorAlert = false;
}

Так как, коллбеков никаких нет, что печально кстати, то проверяем все наши действия в Update:

void Update () {
   if (NS.registrationError != null && !isErrorAlert) { // проверяем есть ли ошибки
      Debug.Log (NS.registrationError);
      // что-то пошло не так
      _isErrorAlert = true;
   } else if (NS.deviceToken != null && !isTokenSent && !isErrorAlert) { // проверяем есть ли токен и отправлен ли он
      string token = Convert.ToBase64String (NS.deviceToken);
      SendTokenToServer (token); // отправляем токен на свой сервер
      _isTokenSent = true;
   }	
   if (_isTokenSent && !isErrorAlert && NS.remoteNotificationCount > 0) { // проверяем если есть токен, нет ошибок, и есть уведомления, то берем их
      RN push = NS.GetRemoteNotification (NS.remoteNotificationCount - 1);
      // делаем с нашим уведомлением что хотим и очищаем
      NS.ClearRemoteNotifications ();
   }
}

У объекта push есть свойство UserInfo в котором можно передавать с сервера нужные данные, а в приложении соответственно обрабатывать их. В документации также можно найти пример с локальными уведомлениями.

21 марта 2016   · · ·
← Ctrl →
· · ·   28 марта 2016