2016-04-22 3 views
4

Я нахожусь в создании приложения Phonegap - в настоящее время для Android - которое использует Onesignal для обработки push-уведомлений. Создание основного приложения не было слишком сложным. В контексте приложения пользователю действительно не нужно просматривать уведомление.Бесшумная обработка push notifictions в фоновом режиме

Что мне нужно, так это иметь возможность обрабатывать полезную нагрузку сообщения в приложении JavaScript. Это не проблема, если я готов подождать, пока пользователь нажмет значок уведомления, после чего будет вызвано событие [notificationopenedcallback], и я свободен делать то, что мне нравится с полезной нагрузкой. 1

Nice, но этого недостаточно. Что мне нужно сделать, так это манипулировать полезной нагрузкой в ​​JavaScript при поступлении уведомления - не в какой-то момент в будущем, когда пользователь нажимает значок уведомления.

Непонятно, что это можно сделать - возможно, потому, что не существует способа выполнить JS-код для приложения, которое было зашифровано. Если это действительно так, я могу как-то обойти эту проблему, написав собственное приложение?

Я бы очень признателен за любую помощь в этом.

+0

Удалось ли вам разобраться? Я в той же ситуации: мне нужно обрабатывать молчащие push-уведомления в приложении Ionic, временно пробуждая приложение и выполняя какой-то код. Какие-нибудь Новости? – fikkatra

+0

Как было предложено в принятом ответе - вам нужно написать свой собственный плагин, а не собрать пестрый набор готовых плагинов. После того, как вы начнете писать свой собственный плагин, у вас есть доступ ко всему API Android и вы можете сделать практически все, что вам нравится – DroidOS

+0

ну как насчет публикации плагина? :-) – fikkatra

ответ

2

Я думаю, вам нужно будет написать собственное приложение для Android, если вы хотите надежно обрабатывать push-уведомления по мере их поступления.

Я использую phonegap-plugin-push для обработки push-уведомлений в приложении для Кордовы, и в настоящее время он не пробуждает приложение при любых обстоятельствах при недавно полученных push-уведомлениях. См. Например, этот номер #806

Для моих целей (которые не являются критичными) я полагаюсь на пользователя, чтобы щелкнуть уведомление, чтобы разбудить приложение при любых обстоятельствах.Хорошая идея о подключении phonegap-plugin-push заключается в том, что он поддерживает iOS, Android и Windows, если вы хотите поддерживать другие платформы в будущем.

3

Отказ от ответственности: Я только что разработал плагин в Кордове, но не просмотрел push-уведомления в возрасте.

В любом случае, быстрый ответ заключается в реализации push-уведомлений в плагине. Вызовите плагин из JS и запустите фоновый сервис для прослушивания и обработки полезной нагрузки.

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

Что касается других плагинов, то мой ограниченный опыт заключается в том, что вы должны использовать каркас cordova. Это означает, что OneSignal следует добавить с помощью кордовы. Я основываю это на моем использовании плагина поддержки V4, поэтому YMMV.

Редактировать: С другой стороны, и если подумать, если вы используете что-то стандартное, такое как уведомления Google, вам, вероятно, не нужен OneSignal.

Одна вещь, которую я еще не сделал, - это создать манифест с сервисом и намерениями в плагине. Я на самом деле сделал это в AAR, который был прикреплен к плагину. Поэтому я не уверен, что манифест AAR будет добавлен к основному манифесту. Это, вероятно, должно, но я не смотрел на это. Если это так, вам даже не нужно вызывать собственный код из JS. Получатель получит уведомление. В противном случае вам нужно будет вызвать registerReceiver из JS.

Наконец-то, я думаю, вы правы. Если приложение находится в фоновом режиме, оно остановлено и выпущены ресурсы, такие как WebView. Это означает, что JS не будет работать.

+0

_implement push-уведомления из плагина_. Не могли бы вы объяснить это? Вы имеете в виду вместо того, чтобы регистрироваться для Push-уведомлений (в моем случае через OneSignal) непосредственно из приложения JS. Я делаю это в настраиваемом плагине Phonegap? – DroidOS

+0

Я имел в виду написать дополнительный пользовательский плагин, а также соответствующим образом обновил ответ. –

Смежные вопросы