因为之前没有集成过百度云推送,接手新项目之后项目需求是接入百度云推送,没办法因为项目是海外项目所以只能硬着头皮来接入了,话不多说开始你的表演:
首先就是去百度云推送的官网去创建应用并启用:
.在配置详情页中,扫描二维码或者点击下载SDK,可以下载对应包名的demo,个人建议直接点击右上角的下载SDK来下载demo,因为我刚开始使用二维码下载下来的demo并不是最新的版本,也没有百度云产品的简介。
.运行demo没问题也可以推送,感觉百度云推送还是很nice的,so那就去集成到咱们自己的项目中吧
.将自己需要的文件提取出来,尽可能的去掉无用的东西。**demo中包好了许多功能是你用不到的,因此需要将自己需要功能的相关文件摘出来。结果测试没问题。需要的东西如下:
pushservice-5.2.0.12.jar包,所有的.so文件,notification_custom_builder.xml(这是通知栏的布局),
注意:如果您的 Android 工程使用的是 Android API level 21 及以上的版本,您的通知图标背景 必须是透明的,否则在 Android5.0 及以上的机器上通知图标可能会变成白色的方块。
-
在该工程下创建一个 libs 文件夹
-
将 pushservice-VERSION.jar 拷贝到 libs 文件夹中,把 SDK 压缩包中的 libs/armeabi 目录下的
libbdpush_V2_9.so 拷贝到工程对应的 libs/armeabi 文件夹下。
-
a) 如果你的工程中没有使用其他的.so,建议只复制 armeabi 文件夹。
-
b) 如果你的工程中还使用了其他的.so 文件,只需要拷贝云推送对应目录下的.so 文件。
-
c) 如果你使用的 Android 开发环境是 Android Stutio,在工程中“src/main”目录中新建名为
jniLibs 的目录,将 libs 文件夹中文件拷贝到“jniLibs”目录内。
-
.AndroidManifest.xm中的权限:
<!-- 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.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.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<!-- 适配 Android N 系统必需的 ContentProvider 写权限声明-->
<uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.你的包名" />
<permission
android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.你的包名 " android:protectionLevel="normal">
.AndroidManifest.xml 注册消息接收 Receiver
客户端需实现自己的 MyPushMessageReceiver,接收 Push 服务的消息,并实现对消息的处理。以
下是 AndroidManifest.xml 中的配置代码。
<!-- push 应用定义消息 receiver 声明 -->
<receiver android:name="YourPackageName.MyPushMessageReceiver">
<intent-filter>
<!-- 接收 push 消息 -->
<action android:name="com.baidu.android.pushservice.action.MESSAGE" />
<!-- 接收 bind、setTags 等 method 的返回结果 -->
<action android:name="com.baidu.android.pushservice.action.RECEIVE" />
<!-- 可选,接受通知点击事件,和通知自定义内容 -->
<action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
</intent-filter>
</receiver>
7. AndroidManifest.xml 增加 pushservice 配置
<!-- push service start -->
<!-- 用于接收系统消息以保证 PushService 正常运行 -->
<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="androi