Выполнение кода непосредственно в ответ на получение сообщения APNS - PullRequest
0 голосов
/ 08 ноября 2019

У нас есть приложение для iOS, в которое мы отправляем уведомления через FCM.

В идеале мы хотели бы сделать так, чтобы приложение запускало некоторый код прямо из уведомления.

Это кажется выполнимым, если мы отправляем уведомление о типе данных и приложение находится на переднем плане.

Однако - как мы можем это сделать, если а) приложение находится в фоновом режиме б) приложение былопрекращается. Есть ли какой-нибудь способ автоматически запустить приложение или заставить приложение запустить себя снова, если оно прекращено.

Спасибо

1 Ответ

1 голос
/ 08 ноября 2019

Приложение находится на переднем плане

Реализация 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
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...