Szukaj…


Wprowadzenie

AppDelegate to protokół, który definiuje metody wywoływane przez obiekt singleton UIApplication w odpowiedzi na ważne zdarzenia w czasie istnienia aplikacji.

Zwykle używany do wykonywania zadań podczas uruchamiania aplikacji (konfiguracja środowiska aplikacji, analizy (np .: Mixpanel / GoogleAnalytics / Crashlitics), stos DB itp.) I zamykania (np .: zapisywanie kontekstu DB), obsługa żądań otwartych adresów URL i podobnych w całej aplikacji zadania

Wszystkie stany zastosowania metodami AppDelegate

Aby uzyskać aktualizację lub zrobić coś przed uruchomieniem aplikacji dla użytkownika, możesz użyć poniższej metody.

AppDidFinishLaunching

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

Podczas gdy aplikacja wchodzi na pierwszym planie:

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

Podczas uruchamiania aplikacji, a także tła do pierwszego planu, kliknij poniżej metodę:

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

Podczas gdy aplikacja wchodzi w tle:

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

Podczas gdy rezygnacja aplikacji jest aktywna

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

Podczas zamykania aplikacji:

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

Role aplikacji:

  • AppDelegate zawiera startup code aplikacji.
  • Reaguje na key changes w state Twojej aplikacji. W szczególności reaguje zarówno na tymczasowe przerwy, jak i na zmiany w stanie wykonania aplikacji, na przykład gdy aplikacja przechodzi z pierwszego planu do drugiego.
  • responds to notifications pochodzące spoza aplikacji, takie jak powiadomienia zdalne (znane również jako powiadomienia push), ostrzeżenia o małej pamięci, powiadomienia o zakończeniu pobierania i inne.
  • determines czy powinna nastąpić state preservation i restoration state preservation i pomaga w procesie konserwacji i odbudowy w razie potrzeby.
  • responds to events kierowane na samą aplikację i nie są specyficzne dla widoków aplikacji lub kontrolerów widoków. Możesz go użyć do przechowywania centralnych obiektów danych aplikacji lub dowolnej zawartości, która nie jest właścicielem kontrolera widoku.

Otwieranie zasobu określonego w adresie URL

Prosi delegata o otwarcie zasobu określonego przez adres URL i zapewnia słownik opcji uruchamiania.

Przykład użycia:

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

Obsługa powiadomień lokalnych i zdalnych

Przykład użycia:

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

Rejestracja:

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

Obsługa zdalnych powiadomień:

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

Obsługa powiadomień lokalnych:

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

Obsługa czynności (przestarzałe):

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow