FireBase:デバイストークンをFCMトークンに変換する方法 -- ios フィールド と firebase フィールド と push-notification フィールド と firebase-cloud-messaging フィールド 関連 問題

Firebase: How to translate a device token into a FCM token












1
vote

問題

日本語

プッシュ通知にFirebaseを使用しようとしています。しかし、私はブロックを打つ、すなわち私はiOSでそのことをすることができませんでした。私は両方の2つのアプローチを試みました

<事前> <コード> Messaging.messaging().setAPNSToken(deviceToken, type: .prod) and InstanceID.instanceID().setAPNSToken(deviceToken, type: InstanceIDAPNSTokenType.sandbox)

2nd

<事前> <コード> application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) Firebase

私は何をすべきか?

編集: これは補足情報であり、エラーメッセージはこのようなものです。 デフォルトトークンエラードメイン= com.firebase.iid code = 1003 "(NULL)" の取得に失敗しました 私はグーグルしましたが、頼りな情報はありません。

英語

I am trying to use the Firebase for push notifications. However, I have hit the block, namely I couldn't do that thing in iOS. I attempted two approaches of both

Messaging.messaging().setAPNSToken(deviceToken, type: .prod) and InstanceID.instanceID().setAPNSToken(deviceToken, type: InstanceIDAPNSTokenType.sandbox) 

In 2nd

application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) 

with Firebase imported.

What should I do?

EDIT: This is a supplemental information, the error message is like this. Failed to fetch default token Error Domain=com.firebase.iid Code=1003 "(null)" I googled, but there is no relavant information.

</div
           
 
 

回答リスト

6
 
vote
vote
ベストアンサー
 

だからあなたは親密です。 Cloud MessagingのFirebase 4.0バージョンで今起こることは次のとおりです...

  1. application.registerForRemoteNotifications() を呼び出すと、OL 'iosアプリのようにAPNS証明書を要求します。

  2. あなたが方法を急落させていないと仮定して(そしておそらくあなたがしていない)、Firebaseはそれ自身のSwizzledの didRegisterForRemoteNotificationsWithDeviceToken メソッドのFCMトークンのAPNSトークンを自動的に交換します。< / p>

  3. Exchangeが行われると、FireBaseはあなたのアプリを知らせることができます。これが行った唯一の方法は、Type kFIRMessagingRegistrationTokenRefreshNotification のnsNotificationを作成することによるものです。しかし最近では、 MessagingDelegate を通してお知らせください。だから最も簡単なことはあなたのAppDelegateを呼び出すことによってメッセージング代表を宣言することです...

    <事前> <コード> Messaging.messaging().delegate = self

    ...と messaging(_:didRefreshRegistrationToken) メソッドを実装します。

    <事前> <コード> func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) { print("Look! I have an FCM token! (fcmToken)") } 6
  4. だからTL; DRは、FCMトークンのAPNSトークンを手動で交換する必要がないので、FCMライブラリがあなたのためにこれを行うときに通知される代理人を設定する必要があるということです。

 

So you're close. Here's what happens right now in the Firebase 4.0 version of Cloud Messaging...

  1. When you call application.registerForRemoteNotifications(), iOS will request an APNs certificate, just like any ol' iOS app.

  2. Assuming you haven't turned method swizzling off (and you probably haven't), Firebase will automatically exchange that APNs token for an FCM token in its own swizzled didRegisterForRemoteNotificationsWithDeviceToken method.

  3. When that exchange is done, Firebase can let your app know. It used to be that the only way it did this was by creating an NSNotification of type kFIRMessagingRegistrationTokenRefreshNotification. But these days, it can also let you know through the MessagingDelegate. So the easiest thing to do is to declare your AppDelegate a messaging delegate by calling...

    Messaging.messaging().delegate = self 

    ...and then implementing the messaging(_:didRefreshRegistrationToken) method.

    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {   print("Look! I have an FCM token! (fcmToken)") } 

