web-dev-qa-db-ja.com

FCMトピック-トピック:トークン付きのxxxにサブスクライブできません:(null)-iOS

Firebase Messaging APIからこのエラーが発生しています:

[Firebase/Messaging][I-FCM002010] Cannot subscribe to topic: /topics/testTopic with token: (null)

しかし、前:

Messaging.messaging().subscribe(toTopic: "/topics/testTopic")

私はこのようなトークンを印刷しています:

print("TOKEN: \(InstanceID.instanceID().token() ?? "NO TOKEN")")

結果は次のとおりです。

TOKEN:cXPhGQ_inE4:APA91bEKZF5depHmIm9gDliCFRCRcnJf5LYy5FMg6nhpWvKU3o3HEtr1WTBHUiCZXT4XzhVg2oqXzhtfrgf83brtLdqXii546644ciMPO80tri4JPueQBClKbaomEfoh54ku8E2lw

そのため、トークンはnullではありません。

私は何か間違っていますか?誰か助けて?

26
anitteb

問題は、didFinishLaunchingWithOptionsでサブスクライブしたかったということでしたが、その時点ですべてのサービスがセットアップされたわけではありませんでした。 解決策はデリゲートdidRegisterUserNotificationSettingsにサブスクライブすることです。

5
anitteb

MessagingDelegateで試してください:

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    Messaging.messaging().subscribe(toTopic: "/topics/testTopic")
}
3
dr OX

同様の問題がありました。解決策は、最初にFirebaseApp.configure()を呼び出すことでした:

FirebaseApp.configure()
Messaging.messaging().delegate = self

の代わりに:

Messaging.messaging().delegate = self // this brakes FCM
FirebaseApp.configure()
1
kam800

この問題を解決するための最も理想的な場所は、MessagingDelegateのメソッドdidRefreshRegistrationTokenです。

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
   // TODO: subscribe to topics here
}
0
Scott D