文章目录
  1. 1. 简单介绍
  2. 2. 实例

简单介绍

上篇介绍了使用百度云提供的网页推送给客户端,本篇介绍自己配置Java服务器将推送推给客户端。

实例

首先可以看下百度云推送Java服务器配置开发文档,参照教程配置好后可以测试下。
首先写个PushTool工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.carlos.baidupush;

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;

public class PushTools {

public BaiduPushClient push(){

//创建PushKeyPair
String apiKey="RG22q5hdhGeyGjFDaB05ju2X";
String secretKey="5XdFeendbTWIFdpxtrEzSUNp0CNU5t7D";
PushKeyPair pair=new PushKeyPair(apiKey, secretKey);

//创建BaiduPushClient,访问SDK接口
BaiduPushClient pushClient=new BaiduPushClient(pair);

//注册YunLogHandler,获取本次请求的交互信息
pushClient.setChannelLogHandler(new YunLogHandler() {

@Override
public void onHandle(YunLogEvent event) {
System.out.println(event.getMessage());
}
});
return pushClient;
}
}

接着新建一个PushToAllDevices类,以通知方式推送给所有用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.carlos.baidupush;

import net.sf.json.JSONObject;

import com.baidu.yun.push.client.BaiduPushClient;
import com.baidu.yun.push.exception.PushClientException;
import com.baidu.yun.push.exception.PushServerException;
import com.baidu.yun.push.model.PushMsgToAllRequest;
import com.baidu.yun.push.model.PushMsgToAllResponse;

public class PushToAllDevices {

public static void main(String[] args) {

PushTools pushTools=new PushTools();
BaiduPushClient pushClient=pushTools.push();

JSONObject object=new JSONObject();
object.put("title", "通知");
object.put("description", "hello,carlos");

PushMsgToAllRequest allRequest=new PushMsgToAllRequest();
allRequest.addMsgExpires(3600*12);//设置12个小时后过期
allRequest.addMessageType(1);//0为透传消息,1为通知
allRequest.addMessage(object.toString());//信息
allRequest.addDeviceType(3);//3为Android,4位IOS

try {
PushMsgToAllResponse allResponse=pushClient.pushMsgToAll(allRequest);
System.out.println("msgId: "+allResponse.getMsgId()+",sendTime: "+
allResponse.getSendTime()+",timerId: "+allResponse.getTimerId());
} catch (PushClientException e) {
e.printStackTrace();
} catch (PushServerException e) {
e.printStackTrace();
}
}
}

服务器端控制台输出的信息为

模拟器收到通知

然后再新建PushToSingleDevice类,以透传方式推送给单个用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.carlos.baidupush;

import com.baidu.yun.push.client.BaiduPushClient;
import com.baidu.yun.push.exception.PushClientException;
import com.baidu.yun.push.exception.PushServerException;
import com.baidu.yun.push.model.PushMsgToSingleDeviceRequest;
import com.baidu.yun.push.model.PushMsgToSingleDeviceResponse;

public class PushToSingleDevice {

public static void main(String[] args) {

PushTools pushTools=new PushTools();
BaiduPushClient pushClient=pushTools.push();

PushMsgToSingleDeviceRequest deviceRequest=new PushMsgToSingleDeviceRequest();
deviceRequest.addChannelId("3973705946942416175");
deviceRequest.addMsgExpires(3600*3);//设置有效期为3小时
deviceRequest.addDeviceType(0);//0表示透传,1表示通知
deviceRequest.addMessage("我喜欢Andriod开发");//信息

try {
PushMsgToSingleDeviceResponse deviceResponse=pushClient.pushMsgToSingleDevice(deviceRequest);
System.out.println("msgId: "+deviceResponse.getMsgId()+
",sendTime: "+deviceResponse.getSendTime());
} catch (PushClientException e) {
e.printStackTrace();
} catch (PushServerException e) {
e.printStackTrace();
}
}
}

再看客户端LogCat日志中打印出的信息,可以看到收到了之前推送的通知和现在的透传信息了

文章目录
  1. 1. 简单介绍
  2. 2. 实例