上一篇文章讲到个推推送应用的两种模式,一种是通过个推账号,登录到你的管理portal,手动编辑发送,这一种在上一篇文章也已经讲过了,今天我们来讲它的另一种应用,就是和我们的服务器整合的方式。
在这一点上,个推推送已经提供给我们服务器的SDK了,并且有完整的Api支持,所以说我们这种整合的方式也是非常容易实现的。而且,目前的版本已经支持了反向通道,就是说,不光是服务器可以给客户端发消息,客户端也可以给服务器发消息,从这一点来说,对于实现我们需要的双向链路就更方便了。
首先,从整体结构上,我们先说一下从服务器到客户端的下行链路,结构大概像以下这样:
你自己的服务器——————>个推推送服务器——————>客户端
流程大概是,你自己的服务器使用个推推送提供的服务器端的SDK,调用相应的Api,推送你要推送的内容给个推推送服务器,并指明ClientID来标识你要推送给谁,个推推送服务器收到你自己的服务器发来的推送内容,并根据ClientID把内容推送给相应的客户端。
我们看一下个推推送文档的示例代码:
public class pushtoSingle {
static String appId = "b03c5cfef65ed30108f0a3fd82c3f6b4";
static String appkey = "110000";
static String master = "a02a76119b20d4e31620d7597a3b4f35";
static String CID = "873ffc4fec7bfd43d4705639eacb41d0";
static String host = "http://sdk.open.api.igexin.com/apiex.htm";
public static void main(String[] args) throws Exception {
IGtPush push = new IGtPush(host, appkey, master);
push.connect();
LinkTemplate template = linkTemplateDemo();
SingleMessage message = new SingleMessage();
message.setOffline(true);
//离线有效时间,单位为毫秒,可选
message.setOfflineExpireTime(24 * 3600 * 1000);
message.setData(template);
List targets = new ArrayList();
Target target1 = new Target();
Target target2 = new Target();
target1.setAppId(appId);
target1.setClientId(CID);
IPushResult ret = push.pushMessageToSingle(message, target1);
System.out.println(ret.getResponse().toString());
}
public static LinkTemplate linkTemplateDemo() {
LinkTemplate template = new LinkTemplate();
// 设置APPID与APPKEY
template.setAppId(appId);
template.setAppkey(appkey);
// 设置通知栏标题与内容
template.setTitle("请输入通知栏标题");
template.setText("请输入通知栏内容");
// 配置通知栏图标
template.setLogo("icon.png");
// 配置通知栏网络图标
template.setLogoUrl("");
// 设置通知是否响铃,震动,或者可清除
template.setIsRing(true);
template.setIsVibrate(true);
template.setIsClearable(true);
// 设置打开的网址地址
template.setUrl("http://www.baidu.com");
return template;
}
}
以推送到单个用户为例,先组装一条推送内容,然后调用
push.pushMessageToSingle(message, target1);
将内容推送到个推推送服务器,然后个推推送服务器自动帮你推送到相应客户端。
从这种应用方式上来讲,其实就是把个推推送服务器当成一个用来传输的组件来使用,推送的内容、形式,还有推送给谁,都由你自己的服务器来决定,这样一看就灵活多了,你完全可以根据你自己的需求推送相应的东西给相应的客户端,这样就和我们自己的服务器完美结合了。
今天说了下行通道,我们下一篇文章会将上行通道,通过这一点我们可以实现更多的功能。