java集成个推

个推相关业务实现

集成方案

移动端

 

后端(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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集成Netty可以实现实时送。Netty是一个基于NIO的客户端/服务器框架,具有高性能、可伸缩性和可自定义的特点,非常适合构建实时送系统。 首先,使用Java编写一个Netty服务器。在服务器端,你需要创建一个ChannelInitializer来配置服务器的通道。这个初始化器将设置一个ChannelPipeline,该Pipeline将处理进入或离开服务器的消息。你可以添加各种自定义Handler来处理不同类型的消息。在这种情况下,你将添加一个用于实时送的Handler。 其次,创建一个客户端应用程序,该应用程序连接到服务器并接收实时送消息。客户端还需要一个ChannelInitializer来配置客户端的通道。在这个初始化器中,你可以添加一个用于处理接收到的实时送消息的Handler。 当客户端连接到服务器时,服务器会触发ChannelActive事件。在这个事件中,你可以将客户端的Channel保存在一个数据结构中,以便以后可以向该客户端发送实时送消息。 当服务器有新的实时送消息时,你可以从保存的客户端Channel中选择合适的Channel,并向它们发送消息。这可以通过服务器上的送方法来实现,该方法将遍历保存的所有客户端Channel,并向每个Channel发送消息。 客户端接收到实时送消息时,可以在相应的Handler中处理该消息,并作出相应的响应。 需要注意的是,实时送需要考虑到服务器和客户端之间的数据量和频率。如果数据量很大或实时送频率很高,可能需要使用一些调节机制来限制送的频率或数据量,以防止服务器过载或网络拥塞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值