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ではありません。
私は何か間違っていますか?誰か助けて?
問題は、didFinishLaunchingWithOptions
でサブスクライブしたかったということでしたが、その時点ですべてのサービスがセットアップされたわけではありませんでした。 解決策はデリゲートdidRegisterUserNotificationSettings
にサブスクライブすることです。
MessagingDelegateで試してください:
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
Messaging.messaging().subscribe(toTopic: "/topics/testTopic")
}
同様の問題がありました。解決策は、最初にFirebaseApp.configure()
を呼び出すことでした:
FirebaseApp.configure()
Messaging.messaging().delegate = self
の代わりに:
Messaging.messaging().delegate = self // this brakes FCM
FirebaseApp.configure()
この問題を解決するための最も理想的な場所は、MessagingDelegateのメソッドdidRefreshRegistrationTokenです。
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
// TODO: subscribe to topics here
}