2011-12-15 7 views
8

Jestem osadzony w środowisku (Adobe AIR), w którym nie mogę przesłonić didFinishLaunchingWithOptions. Czy istnieje inny sposób uzyskania tych opcji? Czy są one gdzieś przechowywane w jakiejś zmiennej globalnej? Lub czy ktoś wie, jak uzyskać te opcje w środowisku AIR?Uzyskaj opcje uruchamiania bez przesłonięcia. Nie FinishLaunchingWithOptions:

Potrzebuję tego dla usługi powiadamiania Apple Push (APNS).

+0

za szczęście Chon? – Sanniv

+0

Przypuszczam, że powinieneś się temu przyjrzeć, kiedyś będę miał czas: http://www.tinytimgames.com/2011/09/01/unity-plugins-and-uiapplicationdidfinishlaunchingnotifcation/ – Michiel

+0

Powinienem dodać, że musisz zrobić ANE (AIR Native Extension), aby to działało. http://www.adobe.com/devnet/air/native-extensions-for-air.html – Michiel

Odpowiedz

11

Podążając ścieżką w łączu Michiel (http://www.tinytimgames.com/2011/09/01/unity-plugins-and-uiapplicationdidfinishlaunchingnotifcation/), możesz utworzyć klasę, która metoda init dodaje obserwatora do klucza UIApplicationDidFinishLaunchingNotification. Gdy wykonywana jest metoda obserwatora, opcje launchOptions będą zawarte w userInfo powiadomienia. Robiłem to z lokalnych powiadomień więc to było wdrożenie mojej klasy:

static BOOL _launchedWithNotification = NO; 
static UILocalNotification *_localNotification = nil; 

@implementation NotificationChecker 

+ (void)load 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(createNotificationChecker:) 
       name:@"UIApplicationDidFinishLaunchingNotification" object:nil]; 

} 

+ (void)createNotificationChecker:(NSNotification *)notification 
{ 
    NSDictionary *launchOptions = [notification userInfo] ; 

    // This code will be called immediately after application:didFinishLaunchingWithOptions:.  
    UILocalNotification *localNotification = [launchOptions objectForKey: @"UIApplicationLaunchOptionsLocalNotificationKey"]; 
    if (localNotification) 
    { 
     _launchedWithNotification = YES; 
     _localNotification = localNotification; 
    } 
    else 
    { 
     _launchedWithNotification = NO; 
    } 
} 

+(BOOL) applicationWasLaunchedWithNotification 
{ 
    return _launchedWithNotification; 
} 

+(UILocalNotification*) getLocalNotification 
{ 
    return _localNotification; 
} 

@end 

Potem, kiedy mój kontekst Rozszerzenie jest inicjowany sprawdzić klasę NotificationChecker aby sprawdzić, czy aplikacja została uruchomiona z powiadomienia.

BOOL appLaunchedWithNotification = [NotificationChecker applicationWasLaunchedWithNotification]; 
if(appLaunchedWithNotification) 
{ 
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0; 

    UILocalNotification *notification = [NotificationChecker getLocalNotification]; 
    NSString *type = [notification.userInfo objectForKey:@"type"]; 

    FREDispatchStatusEventAsync(context, (uint8_t*)[@"notificationSelected" UTF8String], (uint8_t*)[type UTF8String]); 
} 

Mam nadzieję, że komuś pomóż!

+1

W końcu udało mi się to zrobić sam i potwierdzam, że działa to jak czar. – Michiel

+0

Świetny kod !! Dzięki stosy za tę małą wskazówkę !! – Michael

+0

'[notification userInfo]' to pusty słownik dla mnie = ['count == 0' – grisevg