手机间隙中的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 自定义操作系统中未收到 FCM 推送通知