Приложение находится на переднем плане
Реализация didReceiveRemoteNotification Метод делегата в AppDelegate для обработки уведомления и запуска нужного кода, когда приложение находится на переднем плане.
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
//write your code here when app is in foreground
}
Приложение находится в фоновом режиме
Когда приложение находится в фоновом режиме и пользователь получает push-уведомление, didReceiveRemoteNotification будет вызываться, если пользователь нажимает на уведомлениено если пользователь нажимает на значок приложения, то этот метод не будет вызван. В этом случае вам нужно связаться с вашим сервером или вы можете проверить номер значка с предыдущим значением (вы можете сохранить его в NSUserDefaults) и запустить код, который выхочу.
Завершение работы приложения
Когда завершение работы приложения didReceiveRemoteNotification метод не будет вызван, но вы можете проверить launchOptions , чтобы узнать, была ли запущена программа из уведомлений или нет в didFinishWithLaunchOptions метод в appdelegate и сделать свою задачу соответственно.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil {
// Do your task here
}
}