近阶段由于PM同学的强烈要求,我们app服务端准备接入百度云推送工程,那么现在开始demo走起,本Demo主要是针对标签推送。
网址:
http://push.baidu.com/doc/java/api
找到javaSDK进行下载即可;
import com.baidu.yun.core.log.YunLogEvent;
import com.baidu.yun.core.log.YunLogHandler;
import com.baidu.yun.push.auth.PushKeyPair;
import com.baidu.yun.push.client.BaiduPushClient;
import com.baidu.yun.push.constants.BaiduPushConstants;
import com.baidu.yun.push.exception.PushClientException;
import com.baidu.yun.push.exception.PushServerException;
import com.baidu.yun.push.model.PushMsgToTagRequest;
import com.baidu.yun.push.model.PushMsgToTagResponse;
/**
* Created by New-Bee on 2017/2/16.
*/
public class PushTest {
public static void main(String[] args) throws PushClientException, PushServerException {
/**
* 1.
* 身份合法性验证
*/
String apiKey = "domotGdRGCLR2x20UujEZNIz"; // 创建应用时,会在应用里面看到
String secretKey = "IglRgUVnCHyGhblwo6UWAtzkFxkEMRxR"; // 同上
PushKeyPair pair = new PushKeyPair(apiKey, secretKey);
/**
* 2.
* 创建一个BaiduPushClient对象来访问官方发布接口
* 参数说明:
* pair : 通过apiKey和secretKey获取PushKeyPair对象
* BaiduPushConstants.CHANNEL_REST_URL:
* 为服务URL地址,注意,如果你的推送服务器不可以访问外网的话,那么这个url是不能用的
*
* */
BaiduPushClient pushClient = new BaiduPushClient(pair,
BaiduPushConstants.CHANNEL_REST_URL);
/**
* 3.
* 注册YunLogHandler对象,来获取交互请求中的详细信息
*
* */
pushClient.setChannelLogHandler(new YunLogHandler() {
public void onHandle(YunLogEvent event) {
System.out.println(event.getMessage());
}
});
try {
/**
* 4.
* 开始组装按标签组推送接口所需要的参数
*
* addTagName:标签名称
* addMsgExpires:消息失效时间(单位秒)
* addMessageType: 1 :普通通知 ,2:透传通知
* addMessage: 添加消息体
* addDeviceType:设备类型 3:android 4:IOS
* */
PushMsgToTagRequest request = new PushMsgToTagRequest()
.addTagName("xingge")
.addMsgExpires(new Integer(3600))
.addMessageType(1)
// .addSendTime(System.currentTimeMillis() / 1000 + 70).
.addMessage("{\"title\":\"TEST\",\"description\":\"Hello Baidu push!\"}")
.addDeviceType(3);
/**
* 5.
* 开始推送消息
* */
PushMsgToTagResponse response = pushClient.pushMsgToTag(request);
/**
* 6.
* Http请求返回值解析
* */
System.out.println("msgId: " + response.getMsgId() + ",sendTime: "
+ response.getSendTime() + ",timerId: "
+ response.getTimerId());
} catch (PushClientException e) {
if (BaiduPushConstants.ERROROPTTYPE) {
throw e;
} else {
e.printStackTrace();
}
} catch (PushServerException e) {
if (BaiduPushConstants.ERROROPTTYPE) {
throw e;
} else {
System.out.println(String.format(
"requestId: %d, errorCode: %d, errorMsg: %s",
e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
}
}
}
}
安卓与IOS的消息体格式是不一样的
详细消息接口说明请参照官方文档
Android
{
"title" : "hello" ,
"description": "hello world" // 必选
"notification_builder_id": 0, // 可选
"notification_basic_style": 7, // 可选
"open_type":0, // 可选
"url": "http://developer.baidu.com", // 可选
"pkg_content":"", // 可选
"custom_content":{"key":"value"}, // 自定义
}
IOS
{
"aps": {
"alert":"Message From Baidu Cloud Push-Service",
"sound":"", // 可选
"badge":0, // 可选
},
"key1":"value1",// 自定义
"key2":"value2"
}