Javascript 向Android设备发送通知。已发送但未收到

Javascript 向Android设备发送通知。已发送但未收到,javascript,android,cordova,google-cloud-messaging,pubnub,Javascript,Android,Cordova,Google Cloud Messaging,Pubnub,我越来越熟悉向设备发送通知 我目前正在尝试使用pubnub和Google云消息向我的设备发送通知: (function() { var pubnub = PUBNUB.init({ subscribe_key: 'my-subscribe', publish_key: 'my-publish', }); var os = 'android'; var regid = ''; var channel = 'mi-cana

我越来越熟悉向设备发送通知

我目前正在尝试使用pubnub和Google云消息向我的设备发送通知:

(function() {
    var pubnub = PUBNUB.init({
        subscribe_key: 'my-subscribe',
        publish_key:   'my-publish',
    });

    var os = 'android';
    var regid = '';
    var channel = 'mi-canal';
    
    function sendPush() {
        var gwtype = (os === 'ios') ? 'apns' : 'gcm';
        console.log('sending push notification...',channel,gwtype);

        pubnub.mobile_gw_provision({
            device_id: 'APA91bE0rX8mfzY0VttACffUPIagSbd5No0xxxxxxxxxxxxxxxxxEHCVFBbzPqPHKG9phyQ31O4W6aEgMUqWANtWrK-zdMsiONUwAbUW4efso8ScemlXGM8tJq0M12oR0E2Kk9',
            channel: channel, 
            op: 'add', 
            gw_type: gwtype,
            error: function(msg){console.log(msg);},
            callback: function() {
                var message = PNmessage();

                message.pubnub = pubnub;
                message.callback = function (msg){ console.log(msg); };
                message.error = function (msg){ console.log(msg); };
                message.channel = channel;
                message.apns = {
                    alert: 'The room temperature is set too high'
                };
                message.gcm = {
                    title: 'PubNub Push Demo',
                    message: 'The room temperature is set too high'
                };

                message.publish();
            }            
        });

    }
    sendPush();
})();
哪些日志:

[1,“已发送”,“14471821928645156”]

问题是,我没有收到设备中的通知,使用和android应用程序(cordova制造)

你知道我遗漏了什么吗?

Android上的PubNub Cordova HTML5


嗨,托尼!我看到你正在使用
Cordova
Android
为你
HTML5
应用程序。您需要等待PubNub网络系统为GCM分配和配置设备。我想这可能就是问题所在。只需在发送GCM有效负载之前添加延迟。此外,我还为您添加了一个链接,指向今天的最佳指南,该指南介绍了如何使用Cordova/PhoneGap在Android上使用GCM推送通知

Cordova GCM推送通知 您可能想知道,在不设置自己的服务器的情况下,是否可以从用JavaScript编写的web应用程序发送Android推送通知。当然,当你把PubNub推送API和PhoneGap结合起来的时候,情况就完全一样了


调试推送通知 您可以使用通道的
-pndebug
通道进行一些高级调试,并检查设备是否仍注册到该通道

pndebug通道
  • 使用订阅频道的
    -pndebug
    频道。如果要发布到的频道是
    foo
    ,请订阅
    foo pndebug
    。确保使用了正确的发布/订阅键

  • 'pn_debug':true
    添加到顶层的消息负载中,并发布该消息

    "pn_gcm": {
        "data": {
            "message": "hello"
        },
    }
    "pn_apns": {
        "aps": {
            "alert": "hello"
        },
    }
    "pn_debug": true
    
  • 将消息发布到频道
    foo
    。如果推送消息注册有任何问题,您应该在订阅
    foo pndebug
    的Dev控制台中看到有用的错误消息

  • 检查频道注册 您还可以在浏览器中使用简单的REST URL发布推送通知后,检查设备是否仍注册到频道

    http://pubsub.pubnub.com/v1/push/sub-key//devices/?type=gcm

    这将返回设备仍在其上注册的所有频道,以进行推送通知(在本例中为GCM。根据需要将
    类型
    查询参数更改为
    apns

    返回:
    [“演示”、“演示1”、“演示2”]

    如果刚刚发送推送通知的频道不在该列表中,则可能存在设备注册令牌问题(例如,无效令牌或设备未注册)。但是
    -pndebug
    频道应该会向您展示这一点。

    我个人在我的android应用程序上使用过,它的工作方式很有魅力。 您可以阅读文档。它100%免费,还使用谷歌的云消息服务。基本上,在安装他们的SDK并遵循整个文档之后,您的代码将是这样的

    代码示例:

    document.addEventListener('deviceready', function () {
      // Enable to debug issues.
      // window.plugins.OneSignal.setLogLevel({logLevel: 4, visualLevel: 4});
      
      var notificationOpenedCallback = function(jsonData) {
        console.log('didReceiveRemoteNotificationCallBack: ' + JSON.stringify(jsonData));
      };
    
      window.plugins.OneSignal.init("b2f7f966-d8cc-11e4-bed1-df8f05be55ba",
                                     {googleProjectNumber: "703322744261"},
                                     notificationOpenedCallback);
      
      // Show an alert box if a notification comes in when the user is in your app.
      window.plugins.OneSignal.enableInAppAlertNotification(true);
    }, false);
    
    • 将“b2f7f966-d8cc-11e4-bed1-df8f05be55ba”替换为您的OneSignal应用程序Id
    • 将“703322744261”替换为您的谷歌项目编号

    对我来说,只要我发送一个通知,我的手机就会发出嘟嘟声,只需3秒钟。希望这有帮助:)

    你好,托尼!我看到你正在使用
    Cordova
    Android
    为你
    HTML5
    应用程序。你需要等待PubNub网络系统分配和配置设备GCM,我认为这可能是个问题。有趣的是,我很快就让它在android上运行了!问题是我不知道如何定位一个用户..?是否只定位一个特定的用户以接收通知?或者你想让所有用户都收到通知?我想在注册时获得用户/设备id,这样我只能向他发送与他相关的信息。onesignal网站上的邮件栏中有一个名为A/B测试的选项。我不知道它是否能工作,但我想你可以使用cordova插件设备来获取用户的设备型号等。。然后将模型添加到A/B测试选项中。请告诉我它是否有效:pI的意思是识别用户并只向他发送通知,就像这样,我很感谢你的时间!看来我根本没用pubnub。。谢谢
    document.addEventListener('deviceready', function () {
      // Enable to debug issues.
      // window.plugins.OneSignal.setLogLevel({logLevel: 4, visualLevel: 4});
      
      var notificationOpenedCallback = function(jsonData) {
        console.log('didReceiveRemoteNotificationCallBack: ' + JSON.stringify(jsonData));
      };
    
      window.plugins.OneSignal.init("b2f7f966-d8cc-11e4-bed1-df8f05be55ba",
                                     {googleProjectNumber: "703322744261"},
                                     notificationOpenedCallback);
      
      // Show an alert box if a notification comes in when the user is in your app.
      window.plugins.OneSignal.enableInAppAlertNotification(true);
    }, false);