iOS Local Notification - обратный вызов в фоновом режиме

Контекст: в моем приложении для iOS используются локальные уведомления. Я планирую локальные уведомления, а затем получаю обратный вызов через didRecieveLocalNotifications, когда уведомления запускаются.

Это прекрасно работает, когда приложение находится на переднем плане, однако, когда приложение выходит в фоновом режиме, я получаю уведомление iOS, но не перезваниваю.

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

Вот код обратного звонка -

- (void)application:(UIApplication *)application didReceiveLocalNotification:    (UILocalNotification *)notification
{

    //call your method that you want to do something in your app
    NSLog (@"Received Notification");
    [UIApplication sharedApplication].applicationIconBadgeNumber = 1;
    [myRootController HandleLocalNotifications:notification];

}

1 ответ

Решение

Вы описываете application:didReceiveLocalNotification:, Это устарело в iOS 10. Вы должны выполнить обновление до инфраструктуры UserNotification.

Сейчас, когда.

Если ваше приложение находится на переднем крае, пользователь не получает оповещений. Вместо этого вы получаете application:didReceiveLocalNotification:,

Если ваше приложение не является передним, пользователь получает предупреждение. Поэтому вы не получитеapplication:didReceiveLocalNotification: потому что уведомление сработало. Но вы получите его, если пользователь получил уведомление и вызвал ваше приложение, нажав на уведомление об уведомлении. Если пользователь это сделает, вы получите application:didReceiveLocalNotification: даже на заднем плане.

Если ваше приложение было остановлено в фоновом режиме, вы получите application:didFinishLaunchingWithOptions: (и вы можете проверить options узнать, что вас запускают из-за уведомления).

Если ваше приложение работало в фоновом режиме или не работает, а пользователь не нажимает на уведомление и не вызывает ваше приложение, вы вообще ничего не получите и не сможете узнать, что уведомление сработало. Это связано с тем, что уведомления не для вашей выгоды, а являются способом отправки сообщения пользователю. (По вашему вопросу это звучит так, как будто вы, возможно, неправильно используете локальные уведомления как способ отправки сообщения себе. Это не то, для чего они.)

Другие вопросы по тегам