HBuilder+个推服务器(JAVA)实现推送(二)
导读:之前写过一篇文章是由个推网站推送给客户端消息,但是在实际的应用中是需要我们从自己的服务端来发送推送消息给客户端,所以我在服务端写了一个java类,实现发送推送给客户端,我写这个推送的消息类型为透传消息类型,适用于Android和IOS。
首先我们需要在个推官网上下载SDK到本地客户端,由于我的服务端是由java语言编写,在这里我就下载java的SDK。
下载SDK到本地后,我们将资源文件中的jar导入到我们使用的项目中,
好了,包也导入进来了,之后我就直接上代码了。
package TestDemo.test;
import com.gexin.fastjson.JSONObject;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.impl.SingleMessage;
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.LinkTemplate;
import com.gexin.rp.sdk.template.NotificationTemplate;
import com.gexin.rp.sdk.template.TransmissionTemplate;
import com.gexin.rp.sdk.template.style.Style0;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PushSingle {
//定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
private static String appId = "个推上获取appid";
private static String appKey = "个推上获取appkey";
private static String masterSecret = "个推上获取masterSecret";
private static String pushText="{title:'通知标题',content:'通知内容',payload:'通知去干嘛这里可以自定义'}";
public static String cid = "这是客户端ID,单个用户发送;
//向个推服务器发送请求
public static void push(String cid) throws IOException{
IGtPush push = new IGtPush(appKey, masterSecret);
push.connect();
SingleMessage message = new SingleMessage();
message.setOffline(true);
// 离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 3600 * 1000);
//推送内容,格式为{title:'通知标题',content:'通知内容',payload:'通知去干嘛这里可以自定义'}
message.setData(getTemplate());
// 可选,1为wifi,0为不限制网络环境。根据手机处于的网络情况,决定是否下发
message.setPushNetWorkType(0);
Target target = new Target();
target.setAppId(appId);
target.setClientId(cid);
IPushResult ret = push.pushMessageToSingle(message,target);
System.out.println(ret.getResponse().toString());
}
//生成推送消息
public static TransmissionTemplate getTemplate() {
TransmissionTemplate template = new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setTransmissionContent(pushText);
template.setTransmissionType(2);
APNPayload payload = new APNPayload();
//payload.setBadge(0);
payload.setContentAvailable(1);
payload.setSound("default");
payload.setCategory("$由客户端定义");
String content=pushText.substring(pushText.indexOf(",content:'")+",content:'".length(),pushText.indexOf("',payload:"));
//简单模式APNPayload.SimpleMsg
payload.setAlertMsg(new APNPayload.SimpleAlertMsg(content));
template.setAPNInfo(payload);
return template;
}
}
以上的代码是适合IOS/Android单个用户发送,如果想所用用户或者一部分用户发送请查看SDK中的例子实现。