2015-04-19 31 views
5
func application(application: UIApplication, didReceiveRemoteNotification data: [NSObject : AnyObject]) { 
     var dat = JSON(data) 
     if application.applicationState == UIApplicationState.Active { 
      // app was already in the foreground 
      println("App is in foreground") 
      processNotification(dat) 
     }else{ 
      // app was just brought from background to foreground via PUSH 
      println("App brought back via PUSH") 
      processNotification(dat) 
     } 
    } 

Ecco come controllo le notifiche push. Tuttavia, se invio una notifica push, l'utente lo manca e quindi apre l'app tramite l'icona? Come posso verificare quando l'app è stata aperta dall'icona?Come posso verificare quando un'app ritorna in primo piano dallo sfondo, ma non dalla notifica push?

+1

intendi come rilevare se l'app è aperta ma c'è una notifica non aperta in sospeso? – Simon

+0

@Simon si, credo di si. – TIMEX

risposta

10

The UIApplicationDelegate protocol definisce diversi metodi che consentono di aggiungere codice a diversi eventi del ciclo di vita dell'applicazione.

di specifico interesse per voi sarebbe la seguente:

  • application(_:willFinishLaunchingWithOptions:) - ha chiamato poco prima che l'applicazione ha finito di lanciare quando l'applicazione non fosse già attivo in background
  • application(_:didFinishLaunchingWithOptions:) - chiamato subito dopo l'applicazione ha terminato l'avvio quando l'applicazione non era già attiva in background
  • applicationDidBecomeActive(_:) - chiamato subito dopo l'applicazione è diventata attiva, questo viene chiamato quando l'utente si avvia da zero, si riapre dallo sfondo, e anche w uando un utente ritorna da una temporanea interruzione (come ad esempio una telefonata)
  • applicationWillEnterForeground(_:) - questo è chiamato poco prima che l'applicazione entra nel primo piano dopo essere stato nei precedenti - si è immediatamente seguita dalla chiamata applicationDidBecomeActive(_:)

Gli eventi del ciclo di vita possono attivare se l'utente ha aperto l'applicazione tramite una notifica o toccando l'icona. Per quanto ne so non c'è modo di dire con certezza che l'applicazione è stata aperta toccando l'icona. È possibile sapere (ish) che l'applicazione non è stata aperta tramite una notifica, poiché i relativi metodi "non hanno ricevuto notifica" non verranno attivati. Ma questo consente comunque all'utente due (almeno) metodi di apertura dell'applicazione: toccare l'icona dell'app o toccando due volte il pulsante Home e toccando l'app per risvegliarlo dallo sfondo.

+0

Sto indovinando "applicationDidBecomeActive" è quello che sto cercando giusto? – TIMEX

+0

Probabilmente. È abbastanza facile inserire punti di interruzione o 'println' in tutti e giocare per vedere * esattamente * come funziona il ciclo di vita e capire esattamente cosa ti serve. – nhgrif

+0

Secondo le pagine di riferimento c'è un dizionario con le chiavi in ​​cui è possibile trovare se ci sono ancora delle notifiche sospese: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/doc/constant_group/Launch_Options_Keys – Simon