web-dev-qa-db-ja.com

iOS 11でFirebase通知が機能しない

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

13
Jeremiah

プロジェクト機能でこれを確認してください。それは私を助けました) enter image description here

1
Artfintch

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
}
1
Adnan Aftab

私は3時間ほど立ち往生し、ネット上で見つかった2つのステップが助けになりました。

  1. このように外部に送信するfirebase通知を呼び出してみてください-アカウントのserverkeyをServerKeyに、アプリのfcmトークンをFCM_TOKENに置き換えるだけです:
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"
  ]
}'
  1. おそらくいくつかのエラー応答が返されます。 「InvalidApnsCredential」は、firebaseのTeamIDとApple開発者アカウント(より具体的には認証トークンキー)が一致しないために発生しました。ブラウザの更新後に発生した変更を保存します)
0
Hourglasser

これを試してもらえますか

    Messaging.messaging().delegate = self
    Messaging.messaging().shouldEstablishDirectChannel = true