Zoeken…


Invoering

AppDelegate is een protocol dat methoden definieert die door het singleton UIApplication-object worden aangeroepen als reactie op belangrijke gebeurtenissen tijdens de levensduur van een app.

Normaal gebruikt om taken uit te voeren bij het opstarten van de applicatie (app-omgeving instellen, analitycs (bijv .: Mixpanel / GoogleAnalytics / Crashlitics), DB-stack enz.) En afsluiten (bijv .: DB-context opslaan), behandeling van openstaande URL-aanvragen en soortgelijke applicatie-brede taken.

Alle staten van toepassing via AppDelegate-methoden

Om bijgewerkt te worden of om iets te doen voordat de app live gaat naar de gebruiker, kunt u de onderstaande methode gebruiken.

AppDidFinishLaunching

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

Terwijl de app op voorgrond komt:

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

Wanneer de app wordt gestart en ook de achtergrond van de voorgrond raakt onderstaande methode:

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

Terwijl App Enter op de achtergrond:

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

Terwijl app ontslag actief is

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

Terwijl de app wordt beëindigd:

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

AppDelegate-rollen:

  • AppDelegate bevat de startup code uw app.
  • Het reageert op key changes in de state van uw app. In het bijzonder reageert het op zowel tijdelijke onderbrekingen als op veranderingen in de uitvoeringstoestand van uw app, zoals wanneer uw app van de voorgrond naar de achtergrond overgaat.
  • Het responds to notifications die van buiten de app afkomstig zijn, zoals externe meldingen (ook bekend als pushmeldingen), weinig geheugenwaarschuwingen, meldingen voor het voltooien van downloads en meer.
  • Het determines of het state preservation en restoration moet plaatsvinden en helpt waar nodig bij het behoud en herstel.
  • Het responds to events die zich op de app zelf richten en die niet specifiek zijn voor de weergaven of weergavecontrollers van uw app. U kunt het gebruiken om de centrale gegevensobjecten van uw app of inhoud die geen eigen weergavecontroller heeft, op te slaan.

Een URL-gespecificeerde bron openen

Vraagt de gemachtigde om een bron te openen die is opgegeven door een URL, en biedt een woordenboek met startopties.

Voorbeeld van gebruik:

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

Lokale en externe meldingen verwerken

Voorbeeld van gebruik:

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

registratie:

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

Externe meldingen verwerken:

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

Lokale kennisafhandeling:

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

Verwerkingsactie (verouderd):

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow