昨天整了下百度推送升级。
之前项目已经集成了百度推送,但是用eclipse开发的。所以需要做一些配置上的修改。
其实百度推送的文档[1]已经写的很清楚了。可是我还是遇到这种因为粗心产生的问题。所以一再提醒一下自己,一定得小心小心再小心。
首先,我们要在AndroidManifest.xml配置百度权限:
<!-- 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" />
其次,要导入百度推送的jar包:
pushservice-最新版本号.jar
和so库。这里,我推荐把带arm的文件夹都拷贝到libs目录下。
百度建议在src/main下新建jniLibs目录,把这些文件夹拷过去,也可以,但在build.gradle里要配置下:
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
如果,你要拷贝到libs目录下:
需要在build.gradle里这样配置:
// task copyNativeLibs(type: Copy) {
// from fileTree(dir: 'libs', include: '*/*.so') into 'build/lib'
// }
// tasks.withType(JavaCompile) {
// compileTask -> compileTask.dependsOn copyNativeLibs
// }
// clean.dependsOn 'cleanCopyNativeLibs'
// tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
// pkgTask.jniFolders = [new File(buildDir, 'lib')]
// }
这里我注释了。
ok,接下来,就是在AndroidManiefest.xml增加各种百度的Service,Recevier了。
然后,百度推送过来的消息,你可以自己定义一个BroadCastRecever接收的。这个在百度推送文档和demo里也有介绍。这里就不赘述了。
这个,我特别建议您直接拷贝百度文档里的配置。
我会跳进的坑就是:
so库总是导入不成功。manifest.xml的配置缺失。
希望可以帮助到你。