我发现 现在做的 除了个别事情,其他都是为了项目需求做的。 有没有好可怕。。。
嗯 PubNubSDK 也是为了海外 推送做的。
PubNubSDK 推送是海外一款 算是免费中不错的提送SDK吧(免费的肯定是受限制的,比如推送的字符长度,每天或者每个帐号推送的消息数量等等)
那先说怎么集成进去的把,
去官网注册帐号(注册的时候需要翻墙)
注册之后
可以 created new app
然后根据步骤走就好了。
需要在官网准备的东西(都可以在上面的官网下载到的)
1. 先下载 PubNubSDK jar文件
2. 下载代码资源(这里根据你选进来的是 IOS ,Android 来的)
3. 下载 jar 包后放在 libs 目录下,eclipse 刷新 然后自动导入jar,
需要在android 的
AndroidManifest.xml
文件中配置权限
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
4. 初始化 SDK
//配置
PNConfiguration pnConfiguration =
new
PNConfiguration();
pnConfiguration.setSubscribeKey(
"注册的时候看自己的注册的app里面会有"
);
pnConfiguration.setPublishKey(
"注册的时候看自己的注册的app里面会有"
);
pnConfiguration.setSecure(
false
);//设置开发模式
//初始化
PubNub pubnub =
new
PubNub(pnConfiguration);
//监听
abcd1234发来的消息
pubnub.subscribe().channels(Arrays.asList(
"abcd1234"
)).execute();
//添加监听
pubnub.addListener(
m
SubscribeCallback)
SubscribeCallback
m
SubscribeCallback =
new
SubscribeCallback(){
//状态
@Override
public
void
status(PubNub pubnub, PNStatus status) {
if
(status.getCategory() == PNStatusCategory.PNConnectedCategory)
{
//注册了一个
abcd1234 的消息,设置的message 为 hello!!
//需要注册一个回调 连接的状态是否成功
pubnub.publish().channel(
"abcd1234"
).message(
"hello!!"
).async(
new
PNCallback<PNPublishResult>() {
@Override
public
void
onResponse(PNPublishResult result, PNStatus status) {
// Check whether request successfully completed or not.
if
(!status.isError()) {
// Message successfully published to specified channel.
}
// Request processing failed.
else
{
// Handle message publish error. Check 'category' property to find out possible issue
// because of which request did fail.
//
// Request can be resent using: [status retry];
}
}
});
}
}
//如果收到消息就会到
message这里
@Override
public
void
message(PubNub pubnub, PNMessageResult message) {
// Handle new message stored in message.message
if
(message.getChannel() !=
null
) {
// Message has been received on channel group stored in
// message.getChannel()
}
else
{
// Message has been received on channel stored in
// message.getSubscription()
}
/*
log the following items with your favorite logger
- message.getMessage()
- message.getSubscription()
- message.getTimetoken()
*/
}
@Override
public
void
presence(PubNub pubnub, PNPresenceEventResult presence)
{
}
}
然后在app销毁的时候 需要调用
pubnub.destroy();
------------------------------分割线-----------------------------------
以上就是个简单的 PubNub 接入方法
上面是客户端自己发送自己接收的。
然而 我们需要的是服务器 传送过来,客户端接收
那么客户端需要和服务器定好channel(也就是上面的abcd1234)
客户端只需要监听 这个 channel ,服务器 只需要负责发送这个 channel 的消息。
PS 如果是全部推送,可以把 channel 定义好,如果是 需要单个的推送,某些可以看见。那么需要拿到这个用户的 唯一标识(如:device id)
其官网介绍的很详细,而且有 API 所以,以上只是提供了简单的接入,如果要更多的功能可以去官网 瞄几眼。

最后 我想问问 大家 有没有用过海外 比较靠谱的推送啊 求介绍啊哈哈哈哈(支持离线推送的是最好了) thx
