Поиск…
Вступление
AppDelegate - это протокол, который определяет методы, которые вызывается объектом single-ящика UIApplication в ответ на важные события за всю жизнь приложения.
Обычно используется для выполнения задач при запуске приложения (настройка среды приложения, analitycs (например: Mixpanel / GoogleAnalytics / Crashlitics), стек DB и т. Д.) И завершение работы (например, сохранение контекста БД), обработка запросов URL-адресов и аналогичных приложений задачи.
Все приложения приложения через методы AppDelegate
Для получения обновлений или для чего-либо, прежде чем приложение будет доступно пользователю, вы можете использовать метод ниже.
AppDidFinishLaunching
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Write your code before app launch
return YES;
}
Пока приложение Enter на переднем плане:
- (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.
}
Когда приложение запускается, а также фоном для Foreground попадает ниже метода:
- (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.
}
Пока приложение Enter в фоновом режиме:
- (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.
}
Пока приложение отменяет действие
- (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.
}
Пока приложение завершает работу:
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
Роли AppDelegate:
- AppDelegate содержит
startup code
вашего приложения. - Он реагирует на
key changes
state
вашего приложения. В частности, он реагирует как на временные прерывания, так и на изменения состояния выполнения вашего приложения, например, когда ваше приложение переходит с переднего плана на задний план. - Он
responds to notifications
исходящие извне приложения, такие как удаленные уведомления (также известные как push-уведомления), предупреждения с низкой памятью, уведомления о завершении загрузки и т. Д. - Он
determines
, должно лиstate preservation
иrestoration
а также помогать в процессе сохранения и восстановления по мере необходимости. - Он
responds to events
которые нацелены на приложение, и не являются специфическими для ваших приложений или контроллеров представлений. Вы можете использовать его для хранения центральных объектов данных вашего приложения или любого контента, на котором отсутствует собственный контроллер представления.
Открытие ресурса с URL-адресами
Предлагает делегату открыть ресурс, указанный URL-адресом, и предоставляет словарь параметров запуска.
Пример использования:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return SomeManager.shared.handle(
url,
sourceApplication: options[.sourceApplication] as? String,
annotation: options[.annotation]
)
}
Обработка локальных и удаленных уведомлений
Пример использования:
/* Instance of your custom APNs/local notification manager */
private var pushManager: AppleNotificationManager!
Постановка на учет:
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)
}
Удаленная обработка уведомлений:
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
)
}
Обработка локальных уведомлений:
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
pushManager.handleLocalNotification(notification, background: false)
}
Действия по обработке (устаревшие):
func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forRemoteNotification userInfo: [NSObject : AnyObject],
completionHandler: () -> Void) {
pushManager.handleInteractiveRemoteNotification(userInfo, actionIdentifier: identifier, completion: completionHandler)
}