百度消息推送SDK探究(并附上最简推送Demo)
上一篇《百度消息推送REST API探究》中了解了如何使用REST API推送消息,这一篇我们来看一下百度消息推送为我们提供的SDK.
帮助文档:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api
我们先来看一下服务端SDK
下载解压后的目录结构
还是前面提到的那句话,先看sample
package test; import com.baidu.yun.channel.auth.ChannelKeyPair;
import com.baidu.yun.channel.client.BaiduChannelClient;
import com.baidu.yun.channel.exception.ChannelClientException;
import com.baidu.yun.channel.exception.ChannelServerException;
import com.baidu.yun.channel.model.PushBroadcastMessageRequest;
import com.baidu.yun.channel.model.PushBroadcastMessageResponse;
import com.baidu.yun.channel.model.PushUnicastMessageRequest;
import com.baidu.yun.channel.model.PushUnicastMessageResponse;
import com.baidu.yun.core.log.YunLogEvent;
import com.baidu.yun.core.log.YunLogHandler; public class AndroidPushNotificationSample { public static void main(String[] args) { /*
* @brief 推送单播通知(Android Push SDK拦截并解析) message_type = 1 (默认为0)
*/ // 1. 设置developer平台的ApiKey/SecretKey
String apiKey = "自己的apiKey";
String secretKey = "自己的secretKey";
ChannelKeyPair pair = new ChannelKeyPair(apiKey, secretKey); // 2. 创建BaiduChannelClient对象实例
BaiduChannelClient channelClient = new BaiduChannelClient(pair); // 3. 若要了解交互细节,请注册YunLogHandler类
channelClient.setChannelLogHandler(new YunLogHandler() {
@Override
public void onHandle(YunLogEvent event) {
System.out.println(event.getMessage());
}
}); try { // 4. 创建请求类对象
// 手机端的ChannelId, 手机端的UserId, 先用1111111111111代替,用户需替换为自己的
PushBroadcastMessageRequest request = new PushBroadcastMessageRequest(); //PushUnicastMessageRequest request = new PushUnicastMessageRequest(); request.setDeviceType(3); // device_type => 1: web 2: pc 3:android
// 4:ios 5:wp
//request.setChannelId(3721876992860457831L);
//request.setUserId("1105477905904433716"); request.setMessageType(1);
request.setMessage("{\"title\":\"大碗干拌\",\"description\":\"欢迎访问大碗干拌的CSDN博客\"}"); // 5. 调用pushMessage接口
/* PushUnicastMessageResponse response = channelClient
.pushUnicastMessage(request); */
PushBroadcastMessageResponse response = channelClient.pushBroadcastMessage(request); // 6. 认证推送成功
System.out.println("push amount : " + response.getSuccessAmount()); } catch (ChannelClientException e) {
// 处理客户端错误异常
e.printStackTrace();
} catch (ChannelServerException e) {
// 处理服务端错误异常
System.out.println(String.format(
"request_id: %d, error_code: %d, error_message: %s",
e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
} } }
例子很简单,从名字上就能看出作用,这里就不啰嗦了。
下面我们来看看客户端的SDK
下载Android端SDK后解压如下
从用户手册中我们可以看到,Android Push服务以后台service方式运行,如果某个手机中集成了多个百度推送服务,为了减少内存和和功耗,只有一个后台service来共享Push通道。
接下来来看一下用户手册:
根据用户手册上的描述,我做了一个最简Demo,这个demo完全可以满足一般需求。
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 以apikey的方式登录,一般放在主Activity的onCreate中
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY, "自己的apikey");
}
}
PushReciver.java
package com.example.baidulotterypush; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast; import com.baidu.android.pushservice.PushConstants; public class MyPushMessageReceiver extends BroadcastReceiver{ private static final String TAG = "大碗干拌"; @Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) { } else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) { } else if (intent.getAction().equals(
PushConstants.ACTION_RECEIVER_NOTIFICATION_CLICK)) {
Log.i(TAG, "title = " + intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE));
Log.i(TAG, "content = " + intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT));
}
}
}
运行结果:
Demo下载地址:http://download.csdn.net/detail/lxq_xsyu/6954373
百度消息推送SDK探究(并附上最简推送Demo)的更多相关文章
- 百度消息推送REST API探究
一.百度云推送介绍 云推送(Push)是百度开放云向开发者提供的消息推送服务:通过利用云端与客户端之间建立稳定.可靠的长连接来为开发者提供向客户端应用推送实时消息服务. 百度云推送服务支持推送三种类型 ...
- iOS开发——iOS10升级极光推送SDK、友盟分享SDK
前不久升级了Xcode8 ,同时iOS10系统也推送久. 由于公司需要适配iOS 10系统,同时第三方sdk建议升级. 包含替换升级新的SDK和相应的代码修改. 主要分享如何升级极光推送SDK,友盟分 ...
- 十大豪门推送sdk,哪个更适合你
转自:http://jingyan.baidu.com/article/d621e8da0fd7042865913ff5.html 推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户 ...
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...
- 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言
在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...
- Android融合推送MixPush SDK集成多家推送平台,共享系统级推送,杀死APP也能收到推送
消息推送是App运营的重要一环,为了优化消息推送成功率,降低电量和流量消耗,系统级的推送服务显得尤为重要.小米和魅族由此推出了自家的推送平台,在MIUI和Flyme上共享系统级推送服务,让APP在被杀 ...
- iOS极光推送SDK的使用流程
一.极光推送简介 极光推送是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,整合了iOS.Android和WP平台的统一推送服务.使用起来方便简单,已于集成,解决了原生远程推送繁 ...
- 友盟推送SDK集成测试、常见问题以及注意事项总结
最近为了解决公司APP在一些手机出现的推送问题重新集成了最新版的友盟推送SDK,花费了几天时间终于把集成和测试工作完成,最终在华为,Nexus,三星,小米,HTC,魅族等10多部手机上测试并达到了预想 ...
- 手把手教你搞定个推iOS推送SDK集成
以下是一位开发者在集成个推iOS推送SDK过程中的真实经历. 作者:Ezreallp 一次偶然的机会,公司的项目要用到推送,我自己本来就很懒,不愿意去弄整套APNS的流程,刚好之前跟朋友聊起过他们的产 ...
随机推荐
- Microsoft SQL Server Version List(SQL Server 版本)
原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ...
- HTML基础第十一讲---背景标志
转自:https://i.cnblogs.com/posts?categoryid=1121494 您是否老觉得网页「空空的」,没错!一个可能是我们还没有很多内容,另一个可能则是我们还没有设定网页背景 ...
- 语音识别系统:有免费实用的"语音到文字"的软件么?
自从看了<李开复自传>,就对"语音识别系统"产生了非常深刻的印象. 根据自己的判断,语音识别系统还是非常有用的. 以自己的实际需求来看: 1.中国象棋中的应用. 中国象 ...
- 【例题 7-7 UVA - 1354】Mobile Computing
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 秤砣都是在叶子节点. 可以把它看成一个二叉树. 则我们每次只需要选择任意两个"节点",让他们组成一棵二叉树就可以 ...
- CC2530定时器使用
定时器学习 文件夹 说明 依据数据手冊可知CC2530总共同拥有4个定时器,可是定时器2被系统占用,可用的仅仅有三个,分别为定时器1/3/4 Timer在协议栈的代码位置为hal_timer ...
- Codeforces Beta Round #16 E. Fish (状压dp)(概率dp)
Codeforces Beta Round #16 (Div. 2 Only) E. Fish 题目链接:## 点击打开链接 题意: 有 \(n\) 条鱼,每两条鱼相遇都会有其中一只吃掉对方,现在给你 ...
- 并发,one
引言 最近工作当中写了一个有关并发的程序,引起了LZ对并发的强烈兴趣.这一下一发不可收拾,LZ用了一个多星期,看完了这本共280+页的并发编程书.之所以能看这么快,其实这主要归功于,自己之前对并发就有 ...
- echarts+百度地图+vue 填坑记(一)(百度地图、鼠标移入移出标注,信息框会产生闪烁)
大概七月底开始实习,到现在经历了两个完整的项目(c2b). 因为开发时间紧,任务重,所以在开发过程踩到的坑都没时间去记录. 现在在开发一个某链运输监控系统,到了收尾阶段,有时间写博客了!开心! 一.鼠 ...
- linux中获取系统时间 gettimeofday函数
linux的man页中对gettimeofday函数的说明中,有这样一个说明: $ man gettimeofday DESCRIPTION The functions gettimeof ...
- 具体解释。。设计模式5——DAO。。studying
设计模式5--DAO ★ 场景和问题 在Java程序中,常常须要把数据持久化.也须要获取持久化的数据,可是在进行数据持久化的过程中面临诸多问题 (如:数据源不同.存储类型不同.供应商不同.訪问方式不同 ...