У меня есть приложение для iPhone, над которым я работаю и пытаюсь настроить Amazon SNS для тестирования PNS. Когда мы регистрируем приложение в APNS, оно дает 32-значный токен устройства (873DBDDA-17CF-4A24-88C6-990B90AFC4C3). При регистрации устройства в Amazon SNS указывается, что токен устройства должен иметь длину 64 цифры. Что мне здесь не хватает?
Длина токена устройства Amazon SNS ios
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
Согласен, я получаю токены pns с 64 цифрами, а не с 32
- person Rob Bowman; 12.05.2014
Это 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