Как обрабатывать push-уведомления с Cordova, когда они приходят и приложение закрывается

Могу ли я как-то обнаружить приход push-уведомлений и обработать его с помощью cordova, когда приходит уведомление и приложение закрывается в это время? Я использую кордову com.clone.phonegap.plugins.pushplugin но когда приходит уведомление и приложение закрывается, то прослушиватели событий, зарегистрированные мной с использованием плагина javascript-кода, не "живы", и я не могу определить прибытие. Можно ли добиться этого каким-то другим способом, используя Cordova?

4 ответа

Решение

Если вы запрашиваете iOS, то нет. Ваше приложение не может обрабатывать уведомления пользователей в фоновом режиме. Если пользователь коснется баннера уведомления, ваше приложение откроется, и вы получите обратный вызов с полезной нагрузкой уведомления, которая может быть перенаправлена ​​в JavaScript.

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

Используйте официальный PushPlugin.

В Android уведомление будет создано в строке состояния, если приложение закрыто, в противном случае полезная нагрузка передается вашему приложению

Вы можете вызвать событие on("уведомление"), когда приложение закрыто, используя плагин phonegap-plugin-push > 1.6.2, и изменив свой внутренний ответ на:

{
   notification : {
      title : 'yourTitle',
      message : 'yourMessage'
   }
}

в

{
   data : {
      title : 'yourTitle',
      message : 'yourMessage',
      content-available : "1" //only for IOS

   }
}

Я не уверен в этом решении, но вы пробовали это:-

Добавьте это в didReceiveRemoteNotification метод

NSString* jsString = [NSString stringWithFormat:@"localStorage.NotificationId=%@;", dynamicNotificationId];
[self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];
Другие вопросы по тегам