手机间隙中的android推送通知没有收到通知

Posted

技术标签:

【中文标题】手机间隙中的android推送通知没有收到通知【英文标题】:android push notification in phone gap not getting notifications 【发布时间】:2015-09-12 08:01:31 【问题描述】:

您好,我按照以下步骤操作

1) 我创建了 cordova 项目结构。 2) 我添加了平台(android)。 3)我添加了cordova插件

cordova plugin add https://github.com/phonegap-build/PushPlugin.git#2.4.0

4) 构建科尔多瓦项目。 5) 接下来我在 android eclipse(4.4.2) 中导入创建的应用程序 6)我在index.js文件中写了下面的代码

 init: function()
     alert("init");
    var pushNotification = window.plugins.pushNotification;

    pushNotification.register(successHandler, errorHandler, 
        
            'senderID':'XXXXXXXXXX',
            'ecb':'onNotificationGCM' // callback function
        
    );

    function successHandler(result) 
        console.log('Success: '+ result);
        alert(result);
    

    function errorHandler(error) 
        console.log('Error: '+ error);
    

     function onNotificationGCM(e) 
        alert("comming");
        if('registered' === e.event) 
            // Successfully registered device.
        
        else if('error' === e.event) 
            // Failed to register device.
        
    ;

我得到的响应是“OK”。我无法调用 'ecb': onNotificationGCM' // 回调函数

在 Android 控制台中,我收到以下消息

V/PushPlugin(2512): execute: action=register 
V/PushPlugin(2512): execute: data=     ["senderID":"889953963751","ecb":"onNotificationGCM"] V/PushPlugin(2512): execute: jo="senderID":"889953963751","ecb":"onNotificationGCM" V/PushPlugin(2512): execute: ECB=onNotificationGCM senderID=889953963751
    09-12 03:13:33.453: D/GCMRegistrar(2512): resetting backoff for com.ensis.hello
    09-12 03:13:33.613: V/GCMRegistrar(2512): Registering app com.ensis.hello of senders 889953963751
    09-12  W/PluginManager(2512): THREAD WARNING: exec() call to PushPlugin.register blocked the main thread for 181ms. Plugin should use CordovaInterface.getThreadPool().

【问题讨论】:

您在 GCM 中注册了吗? 是的,我已经注册了 您获得 GCM 注册 ID 了吗? 不,我没有得到任何 GCM 注册 ID,我正在发送 senderID 【参考方案1】:

这是推送通知流程:

    您的应用请求注册到远程 Apple 或 Google 服务器 如果注册成功,删除服务器会返回一个令牌,用于识别您设备上的此特定应用 您将此令牌发送到您的服务器,并保存它(例如在数据库上) 您发送推送通知(从您的服务器)调用 Apple 或 Google 服务,其中包含您要通知的用户的消息和令牌 这些服务推送到您的设备/应用程序的消息通知

您必须遵循所有这些步骤才能使推送通知正常工作。

对于android,您需要在通知处理程序的registered 事件中捕获注册ID(令牌):

function onNotificationGCM(e) 
    alert("comming");
    if('registered' === e.event) 
        // Successfully registered device.
        console.log("regID = " + e.regid);
        // save/send this registration id on your server
     else if('error' === e.event) 
        // Failed to register device.
    
;

对于 ios,您需要在 register 函数的 succesHandler 中捕获它。

更多信息请查看this example in the plugin repository。

【讨论】:

在successHandler函数中我得到的响应是“OK” 如何获取registrationid 我没有进入 alert("comming");

以上是关于手机间隙中的android推送通知没有收到通知的主要内容,如果未能解决你的问题,请参考以下文章

Android:点击推送通知不打开应用程序

没有收到推送通知,quickblox,android

关于 Worklight 中的推送通知?

在 Android 自定义操作系统中未收到 FCM 推送通知

有时一些 android 用户没有通过 GCM 收到推送通知

某些 android 设备未收到 GCM 推送通知