2016-02-22 14 views
5

Ho aggiunto una notifica locale, quindi quando la mia app riceve una spinta mentre si apre c'è ancora un popup e un suono. Sta funzionando bene su Android, ma su iOS la notifica locale non appare affatto.nome in codice una notifica locale non funzionante su ios

Le notifiche push funzionano correttamente su entrambe le piattaforme.

Questo è il mio codice nel callback spinta che dovrebbe innescare la notifica (se l'applicazione è aperta):

if(Display.getInstance().getCurrent() != null) { 
    LocalNotification n = new LocalNotification(); 
    n.setId(value); 
    n.setAlertBody(value); 
    n.setAlertTitle({app name}); 
    n.setBadgeNumber(1); 
    Display.getInstance().scheduleLocalNotification(n, System.currentTimeMillis() + 1000, LocalNotification.REPEAT_NONE); 
} 

risposta

3

notifiche locali non sparare mentre l'app è aperta in primo piano. Dovresti utilizzare un meccanismo diverso per emettere un suono mentre l'app è in esecuzione. Es. Display.vibrate()

+0

Ok Userò questo e un brindisi per visualizzare il messaggio, grazie! – peopletookallthegoodnames

0

Hai chiamato registerUserNotificationSettings per registrare il fatto che la vostra applicazione utilizza le notifiche locali? Se non lo fai, la tua richiesta di pubblicare una notifica locale verrà ignorata.

Vedi questo testo dalla descrizione di tale metodo:

se il vostro display app avvisi, riprodurre suoni, o badge sua icona, è necessario chiamare questo metodo durante il ciclo di lancio per richiedere il permesso di avviso l'utente in questi modi. (È necessario inoltre effettuare questa richiesta se si desidera impostare direttamente la proprietà applicationIconBadgeNumber). In genere, si effettua questa richiesta se l'app utilizza le notifiche locali o remote per avvisare l'utente di nuove informazioni relative all'app. La prima volta che l'app viene avviata e chiama questo metodo, il sistema chiede all'utente se l'app deve essere autorizzata a recapitare le notifiche e memorizza la risposta. Successivamente, il sistema utilizza la risposta memorizzata per determinare i tipi effettivi di notifiche che è possibile utilizzare .

Dopo aver chiamato questo metodo, l'app chiama l'applicazione : didRegisterUserNotificationSettings: metodo della sua app delegato per segnalare i risultati. È possibile utilizzare tale metodo per determinare se la richiesta è stata concessa o negata dall'utente.

Si consiglia di chiamare questo metodo prima di pianificare qualsiasi notifica locale o registrarsi con il servizio di notifica push. La chiamata a questo metodo con un nuovo oggetto impostazioni utente sostituisce la precedente richiesta di impostazioni . Le app che supportano le azioni personalizzate devono includere tutte le azioni supportate nell'oggetto notificationSettings .

+0

Utilizzo di Codename Uno in genere non ha accesso diretto al codice di piattaforma nativo (è un framework multipiattaforma). – peopletookallthegoodnames

+0

Mi dispiace, ho perso quella parte della tua domanda. Non ho idea di come configurare correttamente le notifiche locali da Codename One.Suggerisco di googling "Codename One registerUserNotificationSettings" e vedere se c'è una soluzione. –

0

è necessario aggiungere il codice qui sotto in modo didFinishLaunchingWithOptions di file di AppDelegate.m per la notifica locale registro

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
     if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) 
     { 
      [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
      [[UIApplication sharedApplication] registerForRemoteNotifications]; 
     } 
     else 
     { 
      [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
      (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; 
     } 
} 
1
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo 
{ 

[[NSNotificationCenter defaultCenter] postNotificationName:@"DriverNotification" object:nil userInfo:userInfo]; 
// [[NSNotificationCenter defaultCenter] postNotificationName:@"UserNotification" object:nil userInfo:userInfo]; 
     NSLog(@"%@",userInfo); 
} 

inserire questo codice nella tua View Controller

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"DriverNotification" object:nil 
]; 
Problemi correlati