2011-07-29 31 views
6

Tengo problemas aquí: Tengo la aplicación configurada para que no se ejecute en segundo plano, y estoy estableciendo una notación local diariaInterval usando un complemento LocalNotification que encontré en github aquí : https://github.com/phonegap/phonegap-plugins/tree/master/iPhone/LocalNotificationPhoneGap/iOS LocalNotification App Se bloquea al tocar "Ver"

La aplicación se bloquea cuando aparece la notificación, y toco "Ver" ... parece que se está enviando algo y no sabe lo que está pasando. Yo, tampoco sé lo que está pasando, ya que Objective C es un idioma extranjero para mí. ¿Alguien tiene alguna idea?

--------- Console Log ---------- 

7/29/11 11:05:48 AM Las afirmaciones de la tarde [12004] - [UIConcreteLocalNotification absoluteString]: Selector no reconocido enviados a instancia 0x5c22240

7/29/11 11:05:48 AM Afternoon Affirmations[12004] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIConcreteLocalNotification absoluteString]: unrecognized selector sent to instance 0x5c22240' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x017f65a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x0194a313 objc_exception_throw + 44 
    2 CoreFoundation      0x017f80bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x01767966 ___forwarding___ + 966 
    4 CoreFoundation      0x01767522 _CF_forwarding_prep_0 + 50 
    5 Afternoon Affirmations    0x00002f21 -[AppDelegate application:didFinishLaunchingWithOptions:] + 257 
    6 UIKit        0x002f7c89 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163 
    7 UIKit        0x002f9d88 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439 
    8 UIKit        0x00304617 -[UIApplication handleEvent:withNewEvent:] + 1533 
    9 UIKit        0x002fcabf -[UIApplication sendEvent:] + 71 
    10 UIKit        0x00301f2e _UIApplicationHandleEvent + 7576 
    11 GraphicsServices     0x020e5992 PurpleEventCallback + 1550 
    12 CoreFoundation      0x017d7944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    13 CoreFoundation      0x01737cf7 __CFRunLoopDoSource1 + 215 
    14 CoreFoundation      0x01734f83 __CFRunLoopRun + 979 
    15 CoreFoundation      0x01734840 CFRunLoopRunSpecific + 208 
    16 CoreFoundation      0x01734761 CFRunLoopRunInMode + 97 
    17 UIKit        0x002f97d2 -[UIApplication _run] + 623 
    18 UIKit        0x00305c93 UIApplicationMain + 1160 
    19 Afternoon Affirmations    0x00002d7f main + 127 
    20 Afternoon Affirmations    0x00002cf5 start + 53 
) 

7/29/11 11:05:48 AM UIKitApplication:com.InTheRooms.AfternoonAffirmations[0x9a52][12004] terminate called after throwing an instance of 'NSException' 
+0

1, que tienen el mismo problema. ¿Encontraste una solución? – Samuel

+0

No se bloquea cuando configuro la aplicación para que se ejecute en segundo plano (la aplicación no se ejecuta en background = NO). Pero todavía está bloqueando con esta propiedad si la aplicación ya no está en la memoria: -/ – Samuel

+0

@SamuelMichelot Tengo problemas para que funcione este plugin (sin bloqueos, sin notificaciones). Tal vez lo estoy configurando bien. ¿Podrías ayudarme? – xdumaine

Respuesta

3

OK, he encontrado el problema, es en el archivo AppDelegate.m y más precisamente en el método: didFinishLaunchingWithOptions. El método supone que los primeros parámetros de opción es una URL (pero no lo es cuando se inicie la aplicación, mediante una notificación local La solución rápida y sucia es comentar el código:.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    //commented out because it makes the app crash at startup with local notification... 
    /*NSArray *keyArray = [launchOptions allKeys]; 
    if ([launchOptions objectForKey:[keyArray objectAtIndex:0]]!=nil) 
    { 
     NSURL *url = [launchOptions objectForKey:[keyArray objectAtIndex:0]]; 
     self.invokeString = [url absoluteString]; 
     NSLog(@"Mosa_fr_en-busi launchOptions = %@",url); 
    }*/ 

    return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
} 
0

Un poco mejor solución es algo como esto:..

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSArray *keyArray = [launchOptions allKeys]; 
    if ([keyArray count] > 0) { 
     id option = [launchOptions objectForKey:[keyArray objectAtIndex:0]]; 
     if ([option isKindOfClass:[NSURL class]]) { 
      NSURL *url = (NSURL *)option; 
      self.invokeString = [url absoluteString]; 
      NSLog(@"ContactInbox launchOptions = %@",url); 
     } 
    } 

    return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
} 

Si alguien sabe qué clave PhoneGap espera tener para el URL que es mejor sustituir [keyArray objectAtIndex:0] parte con llave real

0

tuve un problema similar con las notificaciones locales La solución que he elegido es un poco diferente alquiler (aunque bastante similar). Estoy usando un cheque para una opción de inicio de notificación local (UIApplicationLaunchOptionsLocalNotificationKey).

Aquí es un breve ejemplo:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 

    if(localNotif) 
    { 
     // Do whatever you need to do with that local notitication 
    } 
    else 
    { 
     NSArray *keyArray = [launchOptions allKeys]; 
     if ([launchOptions objectForKey:[keyArray objectAtIndex:0]]!=nil) 
     { 
      NSURL *url = [launchOptions objectForKey:[keyArray objectAtIndex:0]]; 
      self.invokeString = [url absoluteString]; 
     } 
    } 
    return [super application:application didFinishLaunchingWithOptions:launchOptions]; 
} 

de Apple Docs: http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html

Cuestiones relacionadas