1、创建应用获取api_key 百度云推送:http://push.baidu.com/

SDK下载:http://push.baidu.com/sdk/push_client_sdk_for_android

2、添加jar到libs文件下

compile files('libs/galaxy.jar')
implementation files('libs/pushservice-6.1.1.21.jar')
implementation files('libs/ufosdk-android-1.7.13.jar')

3、权限配置 ,主要包名改为当前项目包名------>

com.baidu.push.example  改为当前项目包名
com.tianxin.mapclient.liteapp  改为当前项目包名
<!-- Push service 运行需要的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<!-- 富媒体需要声明的权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /><!-- 适配Android N系统必需的ContentProvider写权限声明,写权限包含应用包名 -->
<uses-permissionandroid:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.baidu.push.example" />
<permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.baidu.push.example"android:protectionLevel="normal" />

4、资源类配置,。主要包名改为当前项目包名。api_key改为当前项目申请的api_key

项目包名后面,注意要加上.bdpush

<!-- push富媒体,使用富媒体推送必须声明 -->
<activity android:name="com.baidu.android.pushservice.richmedia.MediaViewActivity"android:configChanges="orientation|keyboardHidden" android:label="MediaViewActivity" />
<activity android:name="com.baidu.android.pushservice.richmedia.MediaListActivity"android:configChanges="orientation|keyboardHidden" android:label="MediaListActivity"android:launchMode="singleTask" />
<!-- push富媒体结束 --><!-- push应用定义消息receiver声明 -->
<receiver android:name=".MyPushMessageReceiver"><intent-filter><!-- 接收push消息 --><action android:name="com.baidu.android.pushservice.action.MESSAGE" /><!-- 接收bind,unbind,fetch,delete等反馈消息 --><action android:name="com.baidu.android.pushservice.action.RECEIVE" /><action android:name="com.baidu.android.pushservice.action.notification.CLICK" /></intent-filter>
</receiver><!-- push必须的receviver和service声明 -->
<receiver android:name="com.baidu.android.pushservice.PushServiceReceiver"android:process=":bdservice_v1"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="com.baidu.android.pushservice.action.notification.SHOW" /><action android:name="com.baidu.android.pushservice.action.media.CLICK" /><!-- 以下四项为可选的action声明,可大大提高service存活率和消息到达速度 --><action android:name="android.intent.action.MEDIA_MOUNTED" /><action android:name="android.intent.action.USER_PRESENT" /><action android:name="android.intent.action.ACTION_POWER_CONNECTED" /><action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /></intent-filter>
</receiver>
<receiver android:name="com.baidu.android.pushservice.RegistrationReceiver"android:process=":bdservice_v1"><intent-filter><action android:name="com.baidu.android.pushservice.action.METHOD" /><action android:name="com.baidu.android.pushservice.action.BIND_SYNC" /></intent-filter><intent-filter><action android:name="android.intent.action.PACKAGE_REMOVED" /><data android:scheme="package" /></intent-filter>
</receiver><service android:name="com.baidu.android.pushservice.PushService" android:exported="true"android:process=":bdservice_v1"><intent-filter><action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" /></intent-filter>
</service>
<service android:name="com.baidu.android.pushservice.CommandService"android:exported="true" /><!-- 适配Android N系统必需的ContentProvider声明,写权限包含应用包名-->
<provider android:name="com.baidu.android.pushservice.PushInfoProvider"android:authorities="com.tianxin.mapclient.liteapp.bdpush" android:exported="true"android:protectionLevel="signature"android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.tianxin.mapclient.liteapp" /><!-- 在百度开发者中心查询应用的API Key -->
<meta-data android:name="api_key" android:value="tDrb727hnpdtLobd1BIpL5GQ" /><!-- UfoSDK -->
<activity android:name="com.baidu.ufosdk.ui.FeedbackListActivity" />
<activity android:name="com.baidu.ufosdk.ui.FeedbackFacePageActivity" />
<activity android:name="com.baidu.ufosdk.ui.FeedbackImageViewFlipperActivity" />
<activity android:name="com.baidu.ufosdk.ui.FeedbackInputActivity" />
<activity android:name="com.baidu.ufosdk.ui.FeedbackHotActivity" />

5、创建

