Длина токена устройства Amazon SNS ios

У меня есть приложение для iPhone, над которым я работаю и пытаюсь настроить Amazon SNS для тестирования PNS. Когда мы регистрируем приложение в APNS, оно дает 32-значный токен устройства (873DBDDA-17CF-4A24-88C6-990B90AFC4C3). При регистрации устройства в Amazon SNS указывается, что токен устройства должен иметь длину 64 цифры. Что мне здесь не хватает?


person Brad Herman    schedule 03.01.2014    source источник
comment
Это идентификатор устройства, а не токен устройства. Для Amazon SNS необходимо отправить токен устройства, чтобы он идентифицировал и устройство, и приложение.   -  person brocksamson    schedule 10.03.2015
comment
@brocksamson Правильно сказал   -  person Rakesh patanga    schedule 26.03.2015


Ответы (3)


Как вы получили этот жетон? Это не похоже на правильный токен устройства 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
person jsd    schedule 03.01.2014
comment
Согласен, я получаю токены pns с 64 цифрами, а не с 32 - person Rob Bowman; 12.05.2014
comment
Это 64 символа в виде шестнадцатеричной строки, но документация может запутать вас, так как относится к двоичной форме Device token - 32 bytes- The device token in binary form, as was registered by the device. - person KCD; 20.10.2015

Это старый вопрос, но я искал проблему с токенами, и возник этот вопрос без ответа. Вот что я использую — 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;
}
person Kent    schedule 02.01.2015

Расширение 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)
    }
}
person Duncan Groenewald    schedule 16.09.2016