leanCloud集成-java服务端(一)
序:
这个是第三方消息推送,服务端集成后,客户端引入对应的SDK,保证appid,appkey,appmaster一致就可以收到对应的推送信息了。
一,服务端集成步骤
maven引入
cn.leancloud
0.1.6
也可以下载对应的jar,放到自己项目的lib里。
二,创建应用
登陆leanCloud的控制台,创建应用,
点击新创建应用的这个齿轮,查看应用key信息,获取AppID,AppKey,MasterKey信息
三,测试是否可以连通leanCloud的推送服务器
推送服务器地址:
AppID的前8位 + .api.lncld.net
官网上这样说:
注意,实际是不要“{”和“}”的,如果能连通,ping的结果应该是:
四,推送测试
先点击存储,创建Class
注意不要心急一直点,否则回提示初始化过快。创建成功后,回看到创建的类:
这里如果不创建类,回提示:
如果一直点创建类,或点了类还没有创建完成(在存储里看不到自己的类),则会提示:
剩下就是写测试代码,测试代码其实非常简单:
写完这样一个main的静态方法,run as 你懂的,控制台不报错,那就可以去leanCloud控制台的-》存储-》类名下看记录了。还有点要注意的是,这里默认是使用国内节点,如果要推送到国外,节点用北美的。官网明确指出:
各个节点彼此独立,开发者账号无法跨节点来创建应用或调用 API。
另外生产环境需要增加:
AVOSCloud
.
setDebugLogEnabled
(
true
); //避免敏感信息在日志里打印,
run as成功后控制台的记录:
点击objectid的链接,可以看到详细信息
到这里说明我们的推送信息生成没有问题了,剩下的就是把信息推送到指定设备,这就要用到
AVQuery /AVPush了。
下面是个人的理解:
AVQuery:查询推送信息查询类
AVPush:推送工具类
使用这2个工具类实现推送到具体设备。
AVQuery pushQuery = AVInstallation.getQuery();
//AVQuey 查询要推送的设备信息
pushQuery.whereEqualTo(
"channels"
,
"public"
);
//给查询到的设备推送信息
AVPush push =
new
AVPush();
push.setQuery(pushQuery);
push.setMessage(
"Push to channel."
);
push.setPushToAndroid(
true
);
push.sendInBackground(
new
SendCallback() {
@Override
public
void
done
(AVException e) {
if
(e ==
null
) {
}
else
{
}
}
});
总结,我们要关注的点可能有以下几个方面:
1,业务代码需要获取app的区域,以便我们选择正确的推送节点
2,怎么推送的我们不关心,我们应该关心的是我们的推送内容
3,高并发下推送是否及时(这个应该是升级为leanCloud的vip或企业用户就ok了)
4.服务端业务逻辑里就要组织确定推送的范围了,可以细化到具体唯一设备
例如不能我A 的信息推到B的设备上展示或所有设备展示。
我自己剩下的疑问:
1,推送信息控制台是有了,但是怎么保证用户的设备确实收到了?
是否可以设备收到后,发状态给leanCloud还是我们自己的项目。
2,用户拒绝接收app的消息推送,怎么办?
是否可以打开app时,app读取权限,看是否被拒绝,如果被拒绝,总结跳转让设置允许或一直提示,同时app不可用?或者记录用户的设置到服务端,如果是被拒绝,调用短信推送方式?
其实上面的问题可能是还有很多API没有看完,后面有时间再整理二,具体先到这里,任务来了,不对的地方请大家多包涵,顺便留言指正,共同学习。