So the tl;dr is that you don't need to exchange the APNs token for an FCM token manually, you just need to set up your delegate to be notified when the FCM library does this for you.

</div
 
 
   
   

関連する質問

0  FCM Node.js Server Androidを発行します  ( Fcm node js server issue android ) 
私のアプリを介してFCMアップストリームメッセージを送信するための私はこのチュートリアル FireBase で通知を送信する 私の作業コードは以下のとおりです。 <事前> <コード> var firebase = require('firebase-admi...

6  Androidプッシュ通知をタップする上で外部ブラウザでURLを開く方法  ( How to open url in external browser on tap on android push notifications ) 
プッシュ通知をクリックすると、URLでブラウザを開こうとしていますが、StackOverFlowで検索し、このが見つかります。 <事前> <コード> Intent browserIntent = new Intent(Intent.ACTION_VIEW, U...

5  FCMカスタムサウンドはバックグラウンドモードでiOSで動作しない  ( Fcm custom sound not working on ios when in background mode ) 
最近FCMで何か変更しましたか?私たちのアプリはプッシュ通知でカスタムサウンドを使用します。これは、前景、背景、または閉じられたかどうかにかかわらず、AndroidとiOSの両方でうまく機能しています。しかし、最近、アプリが閉じているときやバックグラウンドモー...

2  FireBaseデータベースに新しい子が追加されたときに通知を送信する  ( Send notification when new child is added to firebase database ) 
私は私のアプリでFirebaseデータベースを使用しています、そして私はデータベースに新しい順序が追加されたときに管理者に通知を送信する必要があります "データベースに追加された新しい子" "。 私はFirebase Cloudメッセージングと呼ばれるものを見...

9  サービスワーカーイベントwaituntil()が 'typeError:bはnull'で拒否された約束を渡しました  ( Service worker event waituntil was passed a promise that rejected with typeer ) 
プッシュ通知を示すマイサービスワーカーファイルです。 <事前> <コード> importScripts('https://www.gstatic.com/firebasejs/3.5.0/firebase-app.js'); importScripts('ht...

0  アクションボタンでイオン4、FireBase-XおよびFCMプッシュ通知  ( Ionic 4 firebase x and fcm push notification with action buttons ) 
Firebase-Xネイティブプラグインを使用してFireBase Admin SDKを介して送信されたプッシュ通知にアクションボタンを追加しようとしています。私のアプリはAndroidとiOSで実行されています。 これは私の現在のスクリプトをプッシュ通知に...

0  DidreceivereMotenotificationはSWIFTと呼ばれていません  ( Didreceiveremotenotification not called swift ) 
バックグラウンドで受信していない通知を受け取っていないのはなぜですか??? プッシュ通知を扱うときの最初の経験です。私はドキュメントを読み、次のようなガイドから Google Firebase Doc 。また、 firebase / QuickStart-i...

7  FireBase Cloud Messaging用のサーバキーの基本64エンコード  ( Base64 encoding of server key for firebase cloud messaging ) 
私は3日からこの問題に立ち往生しており、Googleを検索しましたが、成功しません。私はプッシュ通知の例を押すと説明します。しかし、私はそれを実装しようとしているとき、私はこの厄介なエラーを得る。 <事前> <コード> Uncaught (in promise...

1  Nativescript HTTP FCM統合  ( Nativescript http fcm integration ) 
NativesScript FCMプラグインとHTTPを使用してFCMへのメッセージを送信するトラブルが発生しました.Cromes Arc Appを使用して成功しました。誰かが私を助けて、私が間違っていることを教えてください。 これがPOST機能です: ...

0  FireBase機能 - プッシュ通知  ( Firebase function push notification ) 
こんにちはこれは、Firebaseプッシュ通知を初めて操作しています。これが私のコードとエラーです、あらゆる助けが大いに感謝されています。 <事前> <コード> const functions = require('firebase-functions'); ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有