Amazon SNS ios设备令牌长度

时间:2014-01-03 22:23:10

标签: ios apple-push-notifications amazon-sns

我有一个iPhone应用程序我正在努力并试图让Amazon SNS设置为测试PNS。当我们向APNS注册应用程序时,它会提供一个32位的设备令牌(873DBDDA-17CF-4A24-88C6-990B90AFC4C3)。使用Amazon SNS注册设备时,它表示设备令牌必须为64位长。我在这里缺少什么?

3 个答案:

答案 0 :(得分:10)

你是如何得到那个令牌的?它看起来不像正确的APNS设备令牌。真实的将是 64个十六进制数字。这是我使用的代码:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *tokenstring = [[[deviceToken description]
                              stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
                             stringByReplacingOccurrencesOfString:@" " withString:@""];

    // pass tokenstring to your APNS server
}

我从该方法中获得的令牌如下所示:

 8ec3bba7de23cda5e8a2726c081be79204faede67529e617b625c984d61cf5c1

答案 1 :(得分:0)

这是一个古老的问题,但我一直在寻找令牌的问题,而这个未得到回答的问题就出现了。这是我使用的 - AWS v2。

在问题erik-aigner

7520615的帮助
- (void)awsStartWithDeviceToken:(NSData *)deviceToken {

    // Get a hex string for the NSData deviceToken
    // https://stackoverflow.com/questions/7520615/how-to-convert-an-nsdata-into-an-nsstring-hex-string
    NSUInteger dataLength = [deviceToken length];
    NSMutableString *deviceTokenString = [NSMutableString stringWithCapacity:dataLength*2];
    const unsigned char *dataBytes = [deviceToken bytes];
    for (NSInteger idx = 0; idx < dataLength; ++idx) {
        [deviceTokenString appendFormat:@"%02x", dataBytes[idx]];
    }
    _savedDeviceTokenFormatted = deviceTokenString;
}

答案 2 :(得分:0)

转换为十六进制字符串的Swift扩展

extension Data {

    /// Return hexadecimal string representation of Data bytes
    public var hexadecimalString: String {
        var bytes = [UInt8](repeating: 0, count: count)
        copyBytes(to: &bytes, count: count)

        let hexString = NSMutableString()
        for byte in bytes {
            hexString.appendFormat("%02x", UInt(byte))
        }

        return String(hexString)
    }
}