Как отправлять/получать push-уведомления от ионного мобильного приложения?

У меня есть приложение для обмена сообщениями, построенное с использованием Ionic framework (на кордове). Я планирую создать это для android, и я бы хотел, чтобы отправить и получить push-уведомления из приложения, используя javascript/ionic.

Есть ли хорошие учебники о том, как это сделать?

Ответ 1

Существует пример приложения, доступный Холли Шински. Ядром этого является использование PushPlugin, который является стандартным методом обработки push-уведомлений на Кордове. В этой документации по этому репозиторию GitHub имеется довольно обширное учебное пособие по этому вопросу. Основной метод pushNotification.register, который регистрирует устройство для прослушивания push-уведомлений.

Если вам нужно инициировать уведомление локально, вы можете вместо этого взглянуть на Локальный плагин уведомлений. С его помощью вы можете добавлять уведомления, которые будут отображаться на устройстве, без необходимости отправки внешних уведомлений на внешние службы.

Ответ 2

Используйте этот плагин https://github.com/phonegap-build/PushPlugin.

Устройства Android получают push-уведомления через службу облачных сообщений Google (GCM), в то время как устройства iOS получают их из службы Apple Push Notifications (APN).

Способ получения уведомлений (по звуку, предупреждению и т.д.) представляет собой комбинацию параметров, заданных в коде приложения при регистрации, а также настроек устройства пользователя для уведомлений.

Если вы хотите более подробно следовать ниже учебнику:

http://devgirl.org/2013/07/17/tutorial-implement-push-notifications-in-your-phonegap-application/

Ответ 4

Последняя версия phonegap-plugin-push позволяет регистрировать и получать push-уведомления в ваших ионных приложениях. Он поддерживается на следующей ссылке Github:

https://github.com/phonegap/phonegap-plugin-push

Установка:

cordova plugin add https://github.com/phonegap/phonegap-plugin-push --variable SENDER_ID="XXXXXXX"

Где XXXXXXX в SENDER_ID="XXXXXXX" отображает номер проекта в Google Developer Console. Чтобы найти номер входа в проект в Консоль разработчика Google, выберите свой проект и нажмите на пункт меню на снимке экрана ниже, чтобы отобразить номер вашего проекта.

zzns8

Если вы не создаете приложение для Android, вы можете добавить что-нибудь для этого значения.

Примечание. Возможно, вам нужно указать переменную SENDER_ID в вашем пакете. json.

"cordovaPlugins": [
    {
      "variables": {
        "SENDER_ID": "XXXXXXX"
      },
      "locator": "phonegap-plugin-push"
    }
  ]

Примечание. Вам нужно указать переменную SENDER_ID в файле config.xml, если вы планируете устанавливать/восстанавливать плагины с помощью метода подготовки. Метод подготовки пропустит установку плагина в противном случае.

<plugin name="phonegap-plugin-push" spec="1.6.0">
    <param name="SENDER_ID" value="XXXXXXX" />
</plugin>

После установки вы можете добавить код ниже в свой основной файл javascript для регистрации и получения push-уведомлений:

    $ionicPlatform.ready(function () {

         var push = PushNotification.init({
           android: {
             senderID: "XXXXXXX"//, //project token number (12 digit) from https://console.developers.google.com
             // forceShow: "true", //force show push notification when app is in foreground on Android only.
           },
           browser: {
             pushServiceURL: 'http://push.api.phonegap.com/v1/push'
           },
           ios: {
             /*senderID: "XXXXXXX",*/ //If using GCM for ios, project token number (12 digit) from https://console.developers.google.com
             /*gcmSandbox: 'true',*/ //If using GCM for ios
             alert: 'true',
             badge: 'true',
             sound: 'true',
           },
           windows: {}
         });

         PushNotification.hasPermission(function (permissionResult) {
           if (permissionResult.isEnabled) {
             $log.debug("has permission for push notification");

             /*Register device with GCM/APNs*/
             push.on('registration', function (data) {
               // data.registrationId
               $log.debug("data.registrationId: " + data.registrationId);          
             });

             push.on('notification', function (data) {
               // data.message,
               // data.title,
               // data.count,
               // data.sound,
               // data.image,
               // data.additionalData
               $log.debug(JSON.stringify(data));
             });

             push.on('error', function (e) {
               // e.message
               $log.debug("e.message: " + e.message);
               //alert(e.message);
             });
           }
         });
       }
     }