Get device token for push notification

Я работаю над push-уведомлениями. Я написал следующий код для получения токена устройства.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Override point for customization after application launch.

    // Add the view controller's view to the window and display.
    [self.window addSubview:viewController.view];
    [self.window makeKeyAndVisible];

    NSLog(@"Registering for push notifications...");    
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    return YES;
}

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
    NSLog(@"This is device token%@", deviceToken);
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 
    NSString *str = [NSString stringWithFormat: @"Error: %@", err];
    NSLog(@"Error %@",err);    
}

Я могу успешно запустить приложение на устройстве, но не могу получить идентификатор устройства на консоли.

У меня нет проблем с сертификацией и профилями инициализации.

72
задан klefevre 21 April 2015 в 08:17
поделиться

2 ответа

Используя description, поскольку предлагают многие из этих ответов, неправильный подход - даже если Вы заставите его работать, то он прервет iOS 13 +.

Вместо этого необходимо удостовериться, чтобы Вы использовали фактические двоичные данные, не просто описание его. Andrey Gagan обратился к решению для Objective C вполне хорошо, но к счастью это намного более просто в быстро:

Swift 4.2 работает в iOS 13 +

// credit to NSHipster (see link above)
// format specifier produces a zero-padded, 2-digit hexadecimal representation
let deviceTokenString = deviceToken.map { String(format: "%02x", [110]) }.joined()
3
ответ дан 24 November 2019 в 12:33
поделиться

Objective C для iOS 13 + , любезность ответа Wasif Saood

Копия и вставка ниже кода в AppDelegate.m для печати устройства маркер APN.

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  NSUInteger dataLength = deviceToken.length;
  if (dataLength == 0) {
    return;
  }
  const unsigned char *dataBuffer = (const unsigned char *)deviceToken.bytes;
  NSMutableString *hexString  = [NSMutableString stringWithCapacity:(dataLength * 2)];
  for (int i = 0; i < dataLength; ++i) {
    [hexString appendFormat:@"%02x", dataBuffer[i]];
  }
  NSLog(@"APN token:%@", hexString);
}
2
ответ дан 24 November 2019 в 12:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: