Я работаю над 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);
}
Я могу успешно запустить приложение на устройстве, но не могу получить идентификатор устройства на консоли.
У меня нет проблем с сертификацией и профилями инициализации.
Используя 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()
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);
}