##今回の仕様
アプリ側でトークンを取得してからDBに登録してその登録されたトークン宛にPUSH通知を送信しています。
下記コードのタイミングです。
InstanceID.instanceID().instanceID { (result, error) in
if let error = error {
print("Error fetching remote instance ID: \(error)")
} else if let result = result {
print("Remote instance ID token: \(result.token)")
// FCMトークンを更新する
registFCMToken(fcmToken: result.token)
}
}
#ど゛う゛し゛て゛と゛ど゛か゛な゛い゛ん゛だ゛よ゛お゛お゛お゛お゛お゛
FCMでiOS端末にPUSH通知を送信しようとした時にサーバー側でこんなエラーが・・・
The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.
様々なって何!?
前まで送信出来ていたのにおかしい!
少しググってみたら再インストールとかが要因らしい。
##解決策
AppDelegateにこいつを追加してあげる。
重要なのはここ
Messaging.messaging().apnsToken = deviceToken
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print("device token regiter OK")
// XXX: 再インストール時になぜかこれがないとPUSH通知がこないのでとりあえず書いておく。
Messaging.messaging().apnsToken = deviceToken
}
コメントにある通りなんでこれで直るのかもよくわかってないです。
これでアプリを再インストールするとちゃんと届くようになりました。
うーん、PUSH通知は苦手!