Firebase Push通知を使用するアプリを開発しています。 iOS 11で試してみるまではうまくいきました。iOS11でiPhoneを使用すると、通知が届きません。ここに私のコードがあります:
- (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
}
どちらのメソッドも呼び出されません。
助けてくれてありがとう!
これはFirebaseの問題です。これは、iOS 11ではなく、最近のアップデートに関連しているようです。彼らは、その修正に取り組んでいます。
それまでの間、ポッドファイルにpod 'FirebaseInstanceID', '2.0.0'
を追加すると修正されます。
詳細はこちらをご覧ください: https://github.com/firebase/quickstart-ios/issues/327#issuecomment-332655731
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時間ほど立ち往生し、ネット上で見つかった2つのステップが助けになりました。
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" ] }'
これを試してもらえますか
Messaging.messaging().delegate = self
Messaging.messaging().shouldEstablishDirectChannel = true