fix android message and notification event

This commit is contained in:
zhangqinghe 2015-04-15 16:59:32 +08:00
parent ce8ca9f8f8
commit 7fcefce3ce
6 changed files with 166 additions and 90 deletions

View File

@ -130,6 +130,14 @@
window.plugins.jPushPlugin.setTagsWithAlias(tags,alias) window.plugins.jPushPlugin.setTagsWithAlias(tags,alias)
window.plugins.jPushPlugin.setTags(tags) window.plugins.jPushPlugin.setTags(tags)
window.plugins.jPushPlugin.setAlias(alias) window.plugins.jPushPlugin.setAlias(alias)
+ 获取通知内容
event - jpush.openNotification
+ 获取自定义消息推送内容
event - jpush.receiveMessage
[通用API详细说明](document/Common_detail_api.md) [通用API详细说明](document/Common_detail_api.md)
@ -137,7 +145,6 @@
+ 获取 APNs通知 推送内容 + 获取 APNs通知 推送内容
event - jpush.receiveNotification event - jpush.receiveNotification
event - jpush.openNotification
+ 获取自定义消息推送内容 + 获取自定义消息推送内容
@ -175,6 +182,8 @@
+ 接收推送消息Receiver + 接收推送消息Receiver
//推荐使用event jpush.Message和jpush.openNotification
//下面这两个api 是兼容旧有的代码
window.plugins.jPushPlugin.receiveMessageInAndroidCallback(data) window.plugins.jPushPlugin.receiveMessageInAndroidCallback(data)
window.plugins.jPushPlugin.openNotificationInAndroidCallback(data) window.plugins.jPushPlugin.openNotificationInAndroidCallback(data)

View File

@ -205,6 +205,8 @@ android iOS
####错误码定义 ####错误码定义
|Code|描述|详细解释| |Code|描述|详细解释|
|-|-|-| |-|-|-|
|6001| 无效的设置tag/alias 不应参数都为 null|| |6001| 无效的设置tag/alias 不应参数都为 null||
@ -217,3 +219,107 @@ android iOS
|6008| tag/alias 超出总长度限制。|总长度最多 1K 字节| |6008| tag/alias 超出总长度限制。|总长度最多 1K 字节|
|6011| 10s内设置tag或alias大于3次| 短时间内操作过于频繁| |6011| 10s内设置tag或alias大于3次| 短时间内操作过于频繁|
### 获取通知内容
#### event - jpush.openNotification
点击通知进入应用程序时会出发改事件
#####代码示例
- 在你需要接收通知的的js文件中加入:
document.addEventListener("jpush.openNotification", onOpenNotification, false);
- onOpenNotification需要这样写
var alertContent
if(device.platform == "Android"){
alertContent=window.plugins.jPushPlugin.openNotification.alert;
}else{
alertContent = event.aps.alert;
}
alert("open Notificaiton:"+alertContent);
ps点击通知后传递的json object 保存在window.plugins.jPushPlugin.receiveNotification直接访问即可字段示例根据实际推送情况可能略有差别请注意
+ android
{"alert":"ding",
"extras":{
"cn.jpush.android.MSG_ID":"1691785879",
"app":"com.thi.pushtest",
"cn.jpush.android.ALERT":"ding",
"cn.jpush.android.EXTRA":{},
"cn.jpush.android.PUSH_ID":"1691785879",
"cn.jpush.android.NOTIFICATION_ID":1691785879,
"cn.jpush.android.NOTIFICATION_TYPE":"0"}}
+ iOS
{
"aps":{
"badge":1,
"sound":"default",
"alert":"今天去哪儿"
},
"_j_msgid":154604475
}
### 获取自定义消息推送内容
### 获取自定义消息推送内容
####event - jpush.receiveMessage
收到应用内消息时触发这个事件
`推荐使用事件的方式传递但同时保留了receiveMessageIniOSCallback的回调函数兼容以前的代码`
#####代码示例
- 在你需要接收通知的的js文件中加入:
document.addEventListener("jpush.receiveMessage", onReceiveMessage, false);
- onReceiveMessage需要这样写
var onReceiveMessage = function(event){
try{
var message = window.plugins.jPushPlugin.receiveMessage.message;
//var extras = window.plugins.jPushPlugin.extras
$("#messageResult").html(message);
}
catch(exception){
console.log("JPushPlugin:onReceiveMessage-->"+exception);
}
}
ps点击通知后传递的json object 保存在window.plugins.jPushPlugin.receiveNotification直接访问即可字段示例根据实际推送情况可能略有差别请注意
+ android
{"message":"今天去哪儿",
"extras"{
"cn.jpush.android.MSG_ID":"154378013",
"cn.jpush.android.CONTENT_TYPE":"",
"cn.jpush.android.EXTRA":{"key":"不添没有"}
}
}
+ iOS
{
"content":"今天去哪儿",
"extras":
{
"key":"不填写没有"
}
}

