使用个推向App端推送消息

本文介绍了个推SDK的集成步骤及如何在Java项目中实现消息推送功能。包括了必要的依赖配置、消息模板设置及单个用户消息推送的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先在个推官网上申请账号,里面有java的SDK和教程、

服务端代码:

pom.xml配置:

<!--移动端消息推送(个推)start-->
<dependency>
    <groupId>com.gexin.platform</groupId>
    <artifactId>gexin-rp-sdk-base</artifactId>
    <version>4.0.0.22</version>
</dependency>
<dependency>
    <groupId>com.gexin.platform</groupId>
    <artifactId>gexin-rp-sdk-http</artifactId>
    <version>4.0.1.17</version>
</dependency>
<dependency>
    <groupId>com.gexin.platform</groupId>
    <artifactId>gexin-rp-sdk-template</artifactId>
    <version>4.0.0.16</version>
</dependency>
<dependency>
    <groupId>com.gexin</groupId>
    <artifactId>gexin-rp-fastjson</artifactId>
    <version>1.0.0.1</version>
</dependency>
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>2.5.0</version>
</dependency>
<!--移动端消息推送(个推)end-->
jar包从个推官网上下载后放到自己的manve仓库在中
java代码:
package com.elink.base.util;



import com.elink.base.entity.Message;
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.http.IGtPush;
import com.gexin.rp.sdk.template.NotificationTemplate;
import com.gexin.rp.sdk.template.style.Style0;


/**
 * Created by nxw on 2018/7/11.
 * 移动端消息推送工具类
 */
public class AppPushUtils {
    //定义常量, appId、appKey、masterSecret  在"个推控制台"中获得的应用配置
    // 由IGetui管理页面生成,是您的应用与SDK通信的标识之一,每个应用都对应一个唯一的AppID
    private static String appId = "eAKHYriq2b69NGnAO9CaaA";
    // 预先分配的第三方应用对应的Key,是您的应用与SDK通信的标识之一。
    private static String appKey = "nfDkSekZq66QrPFgd9Q3r";
    // 个推服务端API鉴权码,用于验证调用方合法性。在调用个推服务端API时需要提供。(请妥善保管,避免通道被盗用)
    private static String masterSecret = "hcmvRMYo6C7YPSSTO9KuX6";

    // 设置通知消息模板
	/*
	 * 1. appId
	 * 2. appKey
	 * 3. 要传送到客户端的 msg
	 * 3.1 标题栏:key = title,
	 * 3.2 通知栏内容: key = titleText,
	 * 3.3 穿透内容:key = transText
	 */
    private static NotificationTemplate getNotifacationTemplate(String appId, String appKey, Message msg){

        // 在通知栏显示一条含图标、标题等的通知,用户点击后激活您的应用
        NotificationTemplate template = new NotificationTemplate();
        // 设置appid,appkey
        template.setAppId(appId);
        template.setAppkey(appKey);
        // 穿透消息设置为,1 强制启动应用
        template.setTransmissionType(1);
        // 设置穿透内容
        System.out.println(msg.getTitle() + "::" + msg.getText() + "::" + msg.getRemark());
        template.setTransmissionContent(msg.getRemark());
        // 设置style
        Style0 style = new Style0();
        // 设置通知栏标题和内容
        style.setTitle(msg.getTitle());
        style.setText(msg.getText());
        // 设置通知,响铃、震动、可清除
        style.setRing(true);
        style.setVibrate(true);
        style.setClearable(true);
        // 设置
        template.setStyle(style);
        return template;
    }
    // 对单个用户推送消息
	/*
	 * 1. cid
	 * 2. 要传到客户端的 msg
	 * 2.1 标题栏:key = title,
	 * 2.2 通知栏内容: key = titleText,
	 * 2.3 穿透内容:key = transText
	 */
    public static void sendAppMsg(String cid, Message msg) {
        // 代表在个推注册的一个 app,调用该类实例的方法来执行对个推的请求
        IGtPush push = new IGtPush(appKey, masterSecret);
        // 创建信息模板
        NotificationTemplate template = getNotifacationTemplate(appId, appKey, msg);
        //定义消息推送方式为,单推
        SingleMessage message = new SingleMessage();
        // 设置推送消息的内容
        message.setData(template);
        // 设置推送目标
        Target target = new Target();
        target.setAppId(appId);
        // 设置cid
        target.setClientId(cid);
        // 获得推送结果
        System.out.println("正在推送app消息...");
        IPushResult result = push.pushMessageToSingle(message, target);
        System.out.println(result.getResponse().toString());
		/*
		 * 1. 失败:{result=sign_error}
		 * 2. 成功:{result=ok, taskId=OSS-0212_1b7578259b74972b2bba556bb12a9f9a, status=successed_online}
		 * 3. 异常
		 */

    }
   
}
里面的message对象可以根据自己的项目的消息类进行修改。
	调用方法:
//添加消息
			Message message=new Message();
			message.setTableName("eventinfo");
			message.setSendName(user.getRealName());
			message.setSendTime(new Date());
			message.setSendId(user.getId());
			message.setRemark("事件上报消息");
			message.setTitle("您有一条事件上报消息待处理!");
			message.setText(info.getEventName());
			message.setCreateTime(new Date());
			message.setpId(info.getId());
			info.setMsg(message);

			info=eventInfoDao.save(info);
			List<SysUser> users=info.getRole().getUsers();
			for (SysUser u:users) {
				if(StringUtils.isNotEmptyObject(u.getCid())){
					AppPushUtils.sendAppMsg(u.getCid(),info.getMsg());
				}
			}

用户的cId通过移动端:

var cId = plus.push.getClientInfo().clientid; 

移动端框架使用mui框架










jar包从个推官网上下载后放到自己的manve仓库在中
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

衹染青春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值