admin管理员组文章数量:1604627
首先是正常极光推送的使用
1.在pubspec.yaml中引入库:jpush_flutter: ^2.4.2
2.创建极光推送工具类
class JPushUtil{
static initJPush(){
JPush().addEventHandler(
onReceiveNotification: (Map message) async{
//推送通知栏新消息
print('new message:$message');
},
onOpenNotification: (Map message) async{
//点击通知
print('onOpenNotification:$message');
setBadge(0);
},
onNotifyMessageUnShow: (Map message) async{
//不显示消息时回调
setBadge(0);
},
);
JPush().applyPushAuthority(
NotificationSettingsIOS(sound: true,alert: true,badge: true)
);
JPush().setup(
appKey: 'jpush appkey',
channel: 'developer-default',
production: false,
debug: true
);
}
//设置tags
static setTags(List<String> tags){
JPush().setTags(tags);
}
//设置别名
static setAlias(String alias){
JPush().setAlias(alias);
}
//删除别名
static deleteAlias(){
JPush().deleteAlias();
}
//清空tags
static cleanTags(){
JPush().cleanTags();
}
//设置角标
static setBadge(int badge){
JPush().setBadge(badge);
}
}
3.配置app下的build.gradle
在build.gradle的android>defaultConfig中增加配置 manifestPlaceholders
android {
compileSdkVersion 33
lintOptions {
checkReleaseBuilds false
abortOnError false
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android/studio/build/application-id.html).
applicationId ""
minSdkVersion 20
targetSdkVersion 31
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
ndk{
//选择要添加的对应 cpu 类型的 .so 库。
//armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设三=三很少设备,三星 Galaxy S6是其中之一。
// arm64-v8a: 第8代、64位ARM处理器
// armeabi: 第5代、第6代的ARM处理器早期的手机用的比较多。
// x86: 平板、模拟器用得比较多。
// x86 64: 64位的平板。
//mips:MIPS32r1 及更高版本(使用硬浮点,并且假设 CPU:FPU 时钟比率为 2:1 以获取最大兼容性。 不提供 micromips 或 MIPS16。)
//mips64:MIPS64r6
//设置支持的S0库架构“armeabi","armeabi-v7a","arm64-v8a","x86""x86
//abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
abiFilters 'armeabi-v7a','arm64-v8a'
}
/* addManifestPlaceholders([
TENCENT_APP_ID: "1109119450"
])*/
manifestPlaceholders = [
TENCENT_APP_ID: "",
JPUSH_PKGNAME : "在极光推送配置的包名",
JPUSH_APPKEY : "", // NOTE: JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
XIAOMI_APPID : "MI-appid",
XIAOMI_APPKEY : "MI-appkey",
// XIAOMI_APPSECRET : "MI-appsecert",
OPPO_APPID : "OP-appid",
OPPO_APPKEY : "OP-appkey",
OPPO_APPSECRET : "OP-appsecert",
VIVO_APPID : "",
VIVO_APPKEY : "",
// VIVO_APPSECRET : "",
// HUAWEI_APPID : "",
// HUAWEI_APPKEY : "",
// HUAWEI_APPSECRET : "",
]
}
signingConfigs {
release {
storeFile file("ati.jks")
storePassword ""
keyAlias "ati"
keyPassword ""
}
debug {
storeFile file("ati.jks")
storePassword ""
keyAlias "ati"
keyPassword ""
}
}
buildTypes {
release {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
// 关闭代码混淆
minifyEnabled true
shrinkResources true
ndk {
abiFilters "armeabi-v7a"
abiFilters "armeabi"
abiFilters "arm64-v8a"
}
}
debug {
signingConfig signingConfigs.debug
}
}
//当在tools:node="remove"无法删除权限时使用,编译构建流程中,把这些权限删除
project.afterEvaluate {
project.android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processResources.doFirst { pm ->
String manifestPath = output.processResources.manifestFile
def manifestContent = file(manifestPath).getText()
manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>', '')
println("manifestContent:" + manifestContent)
file(manifestPath).write(manifestContent)
}
}
}
}
}
4.使用:在需要初始化推送的页面调用JPushUtil.initJPush();
接下来是google play版极光推送
1.google上架普通版jpush会被拒,收到的邮件提示被拒的原因出在jpush sdk上,而我们在极光管方文档并不能找到相关的解决办法
2.找到极光sdk下载位置,当中有 Google Play 版本下载选项
3.下载Google Play 版本sdk前查看jpush_flutter: ^2.4.2
库中sdk的版本,下载的sdk版本需要与flutter中引入的库中的sdk版本一致,因为极光sdk中的jpush、jcore有版本对应关系,经过测试不对应的版本无法接收到推送。(flutter库中的sdk版本可以在本地缓存文件中查看,圈中的是改动前,jpush_flutter: ^2.4.2库中的sdk版本)
4.将下载的sdk解压,复制libs中的jar包
将jar包放入 flutter plugin包 jpush_flutter-2.4.2的 android》libs文件夹下(没有libs文件夹就新建一个,新建后在没刷新出该文件,可以从电脑中jpush_flutter-2.4.2库的本地目录中找到)
在jpush_flutter-2.4.2的 android 》build.gradle文件中修改配置
dependencies {
implementation 'cn.jiguang.sdk:jpush:4.9.0'
// implementation 'cn.jiguang.sdk:jcore:4.1.0'
compile files('libs/jcore-android-4.1.0-google_play.jar')
}
由于将jpush和jcore包都改为Google版本国内IP无法接收到推送(测试中接收不到推送)所以只更改了jcore包的配置,如果只使用google play版可以两个包一起改。
修改后测试能够接收到推送(极光推送5.0会自动加载jcore jar包,所以为尝试这个版本怎么兼容)
5.打包送审,Google play通过。
jpush-android-4.9.0-google-play
6.对极光推送5.0以上的包,例如5.4.0版本的补充:引入implementation 'cn.jiguang.sdk:jpush:5.4.0'
时,在这个包内部引入了cn.jiguang.sdk:jcore:4.7.0
,所以再引入compile files('libs/jcore-android-4.7.0-google_play.jar')
时将会出现引用重复项的报错。
//例如====报错信息(它提示重复的jcore)
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class cn.jiguang.a.a found in modules jetified-jcore-4.7.0-runtime (cn.jiguang.sdk:jcore:4.7.0) and jetified-jcore-android-4.7.0-google_play (jcore-android-4.7.0-google_play.jar)
解决方法:
在以上方法的基础上,引入5.0以上的包时使用排除jar包的代码。
在极光推送jar包的build.gradle文件中修改
//引入cn.jiguang.sdk:jpush:5.4.0,排除其中的jcore
implementation('cn.jiguang.sdk:jpush:5.4.0') {
exclude module: 'jcore'
}
compile files('libs/jcore-android-4.7.0-google_play.jar')
该方法在极光推送的开发文档中有
版权声明:本文标题:flutter集成极光推送google play版本 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728465623a1159415.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论