2014-10-28 14 views
7

Im stosując następujące linie kodu dla uzyskania tokenu do powiadomienia pushReklamowe Dla pushnotification systemów iOS 8 vs ios7 PhoneGap

Dodałem kolejne wiersze dla obsługiwane systemów iOS 8, ale kiedy linie te są dodawane IPA prace systemów iOS 8, ale nie na ios7 na ios7 aplikacja jest zamykana natychmiast po jej otwarciu.

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

#ifdef __IPHONE_8_0 
    //Right, that is the point 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge 
                         |UIRemoteNotificationTypeSound 
                         |UIRemoteNotificationTypeAlert) categories:nil]; 
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 
#else 
    //register to receive notifications 
    UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes]; 
#endif 

#ifdef __IPHONE_8_0 
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings 
{ 
    //register to receive notifications 
    [application registerForRemoteNotifications]; 
} 

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler 
{ 
    //handle the actions 
    if ([identifier isEqualToString:@"declineAction"]){ 
    } 
    else if ([identifier isEqualToString:@"answerAction"]){ 
    } 
} 
#endif 
+0

Jaki wyjątek pojawia się podczas uruchamiania aplikacji na iOS 7? – ebi

+0

registerUserNotificationSettings:]: nierozpoznany selektor wysłany do instancji 0x16d71c60 2014-10-31 12: 56: 00.899 ClickMobileCDV [1875: 60b] *** Kończenie aplikacji z powodu nieprzechwyconego wyjątku "NSInvalidArgumentException", powód: "- [UIApplication registerUserNotificationSettings:] : nierozpoznany selektor wysłany do instancji 0x16d71c60 ' *** Stos wywoływania pierwszego rzutu: –

Odpowiedz

7

Rozwiązanie:

#ifdef __IPHONE_8_0 
    if(NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) { 
     UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert) categories:nil]; 
     [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 
    } 
#else 
    //register to receive notifications 
    UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes]; 
#endif 
+1

#ifdef jest dyrektywą pre-procesora. Czy możesz przesłać plik binarny do App Store i będzie działać zarówno na iOS7, jak i iOS8? – mikebz

10

Od IO8, registerForRemoteNotificationTypes została zaniechana. rgisterUserNotificationSettings: z rejestremForRemoteNotifications.

Testowanie funkcji Wether lub nie registerUserNotificationSettings: Interfejs API jest dostępny w środowisku wykonawczym, co oznacza, że ​​działa on w systemie iOS8.

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { 
     UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
     [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 
     [[UIApplication sharedApplication] registerForRemoteNotifications]; 
    } else { 
     [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 
    } 
+1

To powinna być zaakceptowana odpowiedź. – kgiannakakis

+0

Idealne rozwiązanie! –

Powiązane problemy