Мой коллега и я создаем приложение и реализуем функцию push-уведомлений с использованием AWS SNS API.Проблема заключается в том, что некоторые устройства работают нормально, но некоторые, такие как iPhone 6,7,8, не получают уведомления независимо от версии ОС (в основном это iOS 11,12).
Мы рассмотрели основныепроверка следующих пунктов:
- уведомление включено на всех тестовых устройствах
- тестеры дают разрешение на получение уведомления во время запуска приложения
- сертификат p12загруженный в AWS действителен, и формат правильный
Сообщения об ошибках, которые мы получали из журналов AWS CloudWatch, в основном были «неверный токен устройства» или «незарегистрированный», но мы уверены, что мы загружаемтокен устройства, как только мы получили его от APNS.
РЕДАКТИРОВАТЬ: фактический код добавлен
Зарегистрироваться для уведомления (в пределах didFinishLaunchingWithOptions
)
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if let error = error {
print("\(error.localizedDescription)")
} else {
application.registerForRemoteNotifications()
}
}
Получить токен
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print("Successfully registered for notifications!")
// upload token to our database for later use
}
Что-то нам не хватает?