View File

@ -24,70 +24,7 @@
console.log(exception) console.log(exception)
} }
} }
#### event - jpush.openNotification
点击通知进入应用程序时会出发改事件
#####代码示例
- 在你需要接收通知的的js文件中加入:
document.addEventListener("jpush.openNotification", onOpenNotification, false);
- onOpenNotification需要这样写
var onOpenNotification = function(event){
try{
var alert = event.aps.alert;
console.log("JPushPlugin:onPpenNotification key aps.alert:"+alert);
}
catch(exception){
console.log("JPushPlugin:onPpenNotification"+exception);
}
}
### 获取自定义消息推送内容
####event - jpush.receiveMessage
收到应用内消息时触发这个事件
`推荐使用事件的方式传递但同时保留了receiveMessageIniOSCallback的回调函数兼容以前的代码`
#####代码示例
- 在你需要接收通知的的js文件中加入:
document.addEventListener("jpush.receiveMessage", onReceiveMessage, false);
- onReceiveMessage需要这样写
var onReceiveMessage = function(event){
try{
var eventMessage="{";
for(var key in event){
if(key=="type"){
break
}
eventMessage+=key+":"+JSON.stringify(event[key])+"\n"
console.log(key+":"+JSON.stringify(event[key]));
}
eventMessage+="}";
$("#messageResult").html(eventMessage);
}
catch(exception){
console.log("JPushPlugin:onReceiveMessage"+exception);
}
}

View File

