2011-02-14 16 views
10

Estoy trabajando con notificaciones push en una aplicación navBased. en AppDelegate.m didRegisterForRemoteNotificationsWithDeviceToken: no invoque en llamar registerForRemoteNotificationTypes: código es el siguiente:didRegisterForRemoteNotificationsWithDeviceToken: no invoca al llamar a registerForRemoteNotificationTypes :?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

    [self.window addSubview:navigationController.view]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 



- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    // Get a hex string from the device token with no spaces or < > 
    NSLog(@"applicationDidFinishLaunchingWithOptions dev token test"); 

    NSString *deviceTokenStr = [[[[deviceToken description] 
          stringByReplacingOccurrencesOfString: @"<" withString: @""] 
         stringByReplacingOccurrencesOfString: @">" withString: @""] 
         stringByReplacingOccurrencesOfString: @" " withString: @""]; 

    NSLog(@"Device Token: %@", deviceTokenStr); 
} 

Estoy seguro de que el aprovisionamiento de perfil no es el problema. y encontré el error:

Error en el registro. Error: dominio de error = NSCocoaErrorDomain Code = 3000 "no se encontró una cadena de autorización 'aps-environment' válida para la aplicación" UserInfo = 0x115490 {NSLocalizedDescription = cadena de autorización 'aps-environment' válida no encontrada para la aplicación}

alguien puede decirme ¿Qué está pasando en este código y que no está funcionando? thanx

+0

lo siento, pero ¿cómo puedo marcar mi código como código de muestra? soy nuevo en stackoverflow. – Piscean

+1

¿recibe ese error a través de la aplicación: didFailToRegisterForRemoteNotificationsWithError:? – Max

Respuesta

3

Compruebe esto: link Y asegúrese de que tiene 5223 puerto abierto.

+0

el enlace ya no funciona :( – kolinko

+0

@Merlin desafortunadamente no recuerdo lo que estaba allí, pero lo principal es comprobar el puerto de entrada. – Max

+0

@Merlin está trabajando a mi lado. Acabo de abrirlo :) – Piscean

3

Tuve ese error exacto previamente "" "" no se encontró una cadena de autorización 'aps-environment' válida para la aplicación "" "".

Para resolverlo, necesita un perfil de firma de código específico con la id. De aplicación correcta para que APNS funcione (es decir, no un perfil *). Google alrededor, probablemente pueda encontrar algunas guías paso a paso sobre cómo resolverlo correctamente.

Si continúa apareciendo ese error en el registro, intente eliminar el perfil en sus dispositivos iOS en> Configuración> General> Perfiles y vuelva a examinarlos en el organizador.

7

Introduce este código en el método didFinishLaunching AppDelegate esto -

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

y luego simplemente también copiar y pegar estos dos métodos en la misma AppDelegate -

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


    NSLog(@"STR%@",dToken); 


- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error 
{ 

    NSLog(@"Failed to get token, error: %@", error); 
} 
3

abre el perfil del mobileprovisioning que utiliza para su aplicación y busque la cadena "aps-environment" allí. Debe establecerse en "desarrollo" o "producción".

El error que recibe significa que no tiene esta cadena en el perfil, por lo tanto, la aplicación simplemente no puede registrar notificaciones push. Esto sucederá si ha creado el perfil antes de configurar las notificaciones push para la ID de la aplicación.

Si no ve la cadena, recree (elimine/cree) el perfil de aprovisionamiento móvil en el Portal para desarrolladores de iOS. eso resolverá el problema.

También asegúrese de que cuando envíe a AppStore también recree el perfil AppStore de aprovisionamiento para su aplicación. Debe contener la misma cadena "aps-environment" Y no está allí por defecto si creó el perfil de aprovisionamiento de AppStore antes de configurar las notificaciones push para su ID de APP.

+0

Ese fue mi problema, he creado el perfil de aprovisionamiento ANTES de haber activado las notificaciones push. Solución: eliminó ese perfil y creó otro, ¡funcionó !. Muchas gracias. –

0

Después de haber generado su certificado SSL de cliente, cree un nuevo perfil de aprovisionamiento que contenga la ID de aplicación que desea usar para las notificaciones.

Cuestiones relacionadas