Suche…


Einführung

AppDelegate ist ein Protokoll, das Methoden definiert, die vom UIApplication-Einzelobjekt als Reaktion auf wichtige Ereignisse während der Lebensdauer einer App aufgerufen werden.

Wird normalerweise zum Ausführen von Aufgaben beim Start der Anwendung (Setup-App-Umgebung, Analysetools (z. B. Mixpanel / GoogleAnalytics / Crashlitics), DB-Stack usw.) und zum Herunterfahren (z. B. Speichern des DB-Kontextes), zum Bearbeiten von URL-Anforderungen und ähnlichen Anwendungen verwendet Aufgaben.

Alle Zustände der Anwendung durch AppDelegate-Methoden

Wenn Sie ein Update erhalten oder etwas tun möchten, bevor die App für den Benutzer verfügbar ist, können Sie die unten beschriebene Methode verwenden.

AppDidFinishLaunching

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

Während App in den Vordergrund tritt:

- (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.
}

Wenn App Launching und auch Hintergrund in den Vordergrund treten, treffen Sie die Methode unten:

- (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.
}

Während App im Hintergrund eingeben:

- (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.
}

Während App zurücktreten aktiv

- (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.
}

Während der App beenden:

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

AppDelegate-Rollen:

  • AppDelegate enthält Ihre App - startup code .
  • Es reagiert auf key changes des state Ihrer App. Insbesondere reagiert es sowohl auf temporäre Unterbrechungen als auch auf Änderungen im Ausführungsstatus Ihrer App, z. B. wenn Ihre App vom Vordergrund in den Hintergrund wechselt.
  • Es responds to notifications die von außerhalb der App stammen, z. B. Remote-Benachrichtigungen (auch Push-Benachrichtigungen genannt), Warnmeldungen zu wenig Arbeitsspeicher, Benachrichtigungen zum Abschluss des Herunterladens usw.
  • Es determines ob state preservation und restoration state preservation soll, und unterstützt bei Bedarf den Erhaltungs- und Wiederherstellungsprozess.
  • Es responds to events , die auf die App selbst abzielen, und ist nicht spezifisch für die Ansichten Ihrer App oder die Ansichtssteuerungen. Sie können es verwenden, um die zentralen Datenobjekte Ihrer App oder Inhalte zu speichern, die nicht über einen eigenen View-Controller verfügen.

Eine URL-spezifische Ressource öffnen

Fordert den Delegaten auf, eine durch eine URL angegebene Ressource zu öffnen, und stellt ein Wörterbuch mit Startoptionen bereit.

Verwendungsbeispiel:

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

Umgang mit lokalen und Remote-Benachrichtigungen

Verwendungsbeispiel:

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

Anmeldung:

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)
}

Remote-Benachrichtigungen verwalten:

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
    )
}

Umgang mit lokalen Benachrichtigungen:

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

Handlungsaktion (veraltet):

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow