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 в котором можно передавать с сервера нужные данные, а в приложении соответственно обрабатывать их. В документации также можно найти пример с локальными уведомлениями.