dcloud开发混合app-消息推送push
2017-03-18 07:45
429 查看
一、这里使用个推,先注册个推账号,申请一个应用。
二、在manifest.json中添加sdk配置和模块权限配置
三、添加推送消息事件监听器
先看一下官方文档:
void plus.push.addEventListener( event, listener, Boolean );
说明:
添加推送消息事件监听器,当指定推送事件发出时触发。
参数:
type: ( String ) 必选 事件类型
支持事件类型:”click”-从系统消息中心点击消息启动应用事件;”receive”-应用从推送服务器接收到推送消息事件。
listener: ( PushReceiveCallback ) 必选 事件监听器回调函数,在接收到推送消息时调用
capture: ( Boolean ) 可选 是否捕获事件,此处可忽略
返回值:
void : 无
PushReceiveCallback
客户端接收到推动消息的回调函数
void onReceive( msg ) {
// Recieved push message code.
}
参数:
msg: ( String ) 必选 接收到的推送信息msg
返回值:
void : 无
PushMessage
JSON对象,推送消息对象
属性:
title: (String 类型 )推送消息显示的标题
平台支持
Android - 2.2+ (支持)
iOS - ALL (支持): 。
content: (String 类型 )推送消息显示的内容
payload: (JSON 类型 )推送消息承载的数据
如果推送消息中传输的数据不符合JSON格式,则作为String类型数据保存。
aps: (JSON 类型 )Apple APNS推送协议数据
平台支持
Android - 2.2+ (不支持): 不支持此数据,返回值为undefined。
iOS - 5.0+ (支持): 仅封装标准APNS协议中的数据,其它数据封装在payload中。如果是通过本地API创建的消息此属性值则为undefined。
实际代码使用的情况是,PushReceiveCallback中的msg最好是PushMessage的格式,在使用苹果或者安卓才都比较符合type自己的对receive或者click的说明。
四、要对单个设备进行推送,还要先绑定clientid。
//获取个推客户端信息主要是clientid,并提交给服务器与绑定用户
//如果有多个设备用同一个账号登录了,保证用户最后打开的设备收到推送或者都收到推送,而不需要重新登录
注意:后台服务器的代码虽然个推提供了很多方法推送,但是只有一种在苹果安卓都可以接收,而且一定要是固定的json格式“{title:”,content:”,payload:”}”,大小写都不能错,而且不要使用苹果的消息记数功能,因为只能加没办法控制减。
五、服务器发送单个用户推送
message {title:”通知标题”,content:”通知内容”,payload:”通知去干嘛这里可以自定义”}
二、在manifest.json中添加sdk配置和模块权限配置
三、添加推送消息事件监听器
先看一下官方文档:
void plus.push.addEventListener( event, listener, Boolean );
说明:
添加推送消息事件监听器,当指定推送事件发出时触发。
参数:
type: ( String ) 必选 事件类型
支持事件类型:”click”-从系统消息中心点击消息启动应用事件;”receive”-应用从推送服务器接收到推送消息事件。
listener: ( PushReceiveCallback ) 必选 事件监听器回调函数,在接收到推送消息时调用
capture: ( Boolean ) 可选 是否捕获事件,此处可忽略
返回值:
void : 无
PushReceiveCallback
客户端接收到推动消息的回调函数
void onReceive( msg ) {
// Recieved push message code.
}
参数:
msg: ( String ) 必选 接收到的推送信息msg
返回值:
void : 无
PushMessage
JSON对象,推送消息对象
属性:
title: (String 类型 )推送消息显示的标题
平台支持
Android - 2.2+ (支持)
iOS - ALL (支持): 。
content: (String 类型 )推送消息显示的内容
payload: (JSON 类型 )推送消息承载的数据
如果推送消息中传输的数据不符合JSON格式,则作为String类型数据保存。
aps: (JSON 类型 )Apple APNS推送协议数据
平台支持
Android - 2.2+ (不支持): 不支持此数据,返回值为undefined。
iOS - 5.0+ (支持): 仅封装标准APNS协议中的数据,其它数据封装在payload中。如果是通过本地API创建的消息此属性值则为undefined。
实际代码使用的情况是,PushReceiveCallback中的msg最好是PushMessage的格式,在使用苹果或者安卓才都比较符合type自己的对receive或者click的说明。
//推送 添加监听从系统消息中心收到某条消息启动应用事件 //使用dcloud固定json格式“{title:'',content:'',payload:''}”时, //安卓无效,苹果有效但是不会有在消息中心显示 plus.push.addEventListener("receive", receiveOrClickPushMessage, false); //推送 添加监听从系统消息中心点击某条消息启动应用事件 //使用dcloud固定json格式“{title:'',content:'',payload:''}”时, //安卓会在消息中心显示且点击有效,苹果离线状态下点击有效 plus.push.addEventListener("click", receiveOrClickPushMessage, false); /** * 接收或点击推送来的消息 */ var receiveOrClickPushMessage = function(msg){ ... }
四、要对单个设备进行推送,还要先绑定clientid。
//获取个推客户端信息主要是clientid,并提交给服务器与绑定用户
//如果有多个设备用同一个账号登录了,保证用户最后打开的设备收到推送或者都收到推送,而不需要重新登录
/** * 获取个推clientinfo,绑定用户信息 */ var t = 0; var getuiCliendInfo = function(){ var clientInfo = plus.push.getClientInfo();//获取clientinfo if(isValidObject(clientInfo) && isValidString(clientInfo.clientid) && isValidString(clientInfo.token)){ var clientId = clientInfo.clientid;//clientid需要发给服务器与用户进行绑定 var osname = plus.os.name;//plus.os.name如果消息要区分系统,还需要绑定设备系统 mui.ajax(...);//提交服务器绑定用户信息,退出时最好还要解绑 }else{//有时也不是一次就能获取成功,可能会没有clientid,重新获取 if(t<200){//最多循环200次 var m=10,n=2; var sec = parseInt(Math.random()*(m-n)+n,10);//2-10秒 mui.later(getuiCliendInfo, sec*1000);//延后执行。 t++; } } }
注意:后台服务器的代码虽然个推提供了很多方法推送,但是只有一种在苹果安卓都可以接收,而且一定要是固定的json格式“{title:”,content:”,payload:”}”,大小写都不能错,而且不要使用苹果的消息记数功能,因为只能加没办法控制减。
五、服务器发送单个用户推送
message {title:”通知标题”,content:”通知内容”,payload:”通知去干嘛这里可以自定义”}
package com.chhuang.huaao.thread; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.alibaba.fastjson.JSONObject; import com.chhuang.huaao.consts.HaConstact; import com.chhuang.utils.Assert; import com.chhuang.utils.config.SysConfig; import com.gexin.rp.sdk.base.IPushResult; import com.gexin.rp.sdk.base.impl.SingleMessage; import com.gexin.rp.sdk.base.impl.Target; import com.gexin.rp.sdk.exceptions.RequestException; import com.gexin.rp.sdk.http.IGtPush; import com.gexin.rp.sdk.template.TransmissionTemplate; /** * 个推线程 * @author CHHUANG * */ public class GeTuiThread implements Runnable { private static final Log log = LogFactory.getLog(GeTuiThread.class); private String clientId; private JSONObject message; /** * * @param clientId * @param message {title:"通知标题",content:"通知内容",payload:"通知去干嘛这里可以自定义"} */ public GeTuiThread(String clientId, JSONObject message){ this.clientId = clientId; this.message = message; } @Override public void run() { try { if(Assert.isInvalidString(clientId) || message==null){ log.debug("客户端还不支持推送或消息为空"); return ; } String host = SysConfig.getValue(HaConstact.GETUI_URL); String appId = SysConfig.getValue(HaConstact.GETUI_APP_ID); String appKey = SysConfig.getValue(HaConstact.GETUI_APP_KEY); String masterSecret = SysConfig.getValue(HaConstact.GETUI_MASTER_SECRET_); //消息模板 TransmissionTemplate template = new TransmissionTemplate(); template.setAppId(appId); template.setAppkey(appKey); // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动 template.setTransmissionType(1); template.setTransmissionContent(message.toString()); //消息体 SingleMessage message = new SingleMessage(); message.setOffline(true); // 离线有效时间,单位为毫秒,可选 message.setOfflineExpireTime(7 * 24 * 3600 * 1000); message.setData(template); // 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发 message.setPushNetWorkType(0); //目标对象 Target target = new Target(); target.setAppId(appId); target.setClientId(clientId); IGtPush push = new IGtPush(host, appKey, masterSecret); IPushResult ret = null; try { ret = push.pushMessageToSingle(message, target); } catch (RequestException e) { e.printStackTrace(); ret = push.pushMessageToSingle(message, target, e.getRequestId()); } if (ret != null) { log.debug("推送结果:"+ret.getResponse().toString()); } else { log.debug("推送服务器响应异常"); } } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送(最新)
- 为友盟消息推送开发的PHP SDK(composer版):可以按省发Android push
- IOS开发之实现App消息推送
- IOS8开发之实现App消息推送
- Android开发 消息推送 Push
- xcode6开发ios8app应用程序,如何进行APNs推送消息(获取device token)和集成激光推送教程
- IOS开发之实现App消息推送(最新)
- IOS开发之证书申请和实现App消息推送(最新)
- IOS开发之实现App消息推送
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送
- IOS开发之实现App消息推送(最新)
- IOS开发之实现App消息推送(最新)
- iOS开发_使用百度云推送实现app消息推送