ReactネイティブFCM iOSプッシュ通知が配信されない


8

まず最初に、環境はReactネイティブです。ここでは、rnfirebaseパッケージからの指示に従って、iOSでプッシュ通知をセットアップしようとしています。実際のiPhoneデバイスでどのステップを実行し、テストを行っていますか

  1. キーを作成

ここに画像の説明を入力してください

  1. 次にfirebaseに追加します

ここに画像の説明を入力してください

  1. Google-service.plistを追加し、Firebaseドキュメントからセットアップを追加します

ここに画像の説明を入力してください

そして能力を活性化する ここに画像の説明を入力してください

  1. 次にポッドパッケージをインストールします

ここに画像の説明を入力してください

  1. アプリを実行してトークンを取得

ここに画像の説明を入力してください

  1. クラウドメッセージングコンソールでトークン送信を使用する

通知が配信されなかったメッセージがFCMからも送信され、APNSで何が起こってエラーが発生したのか混乱したため、何が問題だったのかわからなかった

事前に感謝します

また、プッシャーに直接接続してみてください ここに画像の説明を入力してください

また、再度受信されません

次に、Firebaseと同じ証明書でOnesignalを使用してみて、テストメッセージでも機能する


明確にするために、これを実際のiOSデバイスでテストしていますか?iOSシミュレーターで通知をテストすることはできません。
Dan

@Dan yup iPhoneでテストしています
krissanawat

あなたのアプリケーションがフォアグラウンドまたはバックグラウンドであった質問は他にほとんどありませんか?フォアグラウンドの場合、アプリのイベントリスナーを確認しましたか?バックグラウンドでFirebaseコンソールなどから送信してみましたか?
Ashwin Mothilal

@krissanawatでは、完全なAppDelegate.mファイルと、firebaseワークフローを定義する反応ネイティブコードを提供できますか?
Neeeko

@Neeeko appdelegate here-> gist.github.com/krissnawat/4a8fdcb2526434ad3a037237ebe81eec for App.js using get token code-
krissanawat

回答:


1

プッシャーで使用しているトークンが正しくありません。リモート通知のトークンは次のようになります。

ここに画像の説明を入力してください

私はサイレントプッシュをテストしていましたが、トークンは通常のアラートと同様に見えます。これが、トークンを取得するために使用するコードです。私の推測では、あなたは悪いトークンをFCMに押し上げています。

fileprivate func convertHexDataToString(_ data: Data) -> String {
    var string: String = ""
    for i in 0..<data.count {
        string += String(format: "%02.2hhx", data[i] as CVarArg)
    }
    return string
}

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let tokenString = convertHexDataToString(deviceToken)
    #if DEBUG
    print("APN sandbox token: '\(tokenString)'")
    Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox)
    #else
    print("APN prod token: '\(tokenString)'")
    Messaging.messaging().setAPNSToken(deviceToken, type: .prod)
    #endif        
}

私はrnfirebaseパッケージによって生成されるトークンを取得するため、パッケージが間違っている場合、どこでトークンを取得できますか
krissanawat

これら2つのメソッドはAppDelegateにあります。それらをそこに追加してからプッシュ通知の登録を呼び出すと、オペレーティングシステムは、トークンを出力するdidRegisterForRemoteNotificationsWithDeviceTokenを呼び出します。最初にプッシャーを機能させることに焦点を当て、次にFCMをデバッグします。プッシャーが機能していない場合、FCMも機能しません。
TALE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.