コンソールからAmazon sns
にプラットフォームエンドポイントを作成しようとしています。以下は、FCM/APNs
から受け取ったデバイストークンです。
fUG5dIcN_pA:APA91bEciRwWuvTIezAKcJ5y1xz5z6BygE3YJkywdCGCFJD93NTfjARwPRommwgsfvVo2iH_qZWT7D2Lxnc69uanato1UUq-nLl5R1L0qF4exT7zjM9Wdy9Evs6h-EOBtIVv7Vv8bPE1
エラーが発生します:iOSデバイストークンは400桁以下の16進文字である必要があります。APNが文字列形式でトークンを送信し、Amazonが16進文字でトークンを送信しているようです。
didRegisterForRemoteNotificationsWithDeviceToken
で以下のコードを試してください。
let deviceToken = deviceToken.map {String(format:"%02.2hhx",$0)}.joined()
print(deviceToken)
そして、AmazonSNSコンソールにデバイストークンを貼り付けます。これで機能します。
Objective-cの場合、これを使用できます。
NSString * deviceTokenString = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"The generated device token string is : %@",deviceTokenString);
iOS 13の後にこのエラーが発生しました。 iOS 13以降、アプリデリゲートを介して提供されるトークンが変更され、iOS 13のデリゲートコードが更新されない場合、無効なトークンが送信されます。
更新方法の例については、このスタックオーバーフローリンクを確認してください ここ 。