使用hbuilder开发的app集成的个推
来源:互联网 发布:中国导弹厉害吗 知乎 编辑:程序博客网 时间:2024/04/29 16:22
前言:
最近使用hbuilder开发的一个app中用到了个推功能,在此期间,翻看了DCloud和百度上一些有关个推的问题,目前这种例子太少,以至于遇到问题,百度也搜不到标准答案。
这次后台用的java语言,app用的mui框架,推送目标既有android,也有ios。
首先,在hbuilder上集成个推前,先仔细参照
manifest.json
中plus.push推送SDK配置指南(下图)
阅读完配置指南,接下来:
1、你可以先在个推开放平台,使用平台自带的demo,安装到自己手机中,在个推官网测试推送,这个非常简单,这里不在说明。
2、新建一个带有各种H5+例子的app项目,自己测试推送。
3、在个推开放平台新建应用,自动获取到appid,appkey等,
然后配置好下图中android的应用标识,需要ios推送再配置好ios应用证书(ios注册证书的流程在DCloud中有说明),
在需要集成个推的项目中,配置好appid,appkey等(注意有些地方要一致,配置说明教程中都有,自己注意),
打包发布,安装应用。
安装完应用后,在个推官网下载java版sdk(下图)
参照API文档>>快速入门.pdf中的流程,
使用javaSDK测试推送,各项无误的话,很简单就能推送成功(注意:流程中使用的是 对指定应用群推消息)。
最后把所有文件阅读一遍,熟悉各个功能和接口。
推送模板中有4种,只有透传消息模板适合ios系统,
博主为了android和ios通用,所以选择了这一模板,各位可以根据自己情况自行选择。
消息推送方式中有8种,
博主根据业务需求选择的是对指定列表用户推送消息。
代码直接复制到后台。
前台可以把配置说明中(下图)的代码修改,放到自己项目中。
最后需要打包测试,真机运行不支持推送。
如何获取到实际的clientid或者token,在H5+功能接口中有说明;
plus.push.getClientInfo().clientid;
plus.push.getClientInfo().token;clientid和token也需要实际打包后获取,真机测试可能会不一致。
最后说明几点:
1、android刚打完包可能需要滞后几分钟才能获取到clientid的值。
2、android系统下,应用的进程被kill后,无法接收消息,所以需要保证其进程运行状态下测试。
应用在线时,系统通知栏会显示推送消息。
应用不在线时,手机上需要有其他一个APP(已经集成了个推sdk的应用(比如滴滴打车,去哪儿等)在线,应用才可以收到消息。
应用进程kill后还有一种方式收到推送消息:唤醒拉进程(这个没试过)。
3、ios系统下,
应用在线时,推送的消息不会进入系统通知栏。
如果不是通过APS通道发送的,页面中需要监听“receive”事件。
如果是通过APS通道发送的,需要在在“receive”事件回调的“PushMesage”对象中获取“aps”属性的值。
应用不在线时,后台发送的推送先发送到ios的APS服务器上,其次转发到终端应用上。
后台代码:
import java.util.ArrayList;import java.util.List;import com.gexin.rp.sdk.base.IPushResult;import com.gexin.rp.sdk.base.impl.ListMessage;import com.gexin.rp.sdk.base.impl.Target;import com.gexin.rp.sdk.base.payload.APNPayload;import com.gexin.rp.sdk.http.IGtPush;import com.gexin.rp.sdk.template.APNTemplate;import com.gexin.rp.sdk.template.NotificationTemplate;public class test{ // 定义常量, appId、appKey、masterSecret private static String appId = ""; private static String appKey = ""; private static String masterSecret = ""; //android的clientid static String clientid = ""; //ios的token static String token = ""; static String host = "http://sdk.open.api.igexin.com/apiex.htm"; @SuppressWarnings("deprecation") public static NotificationTemplate temp() { NotificationTemplate template = new NotificationTemplate(); // 设置APPID与APPKEY template.setAppId(appId); template.setAppkey(appKey); // 设置通知栏标题与内容 template.setTitle("安卓推送标题"); template.setText("安卓推送内容"); // 配置通知栏图标 template.setLogo("icon.png"); // 配置通知栏网络图标 template.setLogoUrl(""); // 设置通知是否响铃,震动,或者可清除 template.setIsRing(true); template.setIsVibrate(true); template.setIsClearable(true); // 透传消息设置,1为强制启动应用,客户端接收到消息后就会立即启动应用;2为等待应用启动 template.setTransmissionType(2); template.setTransmissionContent("{'title':'安卓透传标题','content':'安卓透传内容','payload':'安卓透传数据'}"); return template; } @SuppressWarnings({ "unchecked", "rawtypes" }) public String pushToAndroid() { // 配置返回每个用户返回用户状态,可选 System.setProperty("gexin.rp.sdk.pushlist.needDetails", "true"); IGtPush push = new IGtPush(host, appKey, masterSecret); // 通知透传模板 NotificationTemplate template = temp(); ListMessage message = new ListMessage(); message.setData(template); // 设置消息离线,并设置离线时间 message.setOffline(true); // 离线有效时间,单位为毫秒,可选 message.setOfflineExpireTime(24 * 1000 * 3600); // 配置推送目标 List targets = new ArrayList(); if (clientid.indexOf(",") != -1) { String[] cid = clientid.split(","); for (int i = 0; i < cid.length; i++) { Target target = new Target(); target.setAppId(appId); target.setClientId(cid[i]); targets.add(target); } } else { Target target = new Target(); target.setAppId(appId); target.setClientId(clientid); targets.add(target); } try { // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message); IPushResult ret = push.pushMessageToList(taskId, targets); System.out.println(ret.getResponse().toString()); return ret.getResponse().toString(); } catch (Exception e) { e.printStackTrace(); return ""; } } public String pushToIos() { IGtPush push = new IGtPush(host, appKey, masterSecret); APNTemplate t = new APNTemplate(); APNPayload apnpayload = new APNPayload(); apnpayload.setSound(""); APNPayload.DictionaryAlertMsg alertMsg = new APNPayload.DictionaryAlertMsg(); //通知文本消息标题 alertMsg.setTitle("aaaaaa"); //通知文本消息字符串 alertMsg.setBody("bbbb"); //对于标题指定执行按钮所使用的Localizable.strings,仅支持IOS8.2以上版本 alertMsg.setTitleLocKey("ccccc"); //指定执行按钮所使用的Localizable.strings alertMsg.setActionLocKey("ddddd"); apnpayload.setAlertMsg(alertMsg); t.setAPNInfo(apnpayload); ListMessage message = new ListMessage(); message.setData(t); String contentId = push.getAPNContentId(appId, message); System.out.println(contentId); List<String> dtl = new ArrayList<String>(); dtl.add(token); System.setProperty("gexin.rp.sdk.pushlist.needDetails", "true"); IPushResult ret = push.pushAPNMessageToList(appId, contentId, dtl); System.out.println(ret.getResponse()); return ret.getResponse().toString(); }}
有问题可以留言给我。
- 使用hbuilder开发的app集成的个推
- HBuilder开发的APP使用个推推送消息
- 关于Android Studio集成Hbuilder开发个推项目不能获取Clientid的问题说明
- 关于使用个推和hbuilder做推送的研究
- mui 开发知识 积累总结 --------------Hbuilder APP 个推服务
- 了解使用HBuilder进行H5的web和app开发
- HBuilder:推开前端开发App的大门
- 个推SDK的集成
- HBuilder+个推的推动消息(一)
- Hbuilder,使用mui,HTML5 plus 开发Android,IOS的APP始末
- 利用HBuilder开发基于MUI的H5+ app中使用百度地图定位功能
- 个推集成的那点事
- hbuilder(js+html+css)开发的APP效果实例
- HBuilder开发的app中打开pdf文件
- HBuilder 的使用1
- HBuilder 的使用2
- hbuilder 个推登记应用
- iOS个推的使用
- 我们怎样去调整一个函数
- Android IPC之AIDL的使用
- c++引用相关知识点
- Three.JS鼠标移动元素
- TCP/IP(6)--TCP协议详解
- 使用hbuilder开发的app集成的个推
- 在使用vux框架时用v-if出的问题
- bat脚本读取配置文件
- R语言---分布检验
- javaSE_05Java中方法(函数)与重载、递归
- HTML元素属性处理方法
- 西瓜的编译原理作业
- Linux common clock framework(2)_概述
- css中清除浮动