Ionic3 Cordova Android 6.x集成最新极光推送
Ionic3 cordova6.x集成最新极光推送1.前提目录结构导致的问题解决办法2.集成添加安卓平台安装最新插件(2021-11-30)迁移文件到对应的目录自动化sh脚本(可选)3. 代码开发Ionic补充1.前提目录结构Cordova Android 7.0.0 开始改变了项目安卓平台的架构。因此集成的时候需要注意。安卓平台结构分别为:可以看到 Cordova 从 7.0.0 项目结构开始和
Ionic3 cordova6.x集成最新极光推送
1.前提
-
当前最新插件版本:
cordova-plugin-jcore@1.4.1
jpush-phonegap-plugin@3.8.2 -
插件包对应jpush版本为:4.2.8
jpush-android-4.2.8.jar
目录结构
Cordova Android 7.0.0 开始改变了项目安卓平台的架构。因此集成的时候需要注意。
安卓平台结构分别为:
可以看到 Cordova 从 7.0.0 项目结构开始和原生 Android 项目保持一致:
将 AndroidManifest.xml,assets,res,libs 资源目录整合到 src 目录下
将 src 放入一个 app 模块,app 模块由单独的 gradle 文件配置
导致的问题
因为项目结构的改变,很多插件也开始修改集成方式以支持 7.0.0 的使用,并在此基础上进行插件更新操作。
而很多针对低版本开发的项目比如 Cordova-Android 6.x,如果无法直接升级项目版本,只能选择集成老版本的插件,得不到最新支持。
解决办法
我们已经知道了 7.0.0 开始结构的主要变化,而低版本和高版本的插件集成无非就是拷贝文件的路径不同罢了,核心代码使用都是同一套。
所以低版本项目想要集成只支持 7.0.0 的新版插件,只要导入插件后,将插件对应文件还原到低版本对应路径便可。
2.集成
我们要在低版本的项目集成此插件该怎么做:
- 老版本插件符合要求,直接集成 v3.4.0 以下的插件版本。
- 需要集成最新的功能,集成最新版本,自己手动配置。
第一种就不说了,我们直接进行第二种方式集成:
添加安卓平台
ionic cordova platform add android@6.3.0
安装最新插件(2021-11-30)
- cordova-plugin-jcore@1.4.1
- jpush-phonegap-plugin@3.8.2
ionic cordova plugin add cordova-plugin-jcore@1.4.1
ionic cordova plugin add jpush-phonegap-plugin@3.8.2 --variable APP_KEY=应用key(在极光官网创建应用的key)
导入最新插件后我们再看项目结构,多出了两个目录,这就是新插件
迁移文件到对应的目录
- 将
android/app/src/main/java下的 cn.jiguang.* 拷贝到android/src/目录下 - 将
android/jniLibs下的所有文件拷贝到android/libs/目录下 - 删除
android/app和android/jniLibs目录
自动化sh脚本(可选)
ionic cordova platform rm android
rm -rf ./platforms/android
ionic cordova platform add android@6.3.0
cp -r ./platforms/android/jniLibs/* ./platforms/android/libs
rm -rf ./platforms/android/jniLibs/
3. 代码开发
Ionic
安装 @jiguang-ionic/jpush 包,适配 ionic-native:
npm install --save @jiguang-ionic/jpush@1.0.2
然后在 app.module.ts 中增加
// @jiguang-ionic/jpush@1.0.0+
import { JPush } from '@jiguang-ionic/jpush';
...
providers: [
...
JPush,
...
]
然后在 app.component.ts 中进行初始化,初步集成成功
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, jpush: JPush) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
jpush.init();
jpush.setDebugMode(true);
});
}
消息推送的其他方法和功能,参考插件示例/plugins/jpush-phonegap-plugin/ionic/example/src/home
接着可以在极光官网后台进行消息推送测试。
真机和模拟器都能接收到极光通道的消息推送。
补充
为何文中 JniLibs 文件要拷贝到 libs 下呢?
- 因为 Cordova Android 7.0.0 以下的版本在根目录 build.gradle 中配置了JniLibs 引用路径为 libs。
更多推荐



所有评论(0)