个推官网直接推送
1,在个推官网注册个账号
注册地址:https://dev.getui.com/dos4.0/index.html#register
注册完进入配置页面,对应用进行配置,框中的几个地方接下来要用到,应用名称一定要跟开发的应用名称一致
图1
2,添加个推模块权限,如图
图2
3,图1中的几个值记录下来,manifest的配置文件中对应填写,如下图:
图3
4,图3和本步骤是重复的,直接在这里填写也行
图4
5,接下来我们就可以推送消息了,打包apk,在手机端运行起来先,然后我们回到个推网站,会发现,在线用户人数变为1,这就说明个推和我们手机端已经连接成功了,可以进行消息推送了。
6,直接用个推网站尝试推送消息
7,消息发送完我们在手机端的状态栏就会收到如下消息
至此说明我们的个推顺利进行完毕
下面是用java后台定时任务的方式推送消息
1,添加必须的jar包
我是用maven管理的,maven的pom文件添加
<!-- 个推消息 -->
<repositories>
<repository>
<id>getui-nexus</id>
<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
</repository>
</repositories>
<!-- 个推消息 -->
<dependency>
<groupId>com.gexin.platform</groupId>
<artifactId>gexin-rp-sdk-http</artifactId>
<version>4.0.1.2</version>
</dependency>
结构如图
但是还是会少template这个包,需要手动加到项目中
2,方法调用
以下是针对单个客户端发送消息,如果要给多个客户端发送,也只需要多次调用pushMsg方法即可
/**
* @param clientId
* 客户端唯一标识
* @param taskNum
* 任务数量
* @return
*/
public boolean pushMsg(String clientId) {
try {
IGtPush push = new IGtPush(sysConfig.getAppKey(), sysConfig.getMasterSecret(), true);//建立通知类
// 定义"点击链接打开通知模板",并设置标题、内容、链接
TransmissionTemplate template = new TransmissionTemplate();
template.setAppId(sysConfig.getAppId());
template.setAppkey(sysConfig.getAppKey());
template.setTransmissionContent("{title:\"任务提醒\",content:\"您有" + 1 + "条未处理的任务请及时处理!\",payload:\"通知去干嘛这里可以自定义\"}");
template.setTransmissionType(2);
//创建单个通知消息
SingleMessage singleMessage = new SingleMessage();
singleMessage.setOffline(true);
// 离线有效时间,单位为毫秒,可选
singleMessage.setOfflineExpireTime(24 * 3600 * 1000);
singleMessage.setData(template);
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
singleMessage.setPushNetWorkType(0);
//用户端
Target target = new Target();
target.setAppId(sysConfig.getAppId());
target.setClientId(clientId);
IPushResult ret = null;
try {
ret = push.pushMessageToSingle(singleMessage, target);
} catch (RequestException e) {
e.printStackTrace();
ret = push.pushMessageToSingle(singleMessage, target, e.getRequestId());
}
if (ret != null && isPushSuccess(ret)) {
logger.info("推送信息成功");
logger.info("推送信息返回结果:" + JSON.toJSONString(ret));
return true;
} else {
logger.info("推送信息服务器响应异常");
logger.info("推送信息返回结果:" + JSON.toJSONString(ret));
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 判断是否推送成功
* @param result
* @return
*/
private boolean isPushSuccess(IPushResult result) {
if (result.getResponse() != null && result.getResponse().get("result").toString().equals("ok")) {
return true;
}
return false;
}