参数无效:令牌原因:iOS设备令牌不得超过400个十六进制字符

时间:2017-12-15 04:36:59

标签: java ios spring-boot amazon-sns

我正在尝试从控制台创建amazon sns中的平台端点。 以下是我从FCM/APNs收到的设备令牌:

fUG5dIcN_pA:APA91bEciRwWuvTIezAKcJ5y1xz5z6BygE3YJkywdCGCFJD93NTfjARwPRommwgsfvVo2iH_qZWT7D2Lxnc69uanato1UUq-nLl5R1L0qF4exT7zjM9Wdy9Evs6h-EOBtIVv7Vv8bPE1

我收到错误: iOS设备令牌必须不超过400个十六进制字符。看起来像APNs已经以字符串格式发送令牌而亚马逊正在期待它以十六进制字符表示。

3 个答案:

答案 0 :(得分:3)

didRegisterForRemoteNotificationsWithDeviceToken中尝试以下代码:

let deviceToken = deviceToken.map {String(format:"%02.2hhx",$0)}.joined()
print(deviceToken)

然后将设备令牌粘贴到Amazon SNS控制台中,它将起作用。

答案 1 :(得分:1)

对于Objective-C,您可以使用以下方法:

NSString * deviceTokenString = [[[[deviceToken description]
                         stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                        stringByReplacingOccurrencesOfString: @">" withString: @""] 
                       stringByReplacingOccurrencesOfString: @" " withString: @""];

NSLog(@"The generated device token string is : %@",deviceTokenString);

答案 2 :(得分:0)

我在iOS 13之后遇到此错误。从iOS 13开始,通过应用程序委托提供的令牌已更改,如果未为iOS 13更新委托代码,则会发送无效令牌。

检查此堆栈溢出链接here,获取有关如何更新的示例。