Ricerca…


introduzione

AppDelegate è un protocollo che definisce i metodi che vengono chiamati dall'oggetto UIA singleton in risposta a eventi importanti nel corso della vita di un'app.

Normalmente utilizzato per eseguire attività all'avvio dell'applicazione (ambiente dell'app di configurazione, analisi (es .: Mixpanel / GoogleAnalytics / Crashlitics), stack DB ecc.) E arresto (es .: salva contesto DB), gestione richieste URL aperte e simili a livello di applicazione compiti.

Tutti gli stati dell'applicazione tramite i metodi AppDelegate

Per informazioni su come aggiornare o fare qualcosa prima che l'app venga resa disponibile all'utente, puoi utilizzare il metodo seguente.

AppDidFinishLaunching

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Write your code before app launch
    return YES;
}

Mentre App entra in primo piano:

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}

Quando l'avvio di app e anche lo sfondo in primo piano, colpiscono il metodo seguente:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

Mentre App entra in background:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

Mentre l'app si dimette attiva

- (void)applicationWillResignActive:(UIApplication *)application {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}

Mentre l'app termina:

- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

AppDelegate Roles:

  • AppDelegate contiene il startup code dell'app.
  • Risponde ai key changes nello state della tua app. In particolare, risponde sia alle interruzioni temporanee che alle modifiche nello stato di esecuzione della tua app, come quando la tua app passa dal primo piano allo sfondo.
  • responds to notifications provenienti dall'esterno dell'app, quali notifiche remote (note anche come notifiche push), avvisi di memoria insufficiente, notifiche di completamento del download e altro.
  • determines se la state preservation e il restoration dovrebbero verificarsi e assiste nel processo di conservazione e restauro, se necessario.
  • responds to events che responds to events come target l'app stessa e non sono specifici per le visualizzazioni o i controller della vista della tua app. Puoi utilizzarlo per archiviare gli oggetti dati centrali della tua app o qualsiasi contenuto che non dispone di un controller di visualizzazione proprietario.

Apertura di una risorsa specificata da URL

Chiede al delegato di aprire una risorsa specificata da un URL e fornisce un dizionario di opzioni di lancio.

Esempio di utilizzo:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        return SomeManager.shared.handle(
            url,
            sourceApplication: options[.sourceApplication] as? String,
            annotation: options[.annotation]
        )
    }

Gestione delle notifiche locali e remote

Esempio di utilizzo:

/* Instance of your custom APNs/local notification manager */  
private var pushManager: AppleNotificationManager!

Registrazione:

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
    // Called to tell the delegate the types of notifications that can be used to get the user’s attention
    pushManager.didRegisterSettings(notificationSettings)
}

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    // Tells the delegate that the app successfully registered with Apple Push Notification service (APNs)
    pushManager.didRegisterDeviceToken(deviceToken)
}

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    // Sent to the delegate when Apple Push Notification service cannot successfully complete the registration process.
    pushManager.didFailToRegisterDeviceToken(error)
}

Gestione delle notifiche remote:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    // Remote notification arrived, there is data to be fetched
    // Handling it
    pushManager.handleNotification(userInfo,
                                   background: application.applicationState == .Background
    )
}

Gestione delle notifiche locali:

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
    pushManager.handleLocalNotification(notification, background: false)
}

Azione di gestione (deprecata):

func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forRemoteNotification userInfo: [NSObject : AnyObject],
                     completionHandler: () -> Void) {
    pushManager.handleInteractiveRemoteNotification(userInfo, actionIdentifier: identifier, completion: completionHandler)
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow