You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.3 KiB
122 lines
3.3 KiB
// 监听plusready事件 |
|
document.addEventListener("plusready", function() { |
|
//监听推送消息点击事件 |
|
plus.push.addEventListener("click", function(msg) { |
|
//解析数据 |
|
var jsonPayload = getPayload('click', msg); |
|
//业务逻辑 |
|
openWindowByPushType(jsonPayload); |
|
}); |
|
|
|
//监听在线推送消息点击事件 |
|
plus.push.addEventListener("receive", function(msg) { |
|
//解析数据 |
|
var jsonPayload = getPayload('receive', msg); |
|
//如果是本地消息进行业务逻辑,否则创建本地消息 |
|
if(jsonPayload.msgType == 'LocalMSG') { |
|
//业务 |
|
} else { |
|
createLocalPushMsg(msg.content, jsonPayload); |
|
} |
|
}); |
|
}); |
|
|
|
/*** |
|
* 解析透传数据 |
|
* @param eventType |
|
* @oaram msg |
|
* return payload |
|
*/ |
|
function getPayload(eventType, msg) { |
|
var os = plus.os.name; |
|
//安卓push触发click和receive事件获取数据的方法都是String转JSON |
|
if(os == 'Android') { |
|
if(typeof msg.payload == 'object') { |
|
//直接获取msg的payload |
|
return msg.payload; |
|
} |
|
if(typeof msg.payload == 'string') { |
|
//String转JSON |
|
return JSON.parse(msg.payload); |
|
} |
|
} |
|
|
|
if(os == 'iOS') { |
|
//将msg的二级payload对象转为JSON,然后再获取第三级payload |
|
if(eventType == 'click') { |
|
//解析一级的payload对象 |
|
var onePayload = JSON.parse(msg.payload); |
|
//判断消息类型 |
|
if(onePayload.msgType == 'LocalMSG') { |
|
//本地消息,直接返回String转JSON |
|
return JSON.parse(msg.payload); |
|
} else { |
|
return JSON.parse(msg.payload.payload).payload; |
|
} |
|
} |
|
if(eventType == 'receive') { |
|
if(typeof msg.payload == 'object') { |
|
//直接获取msg的payload |
|
return msg.payload; |
|
} |
|
if(typeof msg.payload == 'string') { |
|
//String转JSON |
|
return JSON.parse(msg.payload); |
|
} |
|
} |
|
} |
|
} |
|
|
|
/** |
|
* 本地创建一条推送消息 |
|
*/ |
|
function createLocalPushMsg(content, payload) { |
|
//本地信息的标识 |
|
payload.msgType = 'LocalMSG'; |
|
plus.push.createMessage(content, JSON.stringify(payload), {}); |
|
} |
|
|
|
function openWindowByPushType(payload) { |
|
//透传的订单id |
|
var orderId = payload.orderId; |
|
//透传的广告id |
|
var adId = payload.adId; |
|
//推送类型 |
|
var pushType = payload.pushType; |
|
|
|
//带OTC_ORDER前缀的,跳转至法币订单详情页面 |
|
if(pushType.indexOf("OTC_ORDER") != -1) { |
|
var orderPage = plus.webview.getWebviewById('html/OTC/html/payment.html'); |
|
//判断页面是否存在 |
|
if(orderPage == null) { |
|
app.openWin("html/OTC/html/payment.html", "html/OTC/html/payment.html", {}, { |
|
orderId: orderId |
|
}); |
|
} else { |
|
orderPage.evalJS("selectByOrderId(" + JSON.stringify(orderId) + ");"); |
|
} |
|
} |
|
|
|
//带OTC_AD前缀的,跳转至法币订单详情页面 |
|
if(pushType.indexOf("OTC_AD") != -1) { |
|
var adPage = plus.webview.getWebviewById('html/OTC/html/ad_manager.html'); |
|
//判断页面是否存在 |
|
if(adPage == null) { |
|
app.openWin("html/OTC/html/ad_manager.html", "html/OTC/html/ad_manager.html", {}, { |
|
adId: adId |
|
}); |
|
} else { |
|
adPage.evalJS("listUserAds();"); |
|
} |
|
} |
|
//带CCT_HISTORY前缀的,跳转至成交历史页面 |
|
if(pushType.indexOf("CCT_HISTORY") != -1) { |
|
var historyPage = plus.webview.getWebviewById('html/cct/html/history.html'); |
|
//判断页面是否存在 |
|
if(historyPage == null) { |
|
app.openWin("html/cct/html/history.html", "html/cct/html/history.html", {}, {}); |
|
} else { |
|
historyPage.evalJS("listUserDetail();"); |
|
} |
|
} |
|
} |