MyPushMessageReceiver
public class MyPushMessageReceiver extends PushMessageReceiver {/*** TAG to Log*/public static final String TAG = MyPushMessageReceiver.class.getSimpleName();/*** 调用PushManager.startWork后,sdk将对push* server发起绑定请求,这个过程是异步的。绑定请求的结果通过onBind返回。 如果您需要用单播推送,需要把这里获取的channel* id和user id上传到应用server中,再调用server接口用channel id和user id给单个手机或者用户推送。** @param context   BroadcastReceiver的执行Context* @param errorCode 绑定接口返回值,0 - 成功* @param appid     应用id。errorCode非0时为null* @param userId    应用user id。errorCode非0时为null* @param channelId 应用channel id。errorCode非0时为null* @param requestId 向服务端发起的请求id。在追查问题时有用;* @return none*/@Overridepublic void onBind(Context context, int errorCode, String appid,String userId, String channelId, String requestId) {String responseString = "onBind errorCode=" + errorCode + " appid="+ appid + " userId=" + userId + " channelId=" + channelId+ " requestId=" + requestId;Log.i("lgqbbbbb====dddd===", responseString);if (errorCode == 0) {// 绑定成功Log.d(TAG, "绑定成功");}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** 接收透传消息的函数。** @param context             上下文* @param message             推送的消息* @param customContentString 自定义内容,为空或者json字符串*/@Overridepublic void onMessage(Context context, String message,String customContentString) {String messageString = "透传消息 onMessage=\"" + message+ "\" customContentString=" + customContentString;Log.d(TAG, messageString);// 自定义内容获取方式,mykey和myvalue对应透传消息推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) {JSONObject customJson = null;try {customJson = new JSONObject(customContentString);String myvalue = null;if (!customJson.isNull("mykey")) {myvalue = customJson.getString("mykey");}} catch (JSONException e) {e.printStackTrace();}}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, messageString);}/*** 接收通知到达的函数。** @param context             上下文* @param title               推送的通知的标题* @param description         推送的通知的描述* @param customContentString 自定义内容,为空或者json字符串*/@Overridepublic void onNotificationArrived(Context context, String title,String description, String customContentString) {String notifyString = "通知到达 onNotificationArrived  title=\"" + title+ "\" description=\"" + description + "\" customContent="+ customContentString;Log.d(TAG, notifyString);// 自定义内容获取方式,mykey和myvalue对应通知推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) {JSONObject customJson = null;try {customJson = new JSONObject(customContentString);String myvalue = null;if (!customJson.isNull("mykey")) {myvalue = customJson.getString("mykey");}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑// 你可以參考 onNotificationClicked中的提示从自定义内容获取具体值updateContent(context, notifyString);}/*** 接收通知点击的函数。** @param context             上下文* @param title               推送的通知的标题* @param description         推送的通知的描述* @param customContentString 自定义内容,为空或者json字符串*/@Overridepublic void onNotificationClicked(Context context, String title,String description, String customContentString) {String notifyString = "通知点击 onNotificationClicked title=\"" + title + "\" description=\""+ description + "\" customContent=" + customContentString;Log.d(TAG, notifyString);// 自定义内容获取方式,mykey和myvalue对应通知推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) {JSONObject customJson = null;try {customJson = new JSONObject(customContentString);String myvalue = null;if (!customJson.isNull("mykey")) {myvalue = customJson.getString("mykey");}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, notifyString);}/*** setTags() 的回调函数。** @param context     上下文* @param errorCode   错误码。0表示某些tag已经设置成功;非0表示所有tag的设置均失败。* @param successTags 设置成功的tag* @param failTags    设置失败的tag* @param requestId   分配给对云推送的请求的id*/@Overridepublic void onSetTags(Context context, int errorCode,List<String> successTags, List<String> failTags, String requestId) {String responseString = "onSetTags errorCode=" + errorCode+ " successTags=" + successTags + " failTags=" + failTags+ " requestId=" + requestId;Log.d(TAG, responseString);// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** delTags() 的回调函数。** @param context     上下文* @param errorCode   错误码。0表示某些tag已经删除成功;非0表示所有tag均删除失败。* @param successTags 成功删除的tag* @param failTags    删除失败的tag* @param requestId   分配给对云推送的请求的id*/@Overridepublic void onDelTags(Context context, int errorCode,List<String> successTags, List<String> failTags, String requestId) {String responseString = "onDelTags errorCode=" + errorCode+ " successTags=" + successTags + " failTags=" + failTags+ " requestId=" + requestId;Log.d(TAG, responseString);// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** listTags() 的回调函数。** @param context   上下文* @param errorCode 错误码。0表示列举tag成功;非0表示失败。* @param tags      当前应用设置的所有tag。* @param requestId 分配给对云推送的请求的id*/@Overridepublic void onListTags(Context context, int errorCode, List<String> tags,String requestId) {String responseString = "onListTags errorCode=" + errorCode + " tags="+ tags;Log.d(TAG, responseString);// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}/*** PushManager.stopWork() 的回调函数。** @param context   上下文* @param errorCode 错误码。0表示从云推送解绑定成功;非0表示失败。* @param requestId 分配给对云推送的请求的id*/@Overridepublic void onUnbind(Context context, int errorCode, String requestId) {String responseString = "onUnbind errorCode=" + errorCode+ " requestId = " + requestId;Log.d(TAG, responseString);if (errorCode == 0) {// 解绑定成功Log.d(TAG, "解绑成功");}// Demo更新界面展示代码,应用请在这里加入自己的处理逻辑updateContent(context, responseString);}private void updateContent(Context context, String content) {Log.i("xiaodidaoda=====", "updateContent"+content);}}

6、复制整个jniLibs文件到当前项目main下.。还有整个assets文件复制到main下

7、application下运行

UfoSDK.init(this);
UfoSDK.openRobotAnswer();// 设置用户的头像
UfoSDK.setCurrentUserIcon(getMeIconBitmap());
// 在聊天界面中获取聊天信息的时间间隔
UfoSDK.setChatThreadTime(10);
// 设置当前用户名
UfoSDK.setBaiduCuid(DeviceId.getCUID(this));
Log.i("lgq","iddddd=== "+DeviceId.getCUID(this));
// 我的反馈按钮颜色
UfoSDK.setRootBackgroundColor(getResources().getColor(R.color.gray));

8、MainActivity下运行

// 启动百度push
PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY,Utils.getMetaValue(PushDemoActivity.this, "api_key"));

9、创建推送,创建通知,发送通知,即可收到通知

在线交流bug:qq1085220040

Android百度云推送接入,附完整代码相关推荐

