Android上的离子推送通知不会在Ionic.io

时间:2016-04-21 07:24:13

标签: android angularjs ionic-framework

我想在Android上使用ionic实现推送通知。

我在devdactic Devdactic push notifications android 的教程中遵循了Ionic push的文档。我在平台中看到的示例中保存了一个令牌。

我已经完成了我需要的所有设置,包括GCM服务和注册用户到离子平台,但没有注册令牌。

我在模拟器中运行app并注册了用户但没有保存令牌。在一些修改器之后,我在控制台中收到一个令牌但是不行。

在示例中,令牌是不同的,推送不起作用。有人根据上一份文档有一个Ionic Push的工作示例吗?

2 个答案:

答案 0 :(得分:1)

这是我用来注册推送的东西,它很乱,但希望可以有用。它会检查当前用户是否已通过身份验证,如果他们不是,则使用UUID(我使用UUID生成器插件)对其进行签名并保存令牌。只需确保您的应用程序已设置为Ionic.io,这应该有效:)

var user = Ionic.User.current();

if (user.isAuthenticated()) {

            var push = new Ionic.Push({
                "debug": true,
                "onNotification": function (notification) {                        
                },
                "onRegister": function (data) {
                    console.log(data.token);
                    return true;
                },
                "pluginConfig": {
                    "android": {
                        "icon": "icon"
                    },
                    "ios": {
                        "badge": true,
                        "sound": true,
                        "alert": true
                    }
                }
            });
        } else {


            var uid = uuid2.newuuid();

            var details = {
                'email': uid + '@example.com',
                'password': 'secretpassword'
            };

            Ionic.Auth.signup(details).then(function () {
                var options = { 'remember': true };
                Ionic.Auth.login('basic', options, details).then(function () {
                    user = Ionic.User.current();
                    user.set('uid', uid);
                    user.save();

                    var push = new Ionic.Push({
                        "debug": true,
                        "onNotification": function (notification) {                                
                        },
                        "onRegister": function (data) {
                            console.log(data.token);
                            return true;
                        },
                        "pluginConfig": {
                            "android": {
                                "icon": "icon"
                            },
                            "ios": {
                                "badge": true,
                                "sound": true,
                                "alert": true
                            }
                        }
                    });


                    push.register(function (token) {
                        console.log("Device token:", token.token);
                        push.saveToken(token);
                    });
                }, function () { });
            }, function () { });

        }

答案 1 :(得分:0)

要发送推送通知,您需要Api密钥和项目编号以及当前设备ID。

我认为您在获取用户设备ID方面遇到了困难,以便获取当前的设备ID,请重新ng-Cordova

你可以找到一行

 $rootScope.$on('$cordovaPush:notificationReceived', function(event, notification) 

在此您可以看到通知参数,它是该对象中的一个对象,您可以找到regid字段,因为您可以获取当前的设备ID,这仅适用于移动设备不在浏览器上。

因此,为了使用该设备ID,例如,假设您要发布一个带有潜水ID的登录表单,如下所示。

$rootScope.$on('$cordovaPush:notificationReceived', function(event, notification) {
          console.log(event);
          console.log(notification);

          switch(notification.event) {
            case 'registered':
            console.log(notification.regid.length);
              if (notification.regid.length > 0 ) {
               // alert('registration ID = ' + notification.regid);
               console.log('registration ID = ' + notification.regid);
                 var loginPost = {
                    "UserName":username,
                    "PassWord":password,
                    "DeviceID":notification.regid
                  };
                  console.log(loginPost);