2014-04-04 17 views
7

La mia app è in grado di registrare con successo per le notifiche push, ma vorrei spostare l'avviso pop-up in una zona diversa della appPosso registrare notifiche push all'esterno di AppDelegate.m?

Se a implementare lo stesso codice da AppDelegate.m a una schermata diversa, Other.m, di la mia app, non è mai registra:

-(void)buttonTapped { 
    // Register for Push Notifications 
    UIRemoteNotificationType notifyTypes = (UIRemoteNotificationTypeAlert |      UIRemoteNotificationTypeSound | 
UIRemoteNotificationTypeBadge); 

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:notifyTypes]; 
} 


#pragma mark - APNS Functions 
-(void)application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken { 
    NSLog(@"didRegisterForRemoteNotifications - 1"); 
} 


-(void)application:application didFailToRegisterForRemoteNotificationsWithError:error { 
    NSLog(@"didFailToRegisterForRemoteNotifications"); 
} 

Se abilito didRegisterForRemoteNotificationsWithDeviceToken nel mio AppDelegate.m, il AppDelegate.m istanza del metodo viene chiamato dal mio Other.m, ma che non è così che voglio far funzionare tutto questo.

Qualsiasi idea o suggerimento sarebbe gradita.

risposta

13

Sì, certo.

È possibile registrare dove si vuole con l'utilizzo di

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

ma didRegisterForRemoteNotificationsWithDeviceToken: deviceToken è disponibile solo in AppDelegate

+0

esiste un modo per Other.m per sapere se la registrazione ha esito positivo o non riesce? – Chris

+0

È possibile utilizzare NSNotificationCenter per attivare il registro di remotenotifica in caso di esito positivo o negativo in qualsiasi ViewController – Erhan

+0

Questo deve essere fatto sulla coda principale? – sudo

0
-(void)application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken 

questo è il metodo di protocollo del protocollo UIApplicationDelegate, quindi sarà attivato su [UIApplication sharedApplication] .delegate. Questo è l'AppDelegate per impostazione predefinita.

0

La risposta accettata è stata sconsigliata in iOS 8.0. Il seguente codice Swift funziona per iOS 9.0:

let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories: nil) 
UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)