  1. 基于android百度云推送务设计,Android之基于百度云推送IM

    偶然的一天,发现百度出了一个云推送包,想想百度的服务器还是比较靠谱的说,怎么着也比我们自己搭建的服务器要稳定,于是乎,我就花了几天时间,写了一个小小的聊天工具,权当是练手.主要思路是:客户端的聊天内容 ...

  2. 开发笔记-Android消息推送骚操作:亚马逊-SNS对接FCM和百度云推送

    写在前面: 之前使用阿里云的服务器用阿里消息推送好好的,然后因为国外业务需要使用亚马逊服务器,阿里云推送也不能用,用亚马逊的 SNS (短信消息推送服务),SNS 可以对接多家推送平台,其中 Andr ...

  3. Android 高仿微信实时聊天 基于百度云推送

    一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~ 首先特别感谢:weidi1989分享的Android之基于百度云推送IM ,大家可以直接下载:省了很多事哈,本例中也使用了weidi ...

  4. Android推送 百度云推送 入门篇

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/27231237 现在app基本都有推送的功能,于是看了下百度云的推送,官方文档和D ...

  5. 消息推送之百度云推送Android集成与使用方法

    这两天由于项目需要,研究了一下百度云推送,本来这事没什么多大工作量的,但注册百度开发者账户创建应用令我蛋疼菊紧了好一阵,这些东西做了对技术没啥提升,不做又不行,必经之路.好在我耗费了N多个毫毫秒秒后稀 ...

  6. android开发(25) - 推送的实现,使用百度云推送

    什么叫推送? 中文名称:推送 英文名称:push 定义:描述因特网内容提供者和因特网用户之间工作方式的术语."推送"指因特网内容提供者定期向预订用户"提供"数据 ...

  7. ecmobile实现支付宝支付和百度云推送遇到的问题及解决方案(android)

    1.首先检测支付账户是否开通快捷支付服务,如果开通后,那么公钥是否上传(支付宝问题一定要找支付宝客服解决,找其他人没有用,支付宝客服可以帮你分析底层原因) 2.修改app配置文件:alipay_cal ...

  8. 关于百度云推送加厂商进行app离线推送的步骤小记

    经过漫长的无所事事,终于来了一个活,要搞推送,不能socket,要后台关闭了也能推. 第三方推送,厂商自带,各种看了一下,但最终产品敲定,用百度云推送 研究的过程都是千篇一律,下demo,看文档,测试 ...

  9. 集成百度云推送,Android8.0系统推送收不到问题解决方案

    因为之前没有集成过百度云推送,接手新项目之后项目需求是接入百度云推送,没办法因为项目是海外项目所以只能硬着头皮来接入了,话不多说开始你的表演: 首先就是去百度云推送的官网去创建应用并启用: .在配置详 ...

最新文章

  1. ChipScope Pro内核生成器应用实例
  2. jenkins~管道Pipeline里使用公用类库
  3. Asp.net 2.0 发送邮件
  4. android listview 去掉水波纹效果_CocosCreator之分层管理的ListView
  5. InformaticaPowerCenter调用存储过程
  6. Java动态规划走金字塔_【动态规划基础】数字金字塔
  7. ELK logstash grok匹配失败存另外的es表
  8. 笔试c语言编程题技巧,c语言笔试题答题技巧
  9. 2020年居家实习日志
  10. 华为光猫查看LOID密码
  11. UG NX 12同步建模:调整面大小
  12. 米家推出新款石头机器人,扫拖一体,指哪去哪!
  13. 《大数据大创新:阿里巴巴云上数据中台之道》:解密阿里数据中台建设
  14. windows embed sapi php,19.1 嵌入式SAPI
  15. error:‘%include‘ expects a file name
  16. java8分组_JAVA8 分组统计
  17. ISO 21434概述中文简介总结版
  18. EtherCAT介绍
  19. 做大数据分析时,需要考虑哪些因素?
  20. 基于java jsp的大学教室管理系统

热门文章

  1. [css] 怎么让英文单词的首字母大写?
  2. [css] 举例说明with属性的fill-available有什么应用场景
  3. 前端学习(2537):vue源码解析2伪数组转换为真数组
  4. oracle之set运算符和练习
  5. 前端学习(552):api
  6. spring mvc学习(23):eclipse创建Maven项目没有src/main/java并不能新建的问题
  7. java学习(135):map中泛型使用
  8. java学习(116):arraylist集合实现类
  9. Qt中如何获得文件和文件夹的路径信息
  10. java中为什么要封装_Java中为什么要为基本类型提供封装类呢?