Je développe une application qui utilise les notifications Firebase Push. Cela a bien fonctionné jusqu'à ce que j'essaie dans iOS 11. En utilisant un iphone avec ios 11, les notifications n'arrivent pas. Voici mon code:
- (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
}
Aucune des méthodes n'est appelée.
Merci pour l'aide!
Il s'agit d'un problème avec Firebase. Cela semble être lié à une récente mise à jour de la leur au lieu d'iOS 11. Ils travaillent sur un correctif pour cela.
En attendant, si vous ajoutez pod 'FirebaseInstanceID', '2.0.0'
à votre fichier pod il le corrigera.
Vous pouvez en savoir plus ici: https://github.com/firebase/quickstart-ios/issues/327#issuecomment-332655731
Vous devez implémenter UNUserNotificationCenterDelegate
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler(.alert)
}
}
et définissez-le sur UNUserNotificationCenter
objet à l'intérieur didFinishLaunchingWithOptions
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().delegate = self
return true
}
Je me suis retrouvé coincé environ 3 heures puis 2 étapes trouvées sur le net m'ont aidé.
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" ] }'
Pouvez-vous essayer ceci
Messaging.messaging().delegate = self
Messaging.messaging().shouldEstablishDirectChannel = true