@ -39,12 +39,17 @@
} }
var onOpenNotification = function(event){ var onOpenNotification = function(event){
try{ try{
var alertContent
var alertContent = event.aps.alert; if(device.platform == "Android"){
alertContent=window.plugins.jPushPlugin.openNotification.alert;
}else{
alertContent = event.aps.alert;
}
alert("open Notificaiton:"+alertContent); alert("open Notificaiton:"+alertContent);
} }
catch(exception){ catch(exception){
console.log("JPushPlugin:onPpenNotification"+exception); console.log("JPushPlugin:onOpenNotification"+exception);
} }
} }
var onReceiveNotification = function(event){ var onReceiveNotification = function(event){
@ -67,22 +72,14 @@
} }
var onReceiveMessage = function(event){ var onReceiveMessage = function(event){
try{ try{
var message = window.plugins.jPushPlugin.receiveMessage.message;
var eventMessage="{"; //var extras = window.plugins.jPushPlugin.extras
for(var key in event){
if(key=="type"){ $("#messageResult").html(message);
break
}
eventMessage+=key+":"+JSON.stringify(event[key])+"\n"
console.log(key+":"+JSON.stringify(event[key]));
}
eventMessage+="}";
$("#messageResult").html(eventMessage);
} }
catch(exception){ catch(exception){
console.log("JPushPlugin:onReceiveMessage"+exception); console.log("JPushPlugin:onReceiveMessage-->"+exception);
} }
} }
@ -92,7 +89,7 @@
window.plugins.jPushPlugin.init(); window.plugins.jPushPlugin.init();
window.plugins.jPushPlugin.getRegistrationID(onGetRegistradionID); window.plugins.jPushPlugin.getRegistrationID(onGetRegistradionID);
if(JPushPlugin.prototype.isPlatformIOS()){ if(device.platform == "Android"){
window.plugins.jPushPlugin.setDebugModeFromIos(); window.plugins.jPushPlugin.setDebugModeFromIos();
window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0); window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0);
}else{ }else{

View File

@ -126,8 +126,15 @@ public class JPushPlugin extends CordovaPlugin {
String js = String String js = String
.format("window.plugins.jPushPlugin.receiveMessageInAndroidCallback('%s');", .format("window.plugins.jPushPlugin.receiveMessageInAndroidCallback('%s');",
data.toString()); data.toString());
try { try {
instance.webView.sendJavascript(js); instance.webView.sendJavascript(js);
// String jsEvent=String
// .format("cordova.fireDocumentEvent('jpush.receiveMessage',%s)",
// data.toString());
// instance.webView.sendJavascript(jsEvent);
} catch (NullPointerException e) { } catch (NullPointerException e) {
} catch (Exception e) { } catch (Exception e) {
@ -142,13 +149,22 @@ public class JPushPlugin extends CordovaPlugin {
String js = String String js = String
.format("window.plugins.jPushPlugin.openNotificationInAndroidCallback('%s');", .format("window.plugins.jPushPlugin.openNotificationInAndroidCallback('%s');",
data.toString()); data.toString());
// {"alert":"ding",
// "extras":{
// "cn.jpush.android.MSG_ID":"1691785879",
// "app":"com.thi.pushtest",
// "cn.jpush.android.ALERT":"ding",
// "cn.jpush.android.EXTRA":{},
// "cn.jpush.android.PUSH_ID":"1691785879",
// "cn.jpush.android.NOTIFICATION_ID":1691785879,
// "cn.jpush.android.NOTIFICATION_TYPE":"0"}}
try { try {
instance.webView.sendJavascript(js); instance.webView.sendJavascript(js);
String jsEvent=String // String jsEvent=String
.format("cordova.fireDocumentEvent('jpush.openNotification',%s)", // .format("cordova.fireDocumentEvent('jpush.openNotification',%s)",
data.toString()); // data.toString());
instance.webView.sendJavascript(jsEvent); // instance.webView.sendJavascript(jsEvent);
} catch (NullPointerException e) { } catch (NullPointerException e) {
} catch (Exception e) { } catch (Exception e) {

View File

@ -1,8 +1,13 @@
var JPushPlugin = function(){ var JPushPlugin = function(){
}; };
//private plugin function //private plugin function
JPushPlugin.prototype.receiveMessage={}
JPushPlugin.prototype.openNotification={}
JPushPlugin.prototype.isPlatformIOS = function(){ JPushPlugin.prototype.isPlatformIOS = function(){
return device.platform == "iPhone" || device.platform == "iPad" || device.platform == "iPod touch" || device.platform == "iOS" return device.platform == "iPhone" || device.platform == "iPad" || device.platform == "iPod touch" || device.platform == "iOS"
} }
@ -140,8 +145,10 @@ JPushPlugin.prototype.receiveMessageIniOSCallback = function(data){
JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data){ JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data){
try{ try{
console.log("JPushPlugin:receiveMessageInAndroidCallback"); console.log("JPushPlugin:receiveMessageInAndroidCallback");
var bToObj = JSON.parse(data);
this.openNotification=bToObj
cordova.fireDocumentEvent('jpush.receiveMessage',null);
//console.log(data); //console.log(data);
//ecvar bToObj=JSON.parse(data);
//var message = bToObj.message; //var message = bToObj.message;
//var extras = bToObj.extras; //var extras = bToObj.extras;
@ -158,8 +165,12 @@ JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data){
// //
JPushPlugin.prototype.openNotificationInAndroidCallback = function(data){ JPushPlugin.prototype.openNotificationInAndroidCallback = function(data){
try{ try{
console.log("JPushPlugin:openNotificationInAndroidCallback"); console.log("JPushPlugin:openNotificationInAndroidCallback");
console.log(data); var bToObj = JSON.parse(data);
this.receiveNotification=bToObj;
cordova.fireDocumentEvent('jpush.openNotification',null);
//console.log(data);
//var bToObj = JSON.parse(data); //var bToObj = JSON.parse(data);
//var alert = bToObj.alert; //var alert = bToObj.alert;
//var extras = bToObj.extras; //var extras = bToObj.extras;