个推相关业务实现
集成方案
移动端
后端(JAVA)
环境
JDK 1.6+
Maven依赖
<dependency> <groupId>com.gexin.platform</groupId> <artifactId>gexin-rp-sdk-http</artifactId> <version>4.1.1.2</version> </dependency>
<repositories> <repository> <id>getui-nexus</id> <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url> </repository> </repositories>
群推
应用场景
商品打折、推送广告等活动可以使用推送功能,通过推送进入应用后直接跳转商品详情页
实现方式
结合个推官方档:http://docs.getui.com/getui/server/java/summary/
1.获取应用基本信息(这里使用配置文件配置)
push: appid: jnNW0CDuxxxxxx1vS21tM appkey: PAhBhhvxxxxxc01AZzpZ5 appSecret: VASdqVLxxxxxQqzqmUyw appStart: 1 ##是否启用推送
2.配置通知基本信息
NotificationTemplate template = new NotificationTemplate(); template.setAppId(appId);//设置appId; template.setAppkey(appKey);//设置appKey Style0 style = new Style0(); style.setTitle("请输入通知栏标题");//设置推送标题 style.setText("请输入通知栏内容");//设置推送内容 style.setLogo("push.png"); // 设置推送图标 style.setLogoUrl(""); // 配置通知栏网络图标 style.setRing(true); // 设置响铃 style.setVibrate(true); // 设置震动 style.setClearable(true);//设置可清除 template.setStyle(style); template.setTransmissionType(1); // 透传消息设置,收到消息是否立即启动应用: 1为立即启动,2则广播等待客户端自启动 template.setTransmissionContent("请输入您要透传的内容");
3.定义"AppMessage"类型消息对象,设置推送消息有效期等推送参数
AppMessage message = new AppMessage(); message.setData(template); message.setAppIdList(appIds); message.setOffline(true); message.setOfflineExpireTime(1000 * 600); //离线有效时间 时间单位为毫秒 默认1小时
4.设置ios通道相关信息
// IOS通道下发策略 message.setStrategyJson("{\"ios\":4}"); message.setPushNetWorkType(0);//推送网络要求0:联网方式不限;1:仅wifi;2:仅移动网络 默认0
5.设置推送手机类型、省份等相关信息
AppConditions cdt = new AppConditions(); // 手机类型 List<String> phoneTypeList = new ArrayList<String>(); phoneTypeList.add("IOS"); phoneTypeList.add("ANDROID"); // 省份 List<String> provinceList = new ArrayList<String>(); // 参见region_code.data provinceList.add("33010000");//杭州市 provinceList.add("51010000");//成都市 cdt.addCondition(AppConditions.PHONE_TYPE, phoneTypeList, AppConditions.OptType.or); cdt.addCondition(AppConditions.REGION, provinceList, AppConditions.OptType.or); message.setConditions(cdt); message.setSpeed(100);//定速推送 例如100,个推控制下发速度在100条/秒左右 //message.setPushTime("202004202359"); //定时推送 格式要求为yyyyMMddHHmm 需要申请开通套餐
6.执行群推
IGtPush push = new IGtPush(appKey, masterSecret); //执行推送 //IPushResult ret = push.pushMessageToApp(message); //无别名推送 IPushResult ret = push.pushMessageToApp(message,"任务别名_toApp"); //有别名推送
部分推
应用场景
只推送部分用户,例如会员活动,针对会员用户组件部分推送
实现方式
结合个推官方档:http://docs.getui.com/getui/server/java/summary/
1.移动端登陆接口传入参数cid(客户端id)
2.后端登陆接口登陆成功后获取cid,入库
//将客户端id入库 User user = userMapper.getUser(userName,password); userMapper.updateUserCid(cid,user.getUserId);
3.指向指定的用户列表进行推送前。需要用户创建消息公共体,为toList推送前置步骤
ListMessage message = new ListMessage(); message.setData(template); // 设置消息离线,并设置离线时间 message.setOffline(true); // 离线有效时间,单位为毫秒 message.setOfflineExpireTime(24 * 1000 * 3600); // IOS通道下发策略 message.setStrategyJson("{\"ios\":4}"); // taskId用于在推送时去查找对应的message String taskId = push.getContentId(message);
4.在批量推送时,先获取用户的cid,然后进行批量推送
//需要推送的客户端id集合 private static List<String> cidList; //推送方法 private static IPushResult pushToList(){ IGtPush push = new IGtPush(appKey, masterSecret); //获取会员用户的cid集合 cidList = userMapper.getCidsByVip(); List targets = new ArrayList(); //配置所有需要推送的用户Target for(String cid : cidList){ Target target = new Target(); target.setAppId(appId); target.setClientId(cid); targets.add(target); } IPushResult ret = push.pushMessageToList(taskId, targets); }