Как я могу преобразовать мой токен устройства (NSData) в строку NSString? - PullRequest
139 голосов
/ 21 февраля 2012

Я внедряю push-уведомления.Я хотел бы сохранить свой токен APNS в виде строки.

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken
{
    NSString *tokenString = [NSString stringWithUTF8String:[newDeviceToken bytes]]; //[[NSString alloc]initWithData:newDeviceToken encoding:NSUTF8StringEncoding];
    NSLog(@"%@", tokenString);
    NSLog(@"%@", newDeviceToken);
}

Первая строка кода печатает ноль.вторая печатает токен.Как я могу получить свой newDeviceToken как NSString?

Ответы [ 24 ]

0 голосов
/ 07 ноября 2014
NSString *tokenString = [[newDeviceToken description] stringByReplacingOccurrencesOfString:@"[<> ]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [[newDeviceToken description] length])];
0 голосов
/ 21 февраля 2012

Попробуйте это, если данные не заканчиваются нулем.

NSString* newStr = [[NSString alloc] initWithData:newDeviceToken encoding:NSUTF8StringEncoding];

0 голосов
/ 11 апреля 2019

Вот как вы это делаете в Xamarin.iOS

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
    var tokenStringBase64 = deviceToken.GetBase64EncodedString(NSDataBase64EncodingOptions.None);
    //now you can store it for later use in local storage
}
0 голосов
/ 31 июля 2015

Свифт:

let tokenString = deviceToken.description.stringByReplacingOccurrencesOfString("[ <>]", withString: "", options: .RegularExpressionSearch, range: nil)
...