如何 send/receive 从 ionic 移动应用推送通知?

How to send/receive push notifications from ionic mobile app?

我有一个使用 Ionic 框架(在 cordova 上)构建的消息传递应用程序。我计划为 android 构建这个,我想要一种使用 javascript/ionic.

从应用程序发送和接收推送通知的方法

是否有关于如何进行此类设置的好教程?

example application made available by Holly Schinsky. The core of it is the usage of PushPlugin 是在 Cordova 上处理推送通知的标准方法。在 GitHub 存储库的文档中,为该主题提供了相当广泛的教程。主要方法是 pushNotification.register 注册设备以监听推送通知。

如果您需要在本地触发通知,您可能需要查看 Local notification plugin。有了它,您可以添加要在设备上显示的通知,而无需外部服务来发送推送通知。

使用这个插件https://github.com/phonegap-build/PushPlugin

Android 台设备通过 Google 云消息 (GCM) 服务接收推送通知,而 iOS 台设备从 Apple 推送通知 (APN) 服务接收推送通知。

接收通知的方式(通过声音、警报等)是注册时在应用程序代码中设置的选项以及用户的通知设备设置的组合。

如果您想要更具体的内容,请遵循以下教程:

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

ngCordova 有一个支持推送通知的插件。它有 iOS 和 Android 的示例代码。检查一下:http://ngcordova.com/docs/plugins/pushNotifications/

最新的 phonegap-plugin-push 允许您在 ionic 应用程序中注册和接收推送通知。维持在以下 Github link:

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

安装:

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

其中 SENDER_ID="XXXXXXX" 中的 XXXXXXX 映射到 Google Developer Console 中的项目编号。要查找项目编号,请登录 Google 开发人员控制台,select 您的项目,然后单击下面屏幕截图中的菜单项以显示您的项目编号。

如果您没有创建 Android 应用程序,您可以为此值输入任何内容。

Note: You may need to specify the SENDER_ID variable in your package.json.

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

Note: You need to specify the SENDER_ID variable in your config.xml if you plan on installing/restoring plugins using the prepare method. The prepare method will skip installing the plugin otherwise.

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

安装后,您现在可以将下面的代码添加到主 javascript 文件中以注册和接收推送通知:

    $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);
             });
           }
         });
       }
     }