Уведомления Firebase, не работающие в iOS 11
Я разрабатываю приложение, которое использует оповещения PushBase Firebase. Он работал хорошо, пока я не попытался в iOS 11. Используя iphone с ios 11, уведомления не поступают. Здесь мой код:
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)
(UIBackgroundFetchResult))completionHandler {
//Manage notification
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
//Manage notification
}
Ни один из методов не вызывается.
Спасибо за помощь!
Ответы
Ответ 1
Это проблема с Firebase. Кажется, это связано с недавним обновлением их вместо iOS 11. Они работают над исправлением для него.
Тем временем, если вы добавите pod 'FirebaseInstanceID', '2.0.0'
в свой podfile, он исправит его.
Вы можете прочитать больше здесь: https://github.com/firebase/quickstart-ios/issues/327#issuecomment-332655731
Ответ 2
Вам нужно реализовать UNUserNotificationCenterDelegate
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(.alert)
}
}
и установите его в UNUserNotificationCenter
объект внутри didFinishLaunchingWithOptions
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().delegate = self
return true
}
Ответ 3
Проверьте это в возможностях вашего проекта. Это помогло мне)
![введите описание изображения здесь]()
Ответ 4
Можете ли вы попробовать это
Messaging.messaging().delegate = self
Messaging.messaging().shouldEstablishDirectChannel = true
Ответ 5
Я застрял как 3 часа, а затем 2 шага, найденные в сети, помогли мне.
- Попробуйте отправить уведомление через firebase извне, как это - просто замените ServerKey для своей учетной записи serverkey и FCM_TOKEN для своего fcm токена приложения:
curl -X "POST" "https://fcm.googleapis.com/fcm/send" \
-H "Authorization: key=ServerKey" \
-H "Content-Type: application/json" \
-d $'{
"notification": {
"body": "Testing with direct FCM API",
"title": "Test Message",
"badge": "0",
"sound": "default"
},
"registration_ids": [
"FCM_TOKEN"
]
}'
- Вы получите ответ об ошибке, вероятно. У меня есть "InvalidApnsCredential", который произошел из-за несоответствия TeamID в учетной записи разработчика firebase и apple (точнее, ключа авторизации) → также будьте осторожны, что firebase действительно меняет событие TeamID после сохранения (это дало мне много недопустимых изменений сохранения, которые произошли после обновления браузера)