Obtener el token del dispositivo para notificaciones push

Estoy trabajando en notificaciones push. Escribí el siguiente código para buscar un token de dispositivo.

- (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); } 

Puedo ejecutar la aplicación en el dispositivo con éxito pero no puedo obtener la identificación del dispositivo en la consola.

No tengo problemas con los perfiles de certificación y suministro.

Debes usar el siguiente código para obtener el token del dispositivo:

C objective

 - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]]; token = [token stringByReplacingOccurrencesOfString:@" " withString:@""]; NSLog(@"content---%@", token); } 

Swift 3.0

 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let tokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}) // kDeviceToken=tokenString print("deviceToken: \(tokenString)") } 

Para obtener el dispositivo Token, puede hacerlo mediante algunos pasos :

1) Habilite APNS (Servicio de notificación push de Apple) para Certificación de desarrollador y Certificación de distribución, luego vuelva a descargar esos dos archivos.

2) Vuelva a descargar el archivo de aprovisionamiento de desarrollador y distribuya el aprovisionamiento.

3) En la interfaz de Xcode: se ha descargado el aprovisionamiento de configuraciones para PROJECT y TARGETS con dos aprovisionamientos de archivos.

4) Finalmente, debe agregar el código siguiente en el archivo AppDelegate para obtener el Dispositivo Token (nota: ejecutar la aplicación en un dispositivo real).

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [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(@"%@", str); } - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { NSString *str = [NSString stringWithFormat: @"Error: %@", err]; NSLog(@"%@",str); } 

El siguiente código se usa para recuperar el token del dispositivo.

  // Prepare the Device Token for Registration (remove spaces and < >) NSString *devToken = [[[[deviceToken description] stringByReplacingOccurrencesOfString:@"<"withString:@""] stringByReplacingOccurrencesOfString:@">" withString:@""] stringByReplacingOccurrencesOfString: @" " withString: @""]; NSString *str = [NSString stringWithFormat:@"Device Token=%@",devToken]; UIAlertView *alertCtr = [[[UIAlertView alloc] initWithTitle:@"Token is " message:devToken delegate:self cancelButtonTitle:nil otherButtonTitles: nil] autorelease]; [alertCtr show]; NSLog(@"device token - %@",str); 

Y la versión Swift de la respuesta de Wasif:

Swift 2.x

 var token = deviceToken.description.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")) token = token.stringByReplacingOccurrencesOfString(" ", withString: "") print("Token is \(token)") 

Actualización para Swift 3

 let deviceTokenString = deviceToken.map { String(format: "%02.2hhx", $0) }.joined() 

Si aún no obtienes el token del dispositivo, intenta poner el siguiente código para registrar tu dispositivo y enviar notificaciones.

También funcionará en ios8 o más.

 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 if ([UIApplication respondsToSelector:@selector(registerUserNotificationSettings:)]) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeAlert|UIUserNotificationTypeSound categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; } #else [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; #endif 

En su Appdelegate, en el método didRegisterForRemoteNotificationsWithDeviceToken :

 NSString *deviceTokenString = deviceToken.description; deviceTokenString = [deviceTokenString stringByReplacingOccurrencesOfString:@"[< >]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, deviceTokenString.length)]; NSLog(deviceTokenString.description); 

En una configuración de comstackción, establezca el perfil de provisión de firmas de código si tiene el certificado APN Habilitar, entonces definitivamente obtendrá la Id. De token. y eliminar

Perfil de provisión: Automático

y listo para

Perfil de provisión: su certificado de perfil de provisión.

Obtener el token del dispositivo en Swift 3

 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}) print("Device token: \(deviceTokenString)") } 

Obtener token de dispositivo en swift 3

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = String(format: "%@", deviceToken as CVarArg).trimmingCharacters(in: CharacterSet(charactersIn: "<>")).replacingOccurrences(of: " ", with: "") print(token) } 

Para obtener el token del dispositivo, use el siguiente código, pero puede obtener el token del dispositivo solo con un dispositivo físico. Si tiene que enviar obligatoriamente el token del dispositivo, al usar el simulador puede poner la siguiente condición.

  if(!(TARGET_IPHONE_SIMULATOR)) { [infoDict setValue:[[NSUserDefaults standardUserDefaults] valueForKey:@"DeviceToken"] forKey:@"device_id"]; } else { [infoDict setValue:@"e79c2b66222a956ce04625b22e3cad3a63e91f34b1a21213a458fadb2b459385" forKey:@"device_id"]; } - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { NSLog(@"My token is: %@", deviceToken); NSString * deviceTokenString = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]; NSLog(@"the generated device token string is : %@",deviceTokenString); [[NSUserDefaults standardUserDefaults] setObject:deviceTokenString forKey:@"DeviceToken"]; } 
    Intereting Posts