PS:用了一下个推. 感觉实现第三方应用的推送功能还是比较简单的. 官方文档写的也非常的明确.
学习内容:
1. 使用个推实现第三方应用的推送.
所有的配置我最后会给一个源代码, 内部有相关的配置和文档来帮助大家完成配置, 在这里就不进行介绍了.
感觉需要写的东西不是非常的多, 因为官方的文档已经写的非常的明确了, 如何进行配置, 导入 jar 包,.so 文件, 以及 AndroidManifest 的文件的相关配置都写的非常的明确. 我这里就稍微的简单介绍一下. 注册账号什么的我就不说了, 这些基本的东西没有减少的必要性.
i.PushManager
PushManager.getInstance().initialize(context);
对象的创建方式是单列的. 因此拿到的对象也就具有唯一性. 这里获取到 PushManager 对象的同时去初始化个推服务, 接口调用之后个推服务后台运行, 通过广播的方式将 CID 发送给 App. 这里其实最重要的就是这个广播, 其他的东西都没有什么重点的地方. 只需要稍微的注意一下即可.
ii.GeTuiPushReceiver app 接收 CID 的广播
这个广播是接收推送消息的核心类, 其实实现起来也是比较简单的, 首先就是获取 PushManager 对象, 然后初始化个推服务, 在 OnReceiver 方法中对传递过来的数据进行判断, 这里只对两种状态进行了判断, 一种是推送通知, 另一种则是透传消息.
@Override public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
switch (bundle.getInt(PushConsts.CMD_ACTION)) {
/**
* 推送通知
* */
case PushConsts.GET_CLIENTID:
String cid = bundle.getString("clientid");
break;
/**
* 透传消息, 传递过来的是 Json 字符串. 一般而言需要客户端进行解析.
* */
case PushConsts.GET_MSG_DATA:
String appid = bundle.getString("appid");
byte[] payload = bundle.getByteArray("payload");
String taskid = bundle.getString("taskid");
String messageid = bundle.getString("messageid");
if (payload != null) {
/**
* 如果拿到的数据不为空. 那么做相关的处理
* */
message = new String(payload);
onGetPushMessageListener.getOstfMessage(message);
} else {
message = "";
}
break;
}
}
这样通过判断, 我们就可以得知, 是推送通知, 还是透传消息等等. 最后写了一个对外界暴露的接口, 其实就对 Activity 暴露接口, 当我们在广播中接收到了数据发生了变化, 或者是有数据传递过来, 需要通过这个接口的方式, 告知数据产生了变化, 需要主进程做相关的处理, 这是暴露接口的目的. 然后在主页面中, 我们只需要实现这个接口就可以了.
GeTuiPushReceiver.setOnGetPushMessageListener(new GeTuiPushReceiver.OnGetPushMessageListener() {@Override public void getOstfMessage(String message) {
if (message != null) {
MessageData.add(message);
}
}
});
iii. 打开推送
turnOnPush(context) 方法, 用于打开推送, 如果我们不主动打开推送的话, 就算是后台发送了推送消息, 我们也是接收不到的. 在默认的状态下是开启状态.
GeTuiPushReceiver.init(getApplicationContext());
pushManager = PushManager.getInstance();
pushManager.turnOnPush(this);
iv. 关闭推送服务
turnOffPush(context) 方法, 用于关闭推送服务. 这个方法执行之后, 就无法收到推送服务了, 需要注意的是, 想要再次接收到推送, 必须使用 turnOnPush(context) 方法. 其他方法无效.
GeTuiPushReceiver.init(getApplicationContext());
pushManager = PushManager.getInstance();
pushManager.turnOffPush(this);
v. 停止 SDK 服务.
stopService(context). 停止 SDK 服务之后, 服务不会终止运行, 而是终止推送和联网功能. 重新启动需要调用 initalize() 方法或者是 turnOnPush() 方法.
GeTuiPushReceiver.init(getApplicationContext());
pushManager = PushManager.getInstance();
pushManager.stopService(this);
首先我们需要创建自己的应用, 然后我们可以在应用配置当中获取到我们想要的数据, 具体效果如下.
这里有我们想要的数据, AppId,AppKey 等等, 这些东西都需要在 AndroidManifest 文件中进行配置. 自己做好 Demo 之后, 就可以通过后台发送推送了.
标题和内容都是必填项, 然后一直确定就可以了, 这样消息就被推送出去了. 在 App 上打开推送服务, 就可以接收到推送了. 透传消息我就不进行截图了. 需要注意的一点就是透传消息是 Json 格式的字串. 个推为我们提供好了 Json 的格式化工具.
最后放上一个源代码, 这个源代码是无法运行的, 因为这里是使用我自己的后台, 大家也需要去创建账号, 用自己的后台去创建应用, 然后把 AndroidManifest 文件中的 AppId,AppKey,AppSecret 进行修改. 并且内部提供了很多文档, 帮助大家去集成.
来源: http://www.cnblogs.com/RGogoing/p/5773544.html