diff --git a/.gitignore b/.gitignore index b86af47..3ae7912 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,7 @@ *.iml .gradle /local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml +.idea .DS_Store build diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser deleted file mode 100644 index 1cfc69b..0000000 Binary files a/.idea/caches/build_file_checksums.ser and /dev/null differ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 88ea3aa..0000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - -
- - - - xmlns:android - - ^$ - - - -
-
- - - - xmlns:.* - - ^$ - - - BY_NAME - -
-
- - - - .*:id - - http://schemas.android.com/apk/res/android - - - -
-
- - - - .*:name - - http://schemas.android.com/apk/res/android - - - -
-
- - - - name - - ^$ - - - -
-
- - - - style - - ^$ - - - -
-
- - - - .* - - ^$ - - - BY_NAME - -
-
- - - - .* - - http://schemas.android.com/apk/res/android - - - ANDROID_ATTRIBUTE_ORDER - -
-
- - - - .* - - .* - - - BY_NAME - -
-
-
-
- - -
-
\ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123..0000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 4b84c47..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/dictionaries/Wiki.xml b/.idea/dictionaries/Wiki.xml deleted file mode 100644 index 9a4942c..0000000 --- a/.idea/dictionaries/Wiki.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - mixpush - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 1c26a6e..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 6d4acc5..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 5d19981..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index d646aa8..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index ba8471f..48ad355 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## MixPush:混合推送SDK,快速集成六个厂商推送,共享系统推送通道,杀死也能收到推送,推送到达率90%以上 -[![Download](https://api.bintray.com/packages/mixpush/maven/mixpush-core/images/download.svg)](https://bintray.com/mixpush/maven/mixpush-core) +[![Download](https://maven-badges.herokuapp.com/maven-central/io.github.mixpush/mixpush-core/badge.svg)](https://search.maven.org/search?q=io.github.mixpush) @@ -8,7 +8,7 @@ 1. 开发者只需要少量代码即可集成 小米、华为、魅族、OPPO、VIVO,苹果的厂商推送; -2. 会根据手机厂商推送的支持情况智能选择不同的推送; +2. 根据手机厂商推送的支持情况智能选择不同的推送; 3. 共享系统推送通道,杀死APP也能收到推送,推送到达率高达90%以上; @@ -16,7 +16,7 @@ 5. SDK已经为开发者考虑好各种问题,避免碰壁,从2人超一周开发时间压缩到只需要半天时间即可。 - + ​ > 本SDK不支持商业推送平台,因为第三方商业推送SDK的免费版本基本都存在黑产行为,偷偷给用户推送通知栏广告,诱导用户下载其他APP或打开其他APP,非法获利。 @@ -58,17 +58,18 @@ buildscript { repositories { ... - jcenter() + mavenCentral() maven { url 'http://developer.huawei.com/repo/' } } dependencies { ... - classpath 'com.huawei.agconnect:agcp:1.3.1.300' + classpath 'com.huawei.agconnect:agcp:1.6.0.300' } } allprojects { repositories { ... + mavenCentral() jcenter() maven { url 'http://developer.huawei.com/repo/' } } @@ -81,7 +82,7 @@ allprojects { ```groovy apply plugin: 'com.huawei.agconnect' android { - compileSdkVersion 29 + compileSdkVersion 31 defaultConfig { ... manifestPlaceholders["VIVO_APP_ID"] = "" @@ -95,12 +96,13 @@ android { } } dependencies { - implementation 'com.mixpush:mixpush-core:2.0.2'// 核心包 - implementation 'com.mixpush:mixpush-mi:2.0.2' // 小米推送 - implementation 'com.mixpush:mixpush-meizu:2.0.2' // 魅族推送 - implementation 'com.mixpush:mixpush-huawei:2.0.2' // 华为推送 - implementation 'com.mixpush:mixpush-oppo:2.0.2' // OPPO推送 - implementation 'com.mixpush:mixpush-vivo:2.0.2' // VIVO推送 + def mixpush_version = '2.4.0' + implementation "io.github.mixpush:mixpush-core:$mixpush_version" // 核心包 + implementation "io.github.mixpush:mixpush-mi:$mixpush_version" // 小米推送 + implementation "io.github.mixpush:mixpush-meizu:$mixpush_version" // 魅族推送 + implementation "io.github.mixpush:mixpush-huawei:$mixpush_version" // 华为推送 + implementation "io.github.mixpush:mixpush-oppo:$mixpush_version" // OPPO推送 + implementation "io.github.mixpush:mixpush-vivo:$mixpush_version" // VIVO推送 } ``` @@ -108,13 +110,13 @@ dependencies { 华为推送麻烦一些,需要做3步配置: -1. 参考[官方文档](https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/Preparations)下载 `“agconnect-services.json”`并拷贝到app目录。 +1. 参考[官方文档](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-app-quickstart-0000001071490422)下载 `“agconnect-services.json”`并拷贝到app目录。 2. 配置SHA256证书指纹,否则会提示 **错误 6003 **,详细查看[通用错误码](https://developer.huawei.com/consumer/cn/doc/development/HMS-2-References/hmssdk_huaweipush_api_reference_errorcode)。 3. 配置指纹证书,否则会提示 **错误 907135702**,详细查看[通用错误码](https://developer.huawei.com/consumer/cn/doc/development/HMS-2-References/hmssdk_huaweipush_api_reference_errorcode)。 -![华为图片配置](readme_img_huawei_sha256_settings.png) +![华为图片配置](huawei-config.jpg) @@ -122,17 +124,16 @@ dependencies { 定义监听器 ```java -public class MyUnifiedPushReceiver extends UnifiedPushReceiver { - +public class MyPushReceiver extends MixPushReceiver { @Override - public void onRegisterSucceed(Context context,PushPlatform platform) { + public void onRegisterSucceed(Context context, MixPushPlatform mixPushPlatform) { // 这里需要实现上传regId和推送平台信息到服务端保存, //也可以通过MixPushClient.getInstance().getRegisterId的方式实现 } @Override - public void onNotificationMessageClicked(Context context, UnifiedPushMessage message) { - // TODO 通知栏消息点击触发,实现打开具体页面,打开浏览器等。 + public void onNotificationMessageClicked(Context context, MixPushMessage message) { + // TODO 通知栏消息点击触发,实现打开具体页面,打开浏览器等。 } } ``` @@ -141,10 +142,10 @@ public class MyUnifiedPushReceiver extends UnifiedPushReceiver { ```java // 开启日志 -//UnifiedPush.getInstance().setLogger(new PushLogger(){}); -UnifiedPush.getInstance().setPushListener(new MyUnifiedPushReceiver()); +//MixPush.getInstance().setLogger(new PushLogger(){}); +MixPush.getInstance().setPushReceiver(new MyPushReceiver()); // 默认初始化5个推送平台(小米推送、华为推送、魅族推送、OPPO推送、VIVO推送),以小米推荐作为默认平台 -UnifiedPush.getInstance().register(this); +MixPush.getInstance().register(this); ``` 获取regId,建议在首页的onCreate调用,并上报regId给服务端 ```java @@ -174,8 +175,14 @@ MixPushClient.getInstance().getRegisterId(this, new GetRegisterIdCallback() { -keep class com.mixpush.vivo.VivoPushProvider {*;} # 华为推送 --keep class com.hianalytics.android.**{*;} --keep class com.huawei.updatesdk.**{*;} +-ignorewarnings +-keepattributes *Annotation* +-keepattributes Exceptions +-keepattributes InnerClasses +-keepattributes Signature +-keepattributes SourceFile,LineNumberTable +-keep class com.huawei.hianalytics.**{*;} +-keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;} # 小米推送 @@ -205,7 +212,7 @@ MixPushClient.getInstance().getRegisterId(this, new GetRegisterIdCallback() { ## Java 服务端配置 1. 支持全局推送、单条推送、分组推送。 -2. 建议客户端每次打开APP的时候,都请求api登记RegId更新,并记录最后修改时间,无论regId是否有修改。 +2. 建议客户端每次打开APP的时候,都请求api登记RegId更新,服务端并记录时间,无论regId是否有修改。 3. **由于华为和苹果推送不支持全局推送,需要从数据库查询全部的RegId进行分组推送。** 4. **超过3个月没有打开APP,建议不要推送,避免浪费资源,特别是全局推送的时候。** @@ -214,18 +221,11 @@ MixPushClient.getInstance().getRegisterId(this, new GetRegisterIdCallback() { ##### 添加依赖 ```xml - - - mixpush - https://dl.bintray.com/mixpush/maven/ - - - com.mixpush + io.github.mixpush mixpush-sender - 2.0.2 - pom + 2.3.9 ``` @@ -235,26 +235,27 @@ MixPushClient.getInstance().getRegisterId(this, new GetRegisterIdCallback() { ```java class MixPushServerExample { public static void main(String[] args) { - UnifiedPushSender sender = new UnifiedPushServer.Builder() + MixPushSender sender = new MixPushSender.Builder() .packageName("") - .mi("") + .mi("",false) .meizu("", "") .huawei("", "") .oppo("", "") .vivo("", "", "") .miAPNs("") + .test(true) .build(); MixPushMessageConfig activitiesMessageConfig = new MixPushMessageConfig.Builder() // OPPO 必须在“通道配置 → 新建通道”模块中登记通道,再在发送消息时选择 .oppoPushChannelId("activities") .build(); - UnifiedPushMessage message = new UnifiedPushMessage.Builder() + MixPushMessage message = new MixPushMessage.Builder() .title("这里是标题") .description("这里是副标题") .payload("{\"url\":\"http://github.com/taoweiji\"}") .config(activitiesMessageConfig) .build(); - UnifiedPushTarget target = UnifiedPushTarget.single("mi","xxxx"); + MixPushTarget target = MixPushTarget.single("mi","xxxx"); sender.sendNotificationMessage(message,target); } } @@ -282,12 +283,15 @@ class MixPushServerExample { | messageId | 非必填,会默认生成一个,用于追踪Result | | config | 必填,配置ChannelId等信息 | + + ### 问题汇总 ##### [小米推送](https://dev.mi.com/console/doc/detail?pId=863) -2. MIUI日联网设备数≥10000时,当日可推送`普通消息`数量为MIUI日联网设备数*5。 -3. `普通消息`每日推送数量有限,如果需要开发即时聊天/订单变化,请申请[通知消息权限](https://dev.mi.com/console/doc/detail?pId=2086#faq-permission),发送数量不受限制。 +1. MIUI日联网设备数≥10000时,当日可推送`普通消息`数量为MIUI日联网设备数*5。 +2. 普通消息`每日推送数量有限,如果需要开发即时聊天/订单变化,请申请[通知消息权限](https://dev.mi.com/console/doc/detail?pId=2086#faq-permission),发送数量不受限制。 +3. **使用使用miAPNS,并开启了沙箱,会导致Android手机无法收到推送(相当于只能在正式环境测试)**。 ##### [OPPO推送](https://open.oppomobile.com/wiki/doc#id=10194) @@ -298,32 +302,33 @@ class MixPushServerExample { ##### [VIVO推送](https://dev.vivo.com.cn/documentCenter/doc/156) 1. 目前vivo手机接收的消息为7:00-23:00,服务器允许推送时间为7:00-22:00,系统消息不受此时间限制。 -2. 用户单应用每日运营消息接收条数上限5条,系统消息无限制。 +2. 用户单应用每日运营消息接收条数`上限5条`,系统消息无限制。 3. 正式消息分为运营消息和系统消息,两者每日限制发送量均根据SDK订阅数推算,SDK订阅数小于10000,按10000计数;大于10000,则等于SDK订阅数。 +4. 运营推送vivoSystemMessage必须设置为false,否则会被禁用推送功能。 ##### [魅族推送](http://open-wiki.flyme.cn/doc-wiki/index#id?130) +1. 无需区分运营推送和系统消息。 - -##### 华为推送 +##### [华为推送](https://developer.huawei.com/consumer/cn/doc/development/HMS-2-References/hmssdk_huaweipush_api_reference_errorcode) 1. 不支持全局推送,需要从数据库查询所有的regId进行推送,建议不要查询超过3个月没有打开APP的regId,降低推送压力。 -##### 小米推送 APNs服务 +##### [小米推送 APNs服务](https://dev.mi.com/console/doc/detail?pId=98) 1. 不支持透传功能。 2. 推荐用来代替APNs,可以有效降低服务器推送压力。 ##### [APNs](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns) -1. 不支持全局推送。 +1. 不支持全局推送,需要从数据库查询所有的regId进行推送,建议不要查询超过6个月没有打开APP的regId,降低推送压力。 2. 推送的证书需要区分正式和测试,并且有效期是一年,需要及时更换。 -##### 区分运营推送和系统推送(通知栏渠道匹配) +##### 需要区分运营推送和系统推送(通知栏渠道匹配) 由于运营推送每日推送的数量是有限,如果需要用于开发IM和订单变化的推送,推送的数量是不够的,为了解决这个问题,各家推送都有自己的规范,推出了“系统消息”推送。必须严格准守,运营推送严禁走系统消息通道,否则会被禁用。 @@ -338,33 +343,34 @@ class MixPushServerExample { ##### 透传消息 -1. 默认不开启透传功能,需要手动开启。 +1. 默认不开启透传功能,需要手动开启,但是如果开启小米推送作为默认透传,将无法使用小米进行全局推送,因为会导致非小米手机推送2条推送,必须走分组推送。 2. iOS不支持透传功能。 -3. MixPush推荐使用小米推送作为统一的透传功能,但是如果开启小米推送作为默认透传,将无法使用小米进行全局推送,因为会导致非小米手机推送2条推送,必须走分组推送。 + + ## 测试报告 mi代表使用小米推送,huawei代表是使用华为推送。ok代表通过、- 代表没有测试设备、error代表异常。 -| | 小米手机 | 华为手机 | 魅族手机 | OPPO手机 | VIVO手机 | 一加手机 | +| Android系统 | 小米手机 | 华为手机 | 魅族手机 | OPPO手机 | VIVO手机 | 一加手机 | | ------ | -------- | -------- | -------- | -------- | -------- | -------- | -| 4.4 | mi, ok | mi, ok | mi, ok | mi, ok | mi, ok | - | -| 5.0 | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | mi, ok | -| 6.0 | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | - | -| 7.0 | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | mi, ok | -| 8.0 | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | mi, ok | -| 9.0 | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | oppo, ok | -| 10.0 | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | oppo, ok | +| 4.4 | mi, ok | mi, ok | - | mi, ok | mi, ok | - | +| 5.x | mi, ok | mi, ok | meizu, ok | mi, ok | mi, ok | mi, ok | +| 6.x | mi, ok | mi, ok | meizu, ok | mi, ok | mi, ok | - | +| 7.x | mi, ok | huawei, ok | meizu, ok | oppo, ok | mi, ok | mi, ok | +| 8.x | mi, ok | huawei, ok | meizu, ok | oppo, ok | mi, ok | mi, ok | +| 9.x | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | oppo, ok | +| 10.x | mi, ok | huawei, ok | meizu, ok | oppo, ok | vivo, ok | oppo, ok | ### TODO - 支持Google FCM -- 提供Flutter插件,支持Android 和 iOS。 -- 清理通知栏的工具 +- Flutter插件,支持Android 和 iOS。 - 实现消息回执功能 - 平滑推送 - 定时推送 -- 支持透传 -- 通知栏重要等级 \ No newline at end of file +- 通知栏重要等级设置 +- APNS 官方通道(iOS建议使用小米推送) + diff --git a/build.gradle b/build.gradle index c5cc938..3b2955a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,28 +1,30 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.72' + ext.kotlin_version = '1.7.10' repositories { google() - jcenter() - maven { url 'http://developer.huawei.com/repo/' } - maven { url 'https://dl.bintray.com/mixpush/maven/' } + mavenCentral() + maven { + allowInsecureProtocol true + url 'http://developer.huawei.com/repo/' + } } dependencies { - classpath 'com.android.tools.build:gradle:3.6.0' + classpath 'com.android.tools.build:gradle:4.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.huawei.agconnect:agcp:1.3.1.300' - - classpath 'com.novoda:bintray-release:0.9.2' + classpath 'com.huawei.agconnect:agcp:1.6.0.300' } } allprojects { repositories { google() - jcenter() - maven { url 'http://developer.huawei.com/repo/' } - maven { url 'https://dl.bintray.com/mixpush/maven/' } + mavenCentral() + maven { + allowInsecureProtocol = true + url 'http://developer.huawei.com/repo/' + } } } @@ -30,23 +32,17 @@ task clean(type: Delete) { delete rootProject.buildDir } -subprojects { - apply plugin: 'maven' - uploadArchives { - repositories { - mavenDeployer { -// repository(url: uri('/Users/Wiki/Downloads/repo')) - repository(url: "http://maven.foreend.thejoyrun.com/repository/jiran/") { - authentication(userName: 'admin', password: 'joyrun123') - } - } - } - } -} -allprojects { -// repositories { -// jcenter() +//subprojects { +// apply plugin: 'maven' +// uploadArchives { +// repositories { +// mavenDeployer { +//// repository(url: uri('/Users/Wiki/Downloads/repo')) +// } +// } // } +//} +allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') options.addStringOption('encoding', 'UTF-8') diff --git a/mixpush-core/.gitignore b/client/mixpush-core/.gitignore similarity index 100% rename from mixpush-core/.gitignore rename to client/mixpush-core/.gitignore diff --git a/mixpush-core/build.gradle b/client/mixpush-core/build.gradle similarity index 68% rename from mixpush-core/build.gradle rename to client/mixpush-core/build.gradle index 001ebef..7d4bb98 100644 --- a/mixpush-core/build.gradle +++ b/client/mixpush-core/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 34 defaultConfig { minSdkVersion 14 - targetSdkVersion 29 + consumerProguardFiles "consumer-rules.pro" } buildTypes { @@ -19,5 +19,6 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation "androidx.annotation:annotation:1.8.1" } -apply from: '../maven_public.gradle' \ No newline at end of file +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/client/mixpush-core/consumer-rules.pro b/client/mixpush-core/consumer-rules.pro new file mode 100644 index 0000000..59ab203 --- /dev/null +++ b/client/mixpush-core/consumer-rules.pro @@ -0,0 +1,33 @@ +# MixPush +-keep class com.mixpush.mi.MiPushProvider {*;} +-keep class com.mixpush.meizu.MeizuPushProvider {*;} +-keep class com.mixpush.huawei.HuaweiPushProvider {*;} +-keep class com.mixpush.oppo.OppoPushProvider {*;} +-keep class com.mixpush.vivo.VivoPushProvider {*;} + +# 华为推送 +-ignorewarnings +-keepattributes *Annotation* +-keepattributes Exceptions +-keepattributes InnerClasses +-keepattributes Signature +-keepattributes SourceFile,LineNumberTable +-keep class com.huawei.hianalytics.**{*;} +-keep class com.huawei.updatesdk.**{*;} +-keep class com.huawei.hms.**{*;} + +# 小米推送 +-keep class com.xiaomi.**{*;} + +# OPPO +-keep public class * extends android.app.Service +-keep class com.heytap.msp.** { *;} + +# VIVO +-dontwarn com.vivo.push.** +-keep class com.vivo.push.**{*; } +-keep class com.vivo.vms.**{*; } + +# 魅族 +-keep class com.meizu.**{*;} + diff --git a/mixpush-core/proguard-rules.pro b/client/mixpush-core/proguard-rules.pro similarity index 100% rename from mixpush-core/proguard-rules.pro rename to client/mixpush-core/proguard-rules.pro diff --git a/mixpush-core/src/main/AndroidManifest.xml b/client/mixpush-core/src/main/AndroidManifest.xml similarity index 100% rename from mixpush-core/src/main/AndroidManifest.xml rename to client/mixpush-core/src/main/AndroidManifest.xml diff --git a/mixpush-core/src/main/java/com/mixpush/core/BaseMixPushProvider.java b/client/mixpush-core/src/main/java/com/mixpush/core/BaseMixPushProvider.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/BaseMixPushProvider.java rename to client/mixpush-core/src/main/java/com/mixpush/core/BaseMixPushProvider.java diff --git a/client/mixpush-core/src/main/java/com/mixpush/core/GetRegisterIdCallback.java b/client/mixpush-core/src/main/java/com/mixpush/core/GetRegisterIdCallback.java new file mode 100644 index 0000000..8f5b4df --- /dev/null +++ b/client/mixpush-core/src/main/java/com/mixpush/core/GetRegisterIdCallback.java @@ -0,0 +1,7 @@ +package com.mixpush.core; + +import androidx.annotation.Nullable; + +public abstract class GetRegisterIdCallback { + public abstract void callback(@Nullable MixPushPlatform platform); +} \ No newline at end of file diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushClient.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushClient.java similarity index 73% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushClient.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushClient.java index 2b58f36..8f87602 100644 --- a/mixpush-core/src/main/java/com/mixpush/core/MixPushClient.java +++ b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushClient.java @@ -2,6 +2,8 @@ import android.content.Context; import android.content.Intent; +import android.os.Handler; +import android.os.Looper; import com.mixpush.core.utils.ProcessUtils; @@ -10,7 +12,7 @@ import java.util.Set; public class MixPushClient { - public static String TAG = "UnifiedPush"; + public static String TAG = "MixPush"; public static final String MI = "mi"; public static boolean debug = true; @@ -71,7 +73,7 @@ public void register(Context context, String defaultPlatform) { /** * @param defaultPlatform 默认的推送平台 */ - public void register(Context context, String defaultPlatform, System passThroughPlatform) { + public void register(Context context, String defaultPlatform, String passThroughPlatform) { if (!ProcessUtils.isMainProcess(context)) { handler.getLogger().log(TAG, "只允许在主进程初始化"); return; @@ -112,7 +114,6 @@ public void register(Context context, String defaultPlatform, System passThrough handler.getLogger().log(TAG, "register notification " + pushProvider.getPlatformName()); pushProvider.register(context, RegisterType.notification); notificationPushProvider = pushProvider; - } if (passThroughPushProvider == null && passThroughPlatform != null) { passThroughPushProvider = pushManagerMap.get(passThroughPlatform); @@ -138,50 +139,58 @@ public MixPushHandler getHandler() { } /** - * 120秒超时 + * 60 秒超时 */ public void getRegisterId(Context context, final GetRegisterIdCallback callback) { getRegisterId(context, callback, false); } /** - * 120秒超时 + * 60 秒超时 */ public void getRegisterId(Context context, final GetRegisterIdCallback callback, boolean isPassThrough) { final Context appContext = context.getApplicationContext(); - final BaseMixPushProvider pushProvider; - if (isPassThrough) { - pushProvider = passThroughPushProvider; - } else { - pushProvider = notificationPushProvider; - } - if (pushProvider != null) { - new Thread(new Runnable() { - @Override - public void run() { - int checkCount = 0; - while (true) { - String regId = pushProvider.getRegisterId(appContext); - if (regId != null && !regId.isEmpty()) { - callback.callback(new MixPushPlatform(pushProvider.getPlatformName(), regId)); - break; - } - checkCount++; - if (checkCount == 60) { - callback.callback(null); - break; - } - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + Handler handler = new Handler(Looper.getMainLooper()); + long startTime = System.currentTimeMillis(); + Runnable runnable = new Runnable() { + @Override + public void run() { + if (Math.abs(System.currentTimeMillis() - startTime) > 60000) { + callback.callback(null); + getHandler().getLogger().log("getRegisterId", "超时"); + return; + } + final BaseMixPushProvider pushProvider; + if (isPassThrough) { + pushProvider = passThroughPushProvider; + } else { + pushProvider = notificationPushProvider; + } + if (pushProvider == null) { + handler.postDelayed(this, 2000); + getHandler().getLogger().log("getRegisterId", "pushProvider == null"); + return; + } + if (isPassThrough) { + if (DefaultPassThroughReceiver.passThroughPlatform != null) { + callback.callback(DefaultPassThroughReceiver.passThroughPlatform); + return; + } + } else { + if (DefaultMixPushReceiver.notificationPlatform != null) { + callback.callback(DefaultMixPushReceiver.notificationPlatform); + return; } } - }).start(); - } else { - callback.callback(null); - } + String regId = pushProvider.getRegisterId(appContext); + if (regId != null && !regId.isEmpty()) { + callback.callback(new MixPushPlatform(pushProvider.getPlatformName(), regId)); + return; + } + handler.postDelayed(this, 2000); + } + }; + handler.post(runnable); } public void openApp(Context context) { diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushHandler.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushHandler.java similarity index 73% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushHandler.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushHandler.java index 44c0d83..9ae46ea 100644 --- a/mixpush-core/src/main/java/com/mixpush/core/MixPushHandler.java +++ b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushHandler.java @@ -6,8 +6,8 @@ public class MixPushHandler { private final MixPushLogger logger; - private final MixPushReceiver pushReceiver; - private final MixPushPassThroughReceiver passThroughReceiver; + final DefaultMixPushReceiver pushReceiver; + final DefaultPassThroughReceiver passThroughReceiver; public MixPushLogger callLogger; public MixPushReceiver callPushReceiver; public MixPushPassThroughReceiver callPassThroughReceiver; @@ -34,7 +34,7 @@ public MixPushPassThroughReceiver getPassThroughReceiver() { class DefaultPassThroughReceiver implements MixPushPassThroughReceiver { private final MixPushLogger logger; private MixPushHandler handler; - public static String TAG = "UnifiedPush"; + public static String TAG = "MixPush"; static MixPushPlatform passThroughPlatform = null; public DefaultPassThroughReceiver(MixPushHandler handler, MixPushLogger logger) { @@ -50,6 +50,11 @@ public void onRegisterSucceed(final Context context, final MixPushPlatform pushP } passThroughPlatform = pushPlatform; logger.log(TAG, "onRegisterSucceed " + pushPlatform.toString()); + if (handler.callPassThroughReceiver == null) { + Exception exception = new Exception("必须要在 register() 之前实现 setPassThroughReceiver()"); + logger.log(TAG, exception.getMessage(), exception); + return; + } if (Thread.currentThread() == Looper.getMainLooper().getThread()) { // 在异步进程回调,避免阻塞主进程 new Thread(new Runnable() { @@ -66,6 +71,10 @@ public void run() { @Override public void onReceiveMessage(Context context, MixPushMessage message) { logger.log(TAG, "PassThroughReceiver.onReceiveMessage " + message.toString()); + if (handler.callPassThroughReceiver == null) { + logger.log(TAG, "你必须设置 setPassThroughReceiver() 才能正常工作"); + return; + } handler.callPassThroughReceiver.onReceiveMessage(context, message); } } @@ -73,7 +82,7 @@ public void onReceiveMessage(Context context, MixPushMessage message) { class DefaultMixPushReceiver extends MixPushReceiver { private final MixPushLogger logger; private MixPushHandler handler; - public static String TAG = "UnifiedPush"; + public static String TAG = "MixPush"; static MixPushPlatform notificationPlatform = null; public DefaultMixPushReceiver(MixPushHandler handler, MixPushLogger logger) { @@ -82,29 +91,37 @@ public DefaultMixPushReceiver(MixPushHandler handler, MixPushLogger logger) { } @Override - public void onRegisterSucceed(final Context context, final MixPushPlatform mixPushPlatform) { + public void onRegisterSucceed(final Context context, final MixPushPlatform platform) { + if (platform == null) { + return; + } if (notificationPlatform != null) { - logger.log(TAG, "已经响应onRegisterSucceed,不再重复调用"); + logger.log(TAG, "已经响应 onRegisterSucceed,不再重复调用"); + return; + } + notificationPlatform = platform; + logger.log(TAG, "onRegisterSucceed " + platform.toString()); + if (handler.callPushReceiver == null) { + Exception exception = new Exception("必须要在 register() 之前注册 setPushReceiver()"); + logger.log(TAG, exception.getMessage(), exception); return; } - notificationPlatform = mixPushPlatform; - logger.log(TAG, "onRegisterSucceed " + mixPushPlatform.toString()); if (Thread.currentThread() == Looper.getMainLooper().getThread()) { // 在异步进程回调,避免阻塞主进程 - new Thread(new Runnable() { - @Override - public void run() { - handler.callPushReceiver.onRegisterSucceed(context, mixPushPlatform); - } - }).start(); + new Thread(() -> handler.callPushReceiver.onRegisterSucceed(context, platform)).start(); } else { - handler.callPushReceiver.onRegisterSucceed(context, mixPushPlatform); + handler.callPushReceiver.onRegisterSucceed(context, platform); } } @Override public void onNotificationMessageClicked(Context context, MixPushMessage message) { logger.log(TAG, "onNotificationMessageClicked " + message.toString()); + if (handler.callPushReceiver == null) { + Exception exception = new Exception("必须设置 setPushReceiver() 才能正常工作"); + logger.log(TAG, exception.getMessage(), exception); + return; + } if (message.getPayload() == null || message.getPayload().length() < 5) { MixPushClient.getInstance().openApp(context); handler.callPushReceiver.openAppCallback(context); @@ -117,6 +134,11 @@ public void onNotificationMessageClicked(Context context, MixPushMessage message @Override public void onNotificationMessageArrived(Context context, MixPushMessage message) { logger.log(TAG, "onNotificationMessageArrived " + message.toString()); + if (handler.callPushReceiver == null) { + Exception exception = new Exception("必须设置 setPushReceiver() 才能正常工作"); + logger.log(TAG, exception.getMessage(), exception); + return; + } handler.callPushReceiver.onNotificationMessageArrived(context, message); } } diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushLogger.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushLogger.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushLogger.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushLogger.java diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushMessage.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushMessage.java similarity index 59% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushMessage.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushMessage.java index 169ea48..9ad80d9 100644 --- a/mixpush-core/src/main/java/com/mixpush/core/MixPushMessage.java +++ b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushMessage.java @@ -1,6 +1,11 @@ package com.mixpush.core; -public class MixPushMessage { +import android.os.Parcel; +import android.os.Parcelable; + +import java.io.Serializable; + +public class MixPushMessage implements Serializable, Parcelable { /** * 通知栏标题,透传该字段为空 */ @@ -75,6 +80,7 @@ public String toString() { '}'; } + // public void setMsgId(String msgId) { // this.msgId = msgId; // } @@ -82,4 +88,41 @@ public String toString() { // public String getMsgId() { // return msgId; // } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.title); + dest.writeString(this.description); + dest.writeString(this.platform); + dest.writeString(this.payload); + dest.writeByte(this.passThrough ? (byte) 1 : (byte) 0); + } + + public MixPushMessage() { + } + + protected MixPushMessage(Parcel in) { + this.title = in.readString(); + this.description = in.readString(); + this.platform = in.readString(); + this.payload = in.readString(); + this.passThrough = in.readByte() != 0; + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public MixPushMessage createFromParcel(Parcel source) { + return new MixPushMessage(source); + } + + @Override + public MixPushMessage[] newArray(int size) { + return new MixPushMessage[size]; + } + }; } diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushPassThroughReceiver.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushPassThroughReceiver.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushPassThroughReceiver.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushPassThroughReceiver.java diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushPlatform.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushPlatform.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushPlatform.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushPlatform.java diff --git a/mixpush-core/src/main/java/com/mixpush/core/MixPushReceiver.java b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushReceiver.java similarity index 95% rename from mixpush-core/src/main/java/com/mixpush/core/MixPushReceiver.java rename to client/mixpush-core/src/main/java/com/mixpush/core/MixPushReceiver.java index a60b1d4..38177ce 100644 --- a/mixpush-core/src/main/java/com/mixpush/core/MixPushReceiver.java +++ b/client/mixpush-core/src/main/java/com/mixpush/core/MixPushReceiver.java @@ -7,7 +7,7 @@ public abstract class MixPushReceiver { /** * 通知栏推送SDK注册成功回调 */ - public abstract void onRegisterSucceed(Context context, MixPushPlatform mixPushPlatform); + public abstract void onRegisterSucceed(Context context, MixPushPlatform platform); /** * 通知栏消息被点击回调 diff --git a/mixpush-core/src/main/java/com/mixpush/core/RegisterType.java b/client/mixpush-core/src/main/java/com/mixpush/core/RegisterType.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/RegisterType.java rename to client/mixpush-core/src/main/java/com/mixpush/core/RegisterType.java diff --git a/mixpush-core/src/main/java/com/mixpush/core/utils/NotificationManagerUtils.java b/client/mixpush-core/src/main/java/com/mixpush/core/utils/NotificationManagerUtils.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/utils/NotificationManagerUtils.java rename to client/mixpush-core/src/main/java/com/mixpush/core/utils/NotificationManagerUtils.java diff --git a/mixpush-core/src/main/java/com/mixpush/core/utils/ProcessUtils.java b/client/mixpush-core/src/main/java/com/mixpush/core/utils/ProcessUtils.java similarity index 100% rename from mixpush-core/src/main/java/com/mixpush/core/utils/ProcessUtils.java rename to client/mixpush-core/src/main/java/com/mixpush/core/utils/ProcessUtils.java diff --git a/mixpush-core/src/main/res/values/strings.xml b/client/mixpush-core/src/main/res/values/strings.xml similarity index 100% rename from mixpush-core/src/main/res/values/strings.xml rename to client/mixpush-core/src/main/res/values/strings.xml diff --git a/mixpush-fcm/.gitignore b/client/mixpush-fcm/.gitignore similarity index 100% rename from mixpush-fcm/.gitignore rename to client/mixpush-fcm/.gitignore diff --git a/mixpush-fcm/build.gradle b/client/mixpush-fcm/build.gradle similarity index 92% rename from mixpush-fcm/build.gradle rename to client/mixpush-fcm/build.gradle index 59eedc4..3cb5a33 100644 --- a/mixpush-fcm/build.gradle +++ b/client/mixpush-fcm/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 28 + compileSdkVersion 30 defaultConfig { minSdkVersion 14 - targetSdkVersion 28 + targetSdkVersion 31 versionCode 1 versionName "1.0" diff --git a/mixpush-fcm/proguard-rules.pro b/client/mixpush-fcm/proguard-rules.pro similarity index 100% rename from mixpush-fcm/proguard-rules.pro rename to client/mixpush-fcm/proguard-rules.pro diff --git a/mixpush-fcm/src/main/AndroidManifest.xml b/client/mixpush-fcm/src/main/AndroidManifest.xml similarity index 100% rename from mixpush-fcm/src/main/AndroidManifest.xml rename to client/mixpush-fcm/src/main/AndroidManifest.xml diff --git a/mixpush-fcm/src/main/java/com/unifiedpush/fcm/FcmPushProvider.java b/client/mixpush-fcm/src/main/java/com/unifiedpush/fcm/FcmPushProvider.java similarity index 100% rename from mixpush-fcm/src/main/java/com/unifiedpush/fcm/FcmPushProvider.java rename to client/mixpush-fcm/src/main/java/com/unifiedpush/fcm/FcmPushProvider.java diff --git a/mixpush-fcm/src/main/res/values/strings.xml b/client/mixpush-fcm/src/main/res/values/strings.xml similarity index 100% rename from mixpush-fcm/src/main/res/values/strings.xml rename to client/mixpush-fcm/src/main/res/values/strings.xml diff --git a/mixpush-huawei/.gitignore b/client/mixpush-huawei/.gitignore similarity index 100% rename from mixpush-huawei/.gitignore rename to client/mixpush-huawei/.gitignore diff --git a/mixpush-huawei/build.gradle b/client/mixpush-huawei/build.gradle similarity index 76% rename from mixpush-huawei/build.gradle rename to client/mixpush-huawei/build.gradle index 3b9a096..583402b 100644 --- a/mixpush-huawei/build.gradle +++ b/client/mixpush-huawei/build.gradle @@ -2,11 +2,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 34 defaultConfig { minSdkVersion 14 - targetSdkVersion 29 + } buildTypes { @@ -19,7 +19,6 @@ android { } allprojects { repositories { - jcenter() maven { url 'http://developer.huawei.com/repo/' } } } @@ -27,7 +26,6 @@ allprojects { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(path: ':mixpush-core') - implementation 'com.huawei.hms:push:4.0.4.301' + implementation 'com.huawei.hms:push:6.11.0.300' } - -apply from: '../maven_public.gradle' \ No newline at end of file +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/mixpush-huawei/proguard-rules.pro b/client/mixpush-huawei/proguard-rules.pro similarity index 100% rename from mixpush-huawei/proguard-rules.pro rename to client/mixpush-huawei/proguard-rules.pro diff --git a/client/mixpush-huawei/src/main/AndroidManifest.xml b/client/mixpush-huawei/src/main/AndroidManifest.xml new file mode 100644 index 0000000..6d160d2 --- /dev/null +++ b/client/mixpush-huawei/src/main/AndroidManifest.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mixpush-huawei/src/main/java/com/mixpush/huawei/HmsMessageReceiveActivity.java b/client/mixpush-huawei/src/main/java/com/mixpush/huawei/HmsMessageReceiveActivity.java similarity index 99% rename from mixpush-huawei/src/main/java/com/mixpush/huawei/HmsMessageReceiveActivity.java rename to client/mixpush-huawei/src/main/java/com/mixpush/huawei/HmsMessageReceiveActivity.java index 22d6d01..d53589d 100644 --- a/mixpush-huawei/src/main/java/com/mixpush/huawei/HmsMessageReceiveActivity.java +++ b/client/mixpush-huawei/src/main/java/com/mixpush/huawei/HmsMessageReceiveActivity.java @@ -12,6 +12,7 @@ public class HmsMessageReceiveActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri data = getIntent().getData(); + this.finish(); if(data != null){ MixPushMessage message = new MixPushMessage(); message.setPlatform(HuaweiPushProvider.HUAWEI); @@ -21,6 +22,6 @@ protected void onCreate(Bundle savedInstanceState) { MixPushClient.getInstance().getHandler().getPushReceiver().onNotificationMessageClicked(this,message); } //// mixpush://com.mixpush.huawei/message?title=title&description=description&payload=%7b%22url%22%3a%22http%3a%2f%2fsoso.com%22%7d - this.finish(); + } } \ No newline at end of file diff --git a/mixpush-huawei/src/main/java/com/mixpush/huawei/HuaweiPushProvider.java b/client/mixpush-huawei/src/main/java/com/mixpush/huawei/HuaweiPushProvider.java similarity index 55% rename from mixpush-huawei/src/main/java/com/mixpush/huawei/HuaweiPushProvider.java rename to client/mixpush-huawei/src/main/java/com/mixpush/huawei/HuaweiPushProvider.java index c08d659..a0aab4f 100644 --- a/mixpush-huawei/src/main/java/com/mixpush/huawei/HuaweiPushProvider.java +++ b/client/mixpush-huawei/src/main/java/com/mixpush/huawei/HuaweiPushProvider.java @@ -7,6 +7,8 @@ import com.huawei.agconnect.config.AGConnectServicesConfig; import com.huawei.hms.aaid.HmsInstanceId; +import com.huawei.hms.adapter.internal.AvailableCode; +import com.huawei.hms.api.HuaweiMobileServicesUtil; import com.huawei.hms.common.ApiException; import com.mixpush.core.BaseMixPushProvider; import com.mixpush.core.MixPushPlatform; @@ -15,7 +17,9 @@ import com.mixpush.core.MixPushHandler; import java.lang.reflect.Method; +import java.util.logging.Logger; +import static com.huawei.hms.adapter.internal.AvailableCode.SERVICE_VERSION_UPDATE_REQUIRED; import static com.mixpush.huawei.UnifiedHmsMessageService.TAG; public class HuaweiPushProvider extends BaseMixPushProvider { @@ -41,10 +45,16 @@ public boolean isSupport(Context context) { return false; } String manufacturer = Build.MANUFACTURER.toLowerCase(); - if (manufacturer.equals("huawei")) { - return canHuaWeiPush(); + if (!manufacturer.equals("huawei")) { + return false; + } + int available = HuaweiMobileServicesUtil.isHuaweiMobileServicesAvailable(context); + if (available != AvailableCode.SUCCESS) { + handler.getLogger().log(TAG, "华为推送不可用 ErrorCode = " + available); + return false; } - return false; + return true; +// return canHuaWeiPush(); } /** @@ -70,16 +80,17 @@ public String getPlatformName() { @Override public String getRegisterId(Context context) { - try { - // read from agconnect-services.json - String appId = AGConnectServicesConfig.fromContext(context).getString("client/app_id"); - regId = HmsInstanceId.getInstance(context).getToken(appId, "HCM"); - Log.e(TAG, "get token:" + regId); - return regId; - } catch (ApiException e) { - handler.getLogger().log(TAG, "get token failed", e); - e.printStackTrace(); - } + syncGetToken(context); +// try { +// // read from agconnect-services.json +// String appId = AGConnectServicesConfig.fromContext(context).getString("client/app_id"); +// regId = HmsInstanceId.getInstance(context).getToken(appId, "HCM"); +// Log.e(TAG, "get token:" + regId); +// return regId; +// } catch (ApiException e) { +// handler.getLogger().log(TAG, "hms get token failed " + e.toString() + " https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References-V5/error-code-0000001050255690-V5", e); +// e.printStackTrace(); +// } return null; } @@ -88,8 +99,17 @@ private void syncGetToken(final Context context) { new Thread() { @Override public void run() { - String regId = getRegisterId(context); + try { + // read from agconnect-services.json + String appId = AGConnectServicesConfig.fromContext(context).getString("client/app_id"); + regId = HmsInstanceId.getInstance(context).getToken(appId, "HCM"); + Log.e(TAG, "get token:" + regId); + } catch (ApiException e) { + handler.getLogger().log(TAG, "hms get token failed " + e.toString() + " https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References-V5/error-code-0000001050255690-V5", e); + e.printStackTrace(); + } if (!TextUtils.isEmpty(regId)) { + Log.e("regId", regId); MixPushPlatform mixPushPlatform = new MixPushPlatform(HuaweiPushProvider.HUAWEI, regId); MixPushClient.getInstance().getHandler().getPushReceiver().onRegisterSucceed(context, mixPushPlatform); } diff --git a/mixpush-huawei/src/main/java/com/mixpush/huawei/UnifiedHmsMessageService.java b/client/mixpush-huawei/src/main/java/com/mixpush/huawei/UnifiedHmsMessageService.java similarity index 100% rename from mixpush-huawei/src/main/java/com/mixpush/huawei/UnifiedHmsMessageService.java rename to client/mixpush-huawei/src/main/java/com/mixpush/huawei/UnifiedHmsMessageService.java diff --git a/mixpush-huawei/src/main/res/values/strings.xml b/client/mixpush-huawei/src/main/res/values/strings.xml similarity index 100% rename from mixpush-huawei/src/main/res/values/strings.xml rename to client/mixpush-huawei/src/main/res/values/strings.xml diff --git a/mixpush-meizu/.gitignore b/client/mixpush-meizu/.gitignore similarity index 100% rename from mixpush-meizu/.gitignore rename to client/mixpush-meizu/.gitignore diff --git a/mixpush-vivo/build.gradle b/client/mixpush-meizu/build.gradle similarity index 76% rename from mixpush-vivo/build.gradle rename to client/mixpush-meizu/build.gradle index aa1c3cb..f062ffb 100644 --- a/mixpush-vivo/build.gradle +++ b/client/mixpush-meizu/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 34 defaultConfig { minSdkVersion 14 - targetSdkVersion 29 + } buildTypes { @@ -20,5 +20,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(path: ':mixpush-core') + implementation 'com.meizu.flyme.internet:push-internal:4.1.4' } -apply from: '../maven_public.gradle' \ No newline at end of file + +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/mixpush-meizu/proguard-rules.pro b/client/mixpush-meizu/proguard-rules.pro similarity index 100% rename from mixpush-meizu/proguard-rules.pro rename to client/mixpush-meizu/proguard-rules.pro diff --git a/mixpush-meizu/src/main/AndroidManifest.xml b/client/mixpush-meizu/src/main/AndroidManifest.xml similarity index 97% rename from mixpush-meizu/src/main/AndroidManifest.xml rename to client/mixpush-meizu/src/main/AndroidManifest.xml index 80b3d16..8a09643 100644 --- a/mixpush-meizu/src/main/AndroidManifest.xml +++ b/client/mixpush-meizu/src/main/AndroidManifest.xml @@ -18,7 +18,8 @@ - + diff --git a/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushMsgReceiver.java b/client/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushMsgReceiver.java similarity index 97% rename from mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushMsgReceiver.java rename to client/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushMsgReceiver.java index 6163b93..fce5806 100644 --- a/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushMsgReceiver.java +++ b/client/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushMsgReceiver.java @@ -36,11 +36,12 @@ public void onRegister(Context context, String pushId) { handler.getPushReceiver().onRegisterSucceed(context, mixPushPlatform); } + @Override - public void onHandleIntent(Context context, Intent intent) { + public void onReceive(Context context, Intent intent) { mipush_notification = context.getResources().getIdentifier("mipush_notification", "drawable", context.getPackageName()); mipush_small_notification = context.getResources().getIdentifier("mipush_small_notification", "drawable", context.getPackageName()); - super.onHandleIntent(context, intent); + super.onReceive(context, intent); } @Override diff --git a/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushProvider.java b/client/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushProvider.java similarity index 95% rename from mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushProvider.java rename to client/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushProvider.java index b9917e7..0b5ff23 100644 --- a/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushProvider.java +++ b/client/mixpush-meizu/src/main/java/com/mixpush/meizu/MeizuPushProvider.java @@ -35,7 +35,7 @@ public String getRegisterId(Context context) { public boolean isSupport(Context context) { String manufacturer = Build.MANUFACTURER.toLowerCase(); if (manufacturer.equals("meizu")) { - return MzSystemUtils.isMeizuAndFlyme(); + return MzSystemUtils.isBrandMeizu(context); } return false; } diff --git a/mixpush-meizu/src/main/res/values/strings.xml b/client/mixpush-meizu/src/main/res/values/strings.xml similarity index 100% rename from mixpush-meizu/src/main/res/values/strings.xml rename to client/mixpush-meizu/src/main/res/values/strings.xml diff --git a/mixpush-mi/.gitignore b/client/mixpush-mi/.gitignore similarity index 100% rename from mixpush-mi/.gitignore rename to client/mixpush-mi/.gitignore diff --git a/mixpush-oppo/build.gradle b/client/mixpush-mi/build.gradle similarity index 70% rename from mixpush-oppo/build.gradle rename to client/mixpush-mi/build.gradle index aa1c3cb..67d5331 100644 --- a/mixpush-oppo/build.gradle +++ b/client/mixpush-mi/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 34 defaultConfig { minSdkVersion 14 - targetSdkVersion 29 + } buildTypes { @@ -18,7 +18,8 @@ android { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) implementation project(path: ':mixpush-core') } -apply from: '../maven_public.gradle' \ No newline at end of file + +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/client/mixpush-mi/libs/MiPush_SDK_Client_6_0_1-C.jar b/client/mixpush-mi/libs/MiPush_SDK_Client_6_0_1-C.jar new file mode 100644 index 0000000..2ae1650 Binary files /dev/null and b/client/mixpush-mi/libs/MiPush_SDK_Client_6_0_1-C.jar differ diff --git a/mixpush-vivo/proguard-rules.pro b/client/mixpush-mi/proguard-rules.pro similarity index 54% rename from mixpush-vivo/proguard-rules.pro rename to client/mixpush-mi/proguard-rules.pro index f1b4245..26fd653 100644 --- a/mixpush-vivo/proguard-rules.pro +++ b/client/mixpush-mi/proguard-rules.pro @@ -19,3 +19,14 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile +#MiPushSDK的混淆规则 +-keep class com.xiaomi.mipush.sdk.MiPushMessage {*;} +-keep class com.xiaomi.mipush.sdk.MiPushCommandMessage {*;} +-keep class com.xiaomi.mipush.sdk.PushMessageReceiver {*;} +-keep class com.xiaomi.mipush.sdk.MessageHandleService {*;} +-keep class com.xiaomi.push.service.XMJobService {*;} +-keep class com.xiaomi.push.service.XMPushService {*;} +-keep class com.xiaomi.mipush.sdk.PushMessageHandler {*;} +-keep class com.xiaomi.push.service.receivers.NetworkStatusReceiver {*;} +-keep class com.xiaomi.push.service.receivers.PingReceiver {*;} +-keep class com.xiaomi.mipush.sdk.NotificationClickedActivity {*;} \ No newline at end of file diff --git a/client/mixpush-mi/src/main/AndroidManifest.xml b/client/mixpush-mi/src/main/AndroidManifest.xml new file mode 100644 index 0000000..83e3d2d --- /dev/null +++ b/client/mixpush-mi/src/main/AndroidManifest.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mixpush-mi/src/main/java/com/mixpush/mi/MiPushMessageReceiver.java b/client/mixpush-mi/src/main/java/com/mixpush/mi/MiPushMessageReceiver.java similarity index 100% rename from mixpush-mi/src/main/java/com/mixpush/mi/MiPushMessageReceiver.java rename to client/mixpush-mi/src/main/java/com/mixpush/mi/MiPushMessageReceiver.java diff --git a/mixpush-mi/src/main/java/com/mixpush/mi/MiPushProvider.java b/client/mixpush-mi/src/main/java/com/mixpush/mi/MiPushProvider.java similarity index 97% rename from mixpush-mi/src/main/java/com/mixpush/mi/MiPushProvider.java rename to client/mixpush-mi/src/main/java/com/mixpush/mi/MiPushProvider.java index 9bf09e2..f46a93d 100644 --- a/mixpush-mi/src/main/java/com/mixpush/mi/MiPushProvider.java +++ b/client/mixpush-mi/src/main/java/com/mixpush/mi/MiPushProvider.java @@ -12,7 +12,7 @@ public class MiPushProvider extends BaseMixPushProvider { public static final String MI = "mi"; - public static String TAG = MI; + public static String TAG = "MiPushProvider"; MixPushHandler handler = MixPushClient.getInstance().getHandler(); static RegisterType registerType; diff --git a/mixpush-mi/src/main/res/values/strings.xml b/client/mixpush-mi/src/main/res/values/strings.xml similarity index 100% rename from mixpush-mi/src/main/res/values/strings.xml rename to client/mixpush-mi/src/main/res/values/strings.xml diff --git a/mixpush-oppo/.gitignore b/client/mixpush-oppo/.gitignore similarity index 100% rename from mixpush-oppo/.gitignore rename to client/mixpush-oppo/.gitignore diff --git a/client/mixpush-oppo/build.gradle b/client/mixpush-oppo/build.gradle new file mode 100644 index 0000000..846dfcc --- /dev/null +++ b/client/mixpush-oppo/build.gradle @@ -0,0 +1,34 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 34 + + defaultConfig { + minSdkVersion 19 + } + + repositories { + flatDir { + dirs 'libs' + } + } + sourceSets { + main { + jniLibs.srcDirs = ['libs'] + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) + implementation project(path: ':mixpush-core') + implementation 'commons-codec:commons-codec:1.6' +} +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/client/mixpush-oppo/libs/com.heytap.msp_3.1.0.aar b/client/mixpush-oppo/libs/com.heytap.msp_3.1.0.aar new file mode 100644 index 0000000..48940ff Binary files /dev/null and b/client/mixpush-oppo/libs/com.heytap.msp_3.1.0.aar differ diff --git a/mixpush-mi/proguard-rules.pro b/client/mixpush-oppo/proguard-rules.pro similarity index 100% rename from mixpush-mi/proguard-rules.pro rename to client/mixpush-oppo/proguard-rules.pro diff --git a/mixpush-oppo/src/main/AndroidManifest.xml b/client/mixpush-oppo/src/main/AndroidManifest.xml similarity index 55% rename from mixpush-oppo/src/main/AndroidManifest.xml rename to client/mixpush-oppo/src/main/AndroidManifest.xml index beeb8d7..cd1a19b 100644 --- a/mixpush-oppo/src/main/AndroidManifest.xml +++ b/client/mixpush-oppo/src/main/AndroidManifest.xml @@ -1,46 +1,47 @@ + package="com.heytap.mcssdk"> + android:name="com.heytap.msp.push.service.CompatibleDataMessageCallbackService" + android:exported="false" + android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE"> + android:name="com.heytap.msp.push.service.DataMessageCallbackService" + android:exported="false" + android:permission="com.heytap.mcs.permission.SEND_PUSH_MESSAGE"> - + android:name="OPPO_APP_SECRET" + android:value="UNIFIEDPUSH-${OPPO_APP_SECRET}" /> + android:name="OPPO_APP_KEY" + android:value="UNIFIEDPUSH-${OPPO_APP_KEY}" /> + android:name="com.mixpush.oppo.OppoMessageReceiveActivity" + android:exported="true" + android:theme="@android:style/Theme.Translucent.NoTitleBar"> + android:host="com.mixpush.oppo" + android:path="/message" + android:scheme="mixpush" /> + diff --git a/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoMessageReceiveActivity.java b/client/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoMessageReceiveActivity.java similarity index 82% rename from mixpush-oppo/src/main/java/com/mixpush/oppo/OppoMessageReceiveActivity.java rename to client/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoMessageReceiveActivity.java index 8e540d6..0fde295 100644 --- a/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoMessageReceiveActivity.java +++ b/client/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoMessageReceiveActivity.java @@ -12,6 +12,7 @@ public class OppoMessageReceiveActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri data = getIntent().getData(); + this.finish(); if (data != null) { MixPushMessage message = new MixPushMessage(); message.setPlatform(OppoPushProvider.OPPO); @@ -21,10 +22,7 @@ protected void onCreate(Bundle savedInstanceState) { MixPushClient.getInstance().getHandler().getLogger().log(OppoPushProvider.TAG, "url is " + data.toString()); MixPushClient.getInstance().getHandler().getPushReceiver().onNotificationMessageClicked(this.getApplicationContext(), message); } else { -// MixPushClient.getInstance().getHandler().getLogger().log(OppoPushProvider.TAG, "url is null"); MixPushClient.getInstance().openApp(this); } - // mixpush://com.mixpush.oppo/message?title=title&description=description&payload=%7b%22url%22%3a%22http%3a%2f%2fsoso.com%22%7d - this.finish(); } } \ No newline at end of file diff --git a/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoPushProvider.java b/client/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoPushProvider.java similarity index 95% rename from mixpush-oppo/src/main/java/com/mixpush/oppo/OppoPushProvider.java rename to client/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoPushProvider.java index f89d750..7e6f272 100644 --- a/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoPushProvider.java +++ b/client/mixpush-oppo/src/main/java/com/mixpush/oppo/OppoPushProvider.java @@ -6,10 +6,10 @@ import com.heytap.msp.push.HeytapPushManager; import com.heytap.msp.push.callback.ICallBackResultService; import com.mixpush.core.BaseMixPushProvider; -import com.mixpush.core.MixPushPlatform; -import com.mixpush.core.RegisterType; import com.mixpush.core.MixPushClient; import com.mixpush.core.MixPushHandler; +import com.mixpush.core.MixPushPlatform; +import com.mixpush.core.RegisterType; public class OppoPushProvider extends BaseMixPushProvider { public static final String OPPO = "oppo"; @@ -41,14 +41,14 @@ public String getRegisterId(final Context context) { @Override public boolean isSupport(Context context) { - if (android.os.Build.VERSION.SDK_INT < 19) { + if (Build.VERSION.SDK_INT < 19) { return false; } String brand = Build.BRAND.toLowerCase(); String manufacturer = Build.MANUFACTURER.toLowerCase(); if (manufacturer.equals("oneplus") || manufacturer.equals("oppo") || brand.equals("oppo") || brand.equals("realme")) { HeytapPushManager.init(context, true); - return HeytapPushManager.isSupportPush(); + return HeytapPushManager.isSupportPush(context); } return false; } @@ -94,4 +94,9 @@ public void onGetPushStatus(int responseCode, int status) { public void onGetNotificationStatus(int responseCode, int status) { handler.getLogger().log(OppoPushProvider.TAG, "onGetNotificationStatus responseCode = " + responseCode + ", status = " + status); } + + @Override + public void onError(int i, String s) { + + } } \ No newline at end of file diff --git a/mixpush-oppo/src/main/res/values-zh-rCN/values-zh-rCN.xml b/client/mixpush-oppo/src/main/res/values-zh-rCN/values-zh-rCN.xml similarity index 100% rename from mixpush-oppo/src/main/res/values-zh-rCN/values-zh-rCN.xml rename to client/mixpush-oppo/src/main/res/values-zh-rCN/values-zh-rCN.xml diff --git a/mixpush-oppo/src/main/res/values/values.xml b/client/mixpush-oppo/src/main/res/values/values.xml similarity index 100% rename from mixpush-oppo/src/main/res/values/values.xml rename to client/mixpush-oppo/src/main/res/values/values.xml diff --git a/mixpush-vivo/.gitignore b/client/mixpush-vivo/.gitignore similarity index 100% rename from mixpush-vivo/.gitignore rename to client/mixpush-vivo/.gitignore diff --git a/mixpush-mi/build.gradle b/client/mixpush-vivo/build.gradle similarity index 82% rename from mixpush-mi/build.gradle rename to client/mixpush-vivo/build.gradle index 2fe1818..9805079 100644 --- a/mixpush-mi/build.gradle +++ b/client/mixpush-vivo/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 34 defaultConfig { minSdkVersion 14 - targetSdkVersion 29 + } buildTypes { @@ -21,5 +21,4 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(path: ':mixpush-core') } - -apply from: '../maven_public.gradle' \ No newline at end of file +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/client/mixpush-vivo/libs/pushOpenClient_v3.0.0.4_484_81c1f83_release.jar b/client/mixpush-vivo/libs/pushOpenClient_v3.0.0.4_484_81c1f83_release.jar new file mode 100644 index 0000000..3279a44 Binary files /dev/null and b/client/mixpush-vivo/libs/pushOpenClient_v3.0.0.4_484_81c1f83_release.jar differ diff --git a/client/mixpush-vivo/libs/pushOpenClient_v3.0.0.4_484_81c1f83_release_build.jar b/client/mixpush-vivo/libs/pushOpenClient_v3.0.0.4_484_81c1f83_release_build.jar new file mode 100644 index 0000000..352cc55 Binary files /dev/null and b/client/mixpush-vivo/libs/pushOpenClient_v3.0.0.4_484_81c1f83_release_build.jar differ diff --git a/mixpush-oppo/proguard-rules.pro b/client/mixpush-vivo/proguard-rules.pro similarity index 100% rename from mixpush-oppo/proguard-rules.pro rename to client/mixpush-vivo/proguard-rules.pro diff --git a/client/mixpush-vivo/src/main/AndroidManifest.xml b/client/mixpush-vivo/src/main/AndroidManifest.xml new file mode 100644 index 0000000..3ea296d --- /dev/null +++ b/client/mixpush-vivo/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/mixpush-vivo/src/main/java/com/mixpush/vivo/PushMessageReceiverImpl.java b/client/mixpush-vivo/src/main/java/com/mixpush/vivo/PushMessageReceiverImpl.java similarity index 100% rename from mixpush-vivo/src/main/java/com/mixpush/vivo/PushMessageReceiverImpl.java rename to client/mixpush-vivo/src/main/java/com/mixpush/vivo/PushMessageReceiverImpl.java diff --git a/mixpush-vivo/src/main/java/com/mixpush/vivo/VivoPushProvider.java b/client/mixpush-vivo/src/main/java/com/mixpush/vivo/VivoPushProvider.java similarity index 73% rename from mixpush-vivo/src/main/java/com/mixpush/vivo/VivoPushProvider.java rename to client/mixpush-vivo/src/main/java/com/mixpush/vivo/VivoPushProvider.java index 4a83b49..a376c6a 100644 --- a/mixpush-vivo/src/main/java/com/mixpush/vivo/VivoPushProvider.java +++ b/client/mixpush-vivo/src/main/java/com/mixpush/vivo/VivoPushProvider.java @@ -10,6 +10,7 @@ import com.mixpush.core.MixPushHandler; import com.vivo.push.IPushActionListener; import com.vivo.push.PushClient; +import com.vivo.push.util.VivoPushException; public class VivoPushProvider extends BaseMixPushProvider { MixPushHandler handler = MixPushClient.getInstance().getHandler(); @@ -19,24 +20,26 @@ public class VivoPushProvider extends BaseMixPushProvider { @Override public void register(Context context, RegisterType type) { handler.getLogger().log(TAG, "initialize"); - PushClient.getInstance(context).initialize(); - PushClient.getInstance(context).turnOnPush(new IPushActionListener() { - @Override - public void onStateChanged(int state) { + try { + PushClient.getInstance(context).initialize(); + PushClient.getInstance(context).turnOnPush(state -> { // 开关状态处理, 0代表成功 if (state == 0) { handler.getLogger().log(TAG, "开启成功"); } else { handler.getLogger().log(TAG, "开启失败"); } + }); + String regId = PushClient.getInstance(context).getRegId(); + // 有时候会出现没有回调 OpenClientPushMessageReceiver.onReceiveRegId 的情况,所以需要进行检测 + if (regId != null) { + MixPushPlatform mixPushPlatform = new MixPushPlatform(VivoPushProvider.VIVO, regId); + handler.getPushReceiver().onRegisterSucceed(context, mixPushPlatform); } - }); - String regId = PushClient.getInstance(context).getRegId(); - // 有时候会出现没有回调 OpenClientPushMessageReceiver.onReceiveRegId 的情况,所以需要进行检测 - if (regId != null) { - MixPushPlatform mixPushPlatform = new MixPushPlatform(VivoPushProvider.VIVO, regId); - handler.getPushReceiver().onRegisterSucceed(context, mixPushPlatform); + } catch (VivoPushException e) { + handler.getLogger().log(TAG, "vivo 初始化失败", e); } + } @Override diff --git a/mixpush-vivo/src/main/res/values/strings.xml b/client/mixpush-vivo/src/main/res/values/strings.xml similarity index 100% rename from mixpush-vivo/src/main/res/values/strings.xml rename to client/mixpush-vivo/src/main/res/values/strings.xml diff --git a/example/build.gradle b/example/build.gradle index bf581f4..a9754c6 100644 --- a/example/build.gradle +++ b/example/build.gradle @@ -1,14 +1,13 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' apply plugin: 'com.huawei.agconnect' android { - compileSdkVersion 29 + compileSdkVersion 31 defaultConfig { applicationId EXAMPLE_APPLICATION_ID - minSdkVersion 14 - targetSdkVersion 29 + minSdkVersion 19 + targetSdkVersion 31 versionCode 10 versionName "1.1.0" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' @@ -22,13 +21,22 @@ android { manifestPlaceholders["MEIZU_APP_ID"] = EXAMPLE_MEIZU_APP_ID manifestPlaceholders["MEIZU_APP_KEY"] = EXAMPLE_MEIZU_APP_KEY } - + signingConfigs { + release { + keyAlias '' + keyPassword "" + storePassword "" + storeFile file('.jks') + } + } buildTypes { release { + signingConfig signingConfigs.release minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { +// signingConfig signingConfigs.release minifyEnabled false zipAlignEnabled false debuggable = true @@ -38,12 +46,12 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test.ext:junit:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.30" + implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'com.alibaba:fastjson:1.1.45.android' implementation project(path: ':mixpush-core') diff --git a/example/src/main/AndroidManifest.xml b/example/src/main/AndroidManifest.xml index f82d498..39a7eeb 100644 --- a/example/src/main/AndroidManifest.xml +++ b/example/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ package="com.mixpush.example"> - + - - - + + + + diff --git a/example/src/main/java/com/mixpush/example/MainActivity.kt b/example/src/main/java/com/mixpush/example/MainActivity.kt index f034434..b9783df 100644 --- a/example/src/main/java/com/mixpush/example/MainActivity.kt +++ b/example/src/main/java/com/mixpush/example/MainActivity.kt @@ -6,11 +6,13 @@ import android.content.Context import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.View +import android.widget.TextView import android.widget.Toast import com.mixpush.core.GetRegisterIdCallback import com.mixpush.core.MixPushPlatform import com.mixpush.core.MixPushClient -import kotlinx.android.synthetic.main.activity_main.* +import java.util.* class MainActivity : AppCompatActivity() { @@ -23,14 +25,14 @@ class MainActivity : AppCompatActivity() { if (!NotificationManagerUtils.isPermissionOpen(this)) { NotificationManagerUtils.openPermissionSetting(this) } - copy_reg_id.setOnClickListener { + findViewById(R.id.copy_reg_id).setOnClickListener { if (notificationMixPushPlatform != null) { copy(notificationMixPushPlatform!!.regId!!) } else { Toast.makeText(this, "注册失败", Toast.LENGTH_SHORT).show() } } - copy_pass_through_reg_id.setOnClickListener { + findViewById(R.id.copy_pass_through_reg_id).setOnClickListener { if (passThroughMixPushPlatform != null) { copy(passThroughMixPushPlatform!!.regId!!) } else { @@ -43,6 +45,7 @@ class MainActivity : AppCompatActivity() { updateRegId() } }) + findViewById(R.id.log).text = Date().toString() updateRegId() onRequirePermissions() @@ -73,10 +76,10 @@ class MainActivity : AppCompatActivity() { fun updateRegId() { runOnUiThread { if (notificationMixPushPlatform != null) { - text_reg_id.text = notificationMixPushPlatform.toString() + findViewById(R.id.text_reg_id).text = notificationMixPushPlatform.toString() } if (passThroughMixPushPlatform != null) { - text_pass_through_reg_id.text = passThroughMixPushPlatform.toString() + findViewById(R.id.text_pass_through_reg_id).text = passThroughMixPushPlatform.toString() } } } diff --git a/example/src/main/java/com/mixpush/example/MyMixPushReceiver.kt b/example/src/main/java/com/mixpush/example/MyMixPushReceiver.kt index a902592..abd1997 100644 --- a/example/src/main/java/com/mixpush/example/MyMixPushReceiver.kt +++ b/example/src/main/java/com/mixpush/example/MyMixPushReceiver.kt @@ -3,14 +3,17 @@ package com.mixpush.example import android.content.Context import android.content.Intent import android.net.Uri +import android.os.Looper +import android.util.Log import com.mixpush.core.MixPushPlatform import com.mixpush.core.MixPushMessage import com.mixpush.core.MixPushReceiver import org.json.JSONObject class MyMixPushReceiver : MixPushReceiver() { - override fun onRegisterSucceed(context: Context, mixPushPlatform: MixPushPlatform) { + override fun onRegisterSucceed(context: Context, platform: MixPushPlatform) { // TODO 上传token到服务端 + Log.e("onRegisterSucceed", "$platform") } override fun onNotificationMessageClicked(context: Context, message: MixPushMessage) { diff --git a/example/src/main/java/com/mixpush/example/UserActivity.kt b/example/src/main/java/com/mixpush/example/UserActivity.kt index c783ae6..4694d54 100644 --- a/example/src/main/java/com/mixpush/example/UserActivity.kt +++ b/example/src/main/java/com/mixpush/example/UserActivity.kt @@ -2,12 +2,12 @@ package com.mixpush.example import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import kotlinx.android.synthetic.main.activity_user.* +import android.widget.TextView class UserActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_user) - text_user_id.text = intent.getStringExtra("userId") + findViewById(R.id.text_user_id).text = intent.getStringExtra("userId") } } \ No newline at end of file diff --git a/example/src/main/java/com/mixpush/example/WebViewActivity.kt b/example/src/main/java/com/mixpush/example/WebViewActivity.kt index 71b4ee9..7e26954 100644 --- a/example/src/main/java/com/mixpush/example/WebViewActivity.kt +++ b/example/src/main/java/com/mixpush/example/WebViewActivity.kt @@ -1,23 +1,26 @@ package com.mixpush.example -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.webkit.WebChromeClient +import android.webkit.WebView import android.webkit.WebViewClient -import kotlinx.android.synthetic.main.activity_web_view.* +import androidx.appcompat.app.AppCompatActivity class WebViewActivity : AppCompatActivity() { + private var web_view: WebView? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_web_view) - web_view.loadUrl(intent.getStringExtra("url")) - web_view.settings.javaScriptEnabled = true - web_view.webViewClient = WebViewClient() - web_view.webChromeClient = WebChromeClient() + web_view = findViewById(R.id.web_view) + web_view?.loadUrl(intent.getStringExtra("url")!!) + web_view?.settings?.javaScriptEnabled = true + web_view?.webViewClient = WebViewClient() + web_view?.webChromeClient = WebChromeClient() } override fun onDestroy() { - web_view.destroy(); + web_view?.destroy(); super.onDestroy() } } \ No newline at end of file diff --git a/example/src/main/res/values/strings.xml b/example/src/main/res/values/strings.xml index 2c4d816..e0eb055 100644 --- a/example/src/main/res/values/strings.xml +++ b/example/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - + MixPush diff --git a/gradle.properties_backup b/gradle.properties_backup new file mode 100644 index 0000000..a13b536 --- /dev/null +++ b/gradle.properties_backup @@ -0,0 +1,53 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +android.useAndroidX=true +android.enableJetifier=true + +EXAMPLE_APPLICATION_ID=XX +EXAMPLE_VIVO_APP_ID=XX +EXAMPLE_VIVO_APP_KEY=XX +EXAMPLE_MI_APP_ID=XX +EXAMPLE_MI_APP_KEY=XX +EXAMPLE_OPPO_APP_KEY=XX +EXAMPLE_OPPO_APP_SECRET=XX +EXAMPLE_MEIZU_APP_ID=XX +EXAMPLE_MEIZU_APP_KEY=XX + + +signing.keyId=XX +signing.password=XX +signing.secretKeyRingFile=XX + +OSSRH_USERNAME=XX +OSSRH_PASSWORD=XX + +GROUP_ID=io.github.mixpush +VERSION_NAME=2.3.1 + +POM_NAME=MixPush +POM_DESCRIPTION=MixPush for Android +POM_URL=https://github.com/taoweiji/MixPush +POM_SCM_URL=https://github.com/taoweiji/MixPush +POM_SCM_CONNECTION=scm:git@github.com:taoweiji/MixPush.git +POM_SCM_DEV_CONNECTION=scm:git@github.com:taoweiji/MixPush.git +POM_LICENCE_NAME=The Apache Software License, Version 2.0 +POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt +POM_LICENCE_DIST=repo +POM_DEVELOPER_ID=XX +POM_DEVELOPER_NAME=Wiki +POM_DEVELOPER_EMAIL=XX +android.injected.testOnly=false + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index af76375..673e839 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Jun 17 15:33:35 CST 2020 +#Mon Apr 19 20:13:26 CST 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip diff --git a/huawei-config.jpg b/huawei-config.jpg new file mode 100644 index 0000000..a0b15db Binary files /dev/null and b/huawei-config.jpg differ diff --git a/maven_public.gradle b/maven_public.gradle index 32b33ef..37cb6df 100644 --- a/maven_public.gradle +++ b/maven_public.gradle @@ -1,14 +1,73 @@ -group = "com.mixpush" -version = "2.0.2" - +group = GROUP_ID +version = VERSION_NAME apply plugin: 'maven' -apply plugin: 'com.novoda.bintray-release' -publish { - userOrg = "mixpush" - groupId = group - artifactId = project.name - publishVersion = version - desc = "集成六大厂家推送,推送到达率高达90%以上" - website = "https://github.com/taoweiji/MixPush" - dryRun = false +apply plugin: 'signing' +signing { + sign configurations.archives +} + +boolean isAndroid = project.getPlugins().hasPlugin('com.android.library') +if (isAndroid) { + task androidJavadocs(type: Javadoc) { + source = android.sourceSets.main.java.source + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + excludes = ['**/*.kt'] + } + task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir + } + task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.source + } +} else { + task javadocJar(type: Jar) { + classifier = 'javadoc' + from javadoc + } + task sourcesJar(type: Jar) { + classifier = 'sources' + from sourceSets.main.allSource + } + artifacts { + archives javadocJar, sourcesJar + } +} +uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + repository(url: "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") { + authentication(userName: OSSRH_USERNAME, password: OSSRH_PASSWORD) + } + snapshotRepository(url: "https://s01.oss.sonatype.org/content/repositories/snapshots/") { + authentication(userName: OSSRH_USERNAME, password: OSSRH_PASSWORD) + } + pom.project { + name POM_NAME + packaging isAndroid ? 'jar' : 'aar' + description POM_DESCRIPTION + url POM_URL + scm { + connection POM_SCM_CONNECTION + developerConnection POM_SCM_DEV_CONNECTION + url POM_SCM_URL + } + licenses { + license { + name POM_LICENCE_NAME + url POM_LICENCE_URL + } + } + developers { + developer { + id POM_DEVELOPER_ID + name POM_DEVELOPER_NAME + email POM_DEVELOPER_EMAIL + } + } + } + } + } } \ No newline at end of file diff --git a/mixpush-core/src/androidTest/java/com/mixpush/core/ExampleInstrumentedTest.java b/mixpush-core/src/androidTest/java/com/mixpush/core/ExampleInstrumentedTest.java deleted file mode 100644 index fee3727..0000000 --- a/mixpush-core/src/androidTest/java/com/mixpush/core/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.core; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.core.test", appContext.getPackageName()); - } -} diff --git a/mixpush-core/src/main/java/com/mixpush/core/GetRegisterIdCallback.java b/mixpush-core/src/main/java/com/mixpush/core/GetRegisterIdCallback.java deleted file mode 100644 index d533356..0000000 --- a/mixpush-core/src/main/java/com/mixpush/core/GetRegisterIdCallback.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.mixpush.core; - -public abstract class GetRegisterIdCallback { - public abstract void callback(MixPushPlatform platform); -} \ No newline at end of file diff --git a/mixpush-fcm/src/androidTest/java/com/unifiedpush/gcm/ExampleInstrumentedTest.java b/mixpush-fcm/src/androidTest/java/com/unifiedpush/gcm/ExampleInstrumentedTest.java deleted file mode 100644 index a6e4560..0000000 --- a/mixpush-fcm/src/androidTest/java/com/unifiedpush/gcm/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.gcm; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.gcm.test", appContext.getPackageName()); - } -} diff --git a/mixpush-fcm/src/test/java/com/unifiedpush/gcm/ExampleUnitTest.java b/mixpush-fcm/src/test/java/com/unifiedpush/gcm/ExampleUnitTest.java deleted file mode 100644 index 17aee43..0000000 --- a/mixpush-fcm/src/test/java/com/unifiedpush/gcm/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.mixpush.gcm; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/mixpush-huawei/src/androidTest/java/com/mixpush/huaweipush/ExampleInstrumentedTest.java b/mixpush-huawei/src/androidTest/java/com/mixpush/huaweipush/ExampleInstrumentedTest.java deleted file mode 100644 index 03c4b20..0000000 --- a/mixpush-huawei/src/androidTest/java/com/mixpush/huaweipush/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.huaweipush; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.huaweipush.test", appContext.getPackageName()); - } -} diff --git a/mixpush-huawei/src/main/AndroidManifest.xml b/mixpush-huawei/src/main/AndroidManifest.xml deleted file mode 100644 index 63c87ad..0000000 --- a/mixpush-huawei/src/main/AndroidManifest.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mixpush-meizu/build.gradle b/mixpush-meizu/build.gradle deleted file mode 100644 index 4263089..0000000 --- a/mixpush-meizu/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion 29 - - defaultConfig { - minSdkVersion 14 - targetSdkVersion 29 - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(path: ':mixpush-core') - implementation 'com.meizu.flyme.internet:push-internal:3.9.7' -} - -apply from: '../maven_public.gradle' \ No newline at end of file diff --git a/mixpush-meizu/src/androidTest/java/com/mixpush/meizupush/ExampleInstrumentedTest.java b/mixpush-meizu/src/androidTest/java/com/mixpush/meizupush/ExampleInstrumentedTest.java deleted file mode 100644 index 2fd3a8f..0000000 --- a/mixpush-meizu/src/androidTest/java/com/mixpush/meizupush/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.meizupush; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.meizupush.test", appContext.getPackageName()); - } -} diff --git a/mixpush-mi/libs/MiPush_SDK_Client_3_7_6.jar b/mixpush-mi/libs/MiPush_SDK_Client_3_7_6.jar deleted file mode 100644 index 7a78056..0000000 Binary files a/mixpush-mi/libs/MiPush_SDK_Client_3_7_6.jar and /dev/null differ diff --git a/mixpush-mi/src/androidTest/java/com/mixpush/mipush/ExampleInstrumentedTest.java b/mixpush-mi/src/androidTest/java/com/mixpush/mipush/ExampleInstrumentedTest.java deleted file mode 100644 index 901c053..0000000 --- a/mixpush-mi/src/androidTest/java/com/mixpush/mipush/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.mipush; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.mipush.test", appContext.getPackageName()); - } -} diff --git a/mixpush-mi/src/main/AndroidManifest.xml b/mixpush-mi/src/main/AndroidManifest.xml deleted file mode 100644 index b9a899e..0000000 --- a/mixpush-mi/src/main/AndroidManifest.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - ​ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mixpush-oppo/libs/com.coloros.mcssdk.v2.1.0.jar b/mixpush-oppo/libs/com.coloros.mcssdk.v2.1.0.jar deleted file mode 100644 index f053cb2..0000000 Binary files a/mixpush-oppo/libs/com.coloros.mcssdk.v2.1.0.jar and /dev/null differ diff --git a/mixpush-oppo/src/androidTest/java/com/mixpush/oppopush/ExampleInstrumentedTest.java b/mixpush-oppo/src/androidTest/java/com/mixpush/oppopush/ExampleInstrumentedTest.java deleted file mode 100644 index f821cf9..0000000 --- a/mixpush-oppo/src/androidTest/java/com/mixpush/oppopush/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.oppopush; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.oppopush.test", appContext.getPackageName()); - } -} diff --git a/mixpush-sender/build.gradle b/mixpush-sender/build.gradle deleted file mode 100644 index ce0fcf6..0000000 --- a/mixpush-sender/build.gradle +++ /dev/null @@ -1,40 +0,0 @@ -apply plugin: 'java-library' - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - - // oppo依赖 - api 'org.apache.httpcomponents:httpclient:4.5.12' - api 'com.alibaba:fastjson:1.2.71' - api 'org.apache.httpcomponents:httpmime:4.5.12' - api 'com.mixpush:opush-server-sdk:1.0.5' - // vivo依赖 - api 'com.mixpush:vpush-server-sdk:2.2.0' - api 'org.apache.httpcomponents:httpclient:4.5.12' - api 'com.alibaba:fastjson:1.2.71' - api 'org.apache.httpcomponents:httpmime:4.5.12' - // xiaomi依赖 - api 'com.mixpush:mipush-server-sdk:2.2.21' - api 'com.googlecode.json-simple:json-simple:1.1' - // meizu依赖 - api 'com.meizu.flyme:push-server-sdk:1.2.8.20190114_release' - // huawei依赖 -// api project(path: ':huaweipush-server-sdk') - api 'com.mixpush:huaweipush-server-sdk:2.0.0' - api 'org.apache.commons:commons-lang3:3.9' - api 'com.google.guava:guava:26.0-jre' - api 'org.slf4j:slf4j-api:1.7.26' - api 'org.slf4j:slf4j-log4j12:1.7.26' - api 'com.alibaba:fastjson:1.2.71' - api 'org.apache.httpcomponents:httpclient:4.5.12' - testImplementation 'junit:junit:4.12' - - // apns - api 'cn.teaey.apns4j:apns4j:1.1.4' -} - -sourceCompatibility = "1.8" -targetCompatibility = "1.8" - - -apply from: '../maven_public.gradle' \ No newline at end of file diff --git a/mixpush-sender/src/main/java/com/mixpush/sender/provider/ApnsPushProvider.java b/mixpush-sender/src/main/java/com/mixpush/sender/provider/ApnsPushProvider.java deleted file mode 100644 index 16d9232..0000000 --- a/mixpush-sender/src/main/java/com/mixpush/sender/provider/ApnsPushProvider.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.mixpush.sender.provider; - -import com.oppo.push.server.Notification; -import com.mixpush.sender.MixPushMessage; -import com.mixpush.sender.MixPushProvider; -import com.mixpush.sender.MixPushResult; - -import java.io.FileOutputStream; -import java.util.List; - -import cn.teaey.apns4j.Apns4j; -import cn.teaey.apns4j.keystore.KeyStoreType; -import cn.teaey.apns4j.network.ApnsChannelFactory; -import cn.teaey.apns4j.network.async.ApnsService; - - - -public class ApnsPushProvider extends MixPushProvider { - - - public ApnsPushProvider(FileOutputStream masterSecret, String password) { - - - } - - - @Override - protected MixPushResult sendMessageToSingle(MixPushMessage mixPushMessage, String regId) { - - return null; - } - - @Override - protected MixPushResult sendMessageToList(MixPushMessage mixPushMessage, List regIds) { - - return null; - } - - @Override - public MixPushResult broadcastMessageToAll(MixPushMessage mixPushMessage) { - return new MixPushResult.Builder().provider(this) - .reason(platformName() + " 不支持全局推送") - .statusCode(MixPushResult.NOT_SUPPORT_BROADCAST) - .build(); - } - - private Notification toMessage(MixPushMessage mixPushMessage) { - return null; - } - - @Override - protected String platformName() { - return "apns"; - } - - @Override - public boolean isSupportBroadcastAll(boolean isPassThrough) { - return false; - } - - @Override - public boolean isSupportPassThrough() { - return false; - } -} \ No newline at end of file diff --git a/mixpush-vivo/libs/vivo_pushsdk-v2.9.0.0.jar b/mixpush-vivo/libs/vivo_pushsdk-v2.9.0.0.jar deleted file mode 100644 index 76b91b9..0000000 Binary files a/mixpush-vivo/libs/vivo_pushsdk-v2.9.0.0.jar and /dev/null differ diff --git a/mixpush-vivo/src/androidTest/java/com/mixpush/vivopush/ExampleInstrumentedTest.java b/mixpush-vivo/src/androidTest/java/com/mixpush/vivopush/ExampleInstrumentedTest.java deleted file mode 100644 index 5bafd58..0000000 --- a/mixpush-vivo/src/androidTest/java/com/mixpush/vivopush/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mixpush.vivopush; - -import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("com.mixpush.vivopush.test", appContext.getPackageName()); - } -} diff --git a/mixpush-vivo/src/main/AndroidManifest.xml b/mixpush-vivo/src/main/AndroidManifest.xml deleted file mode 100644 index c77461d..0000000 --- a/mixpush-vivo/src/main/AndroidManifest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - diff --git a/readme_img_huawei_sha256_settings.png b/readme_img_huawei_sha256_settings.png deleted file mode 100644 index dd29fcc..0000000 Binary files a/readme_img_huawei_sha256_settings.png and /dev/null differ diff --git a/huaweipush-server-sdk/.gitignore b/server/huaweipush-server-sdk/.gitignore similarity index 100% rename from huaweipush-server-sdk/.gitignore rename to server/huaweipush-server-sdk/.gitignore diff --git a/huaweipush-server-sdk/build.gradle b/server/huaweipush-server-sdk/build.gradle similarity index 73% rename from huaweipush-server-sdk/build.gradle rename to server/huaweipush-server-sdk/build.gradle index 7c754c7..fc1713a 100644 --- a/huaweipush-server-sdk/build.gradle +++ b/server/huaweipush-server-sdk/build.gradle @@ -1,12 +1,10 @@ apply plugin: 'java-library' dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) api 'org.apache.commons:commons-lang3:3.9' api 'com.google.guava:guava:26.0-jre' api 'org.slf4j:slf4j-api:1.7.26' api 'org.slf4j:slf4j-log4j12:1.7.26' -// api 'log4j:log4j:1.2.17' api 'com.alibaba:fastjson:1.2.71' api 'org.apache.httpcomponents:httpclient:4.5.12' @@ -15,4 +13,6 @@ dependencies { sourceCompatibility = "1.8" targetCompatibility = "1.8" -//apply from: '../maven_public.gradle' \ No newline at end of file + + +apply from: '../../maven_public.gradle' \ No newline at end of file diff --git a/huaweipush-server-sdk/src/main/java/com/huawei/push/android/AndroidNotification.java b/server/huaweipush-server-sdk/src/main/java/com/huawei/push/android/AndroidNotification.java similarity index 88% rename from huaweipush-server-sdk/src/main/java/com/huawei/push/android/AndroidNotification.java rename to server/huaweipush-server-sdk/src/main/java/com/huawei/push/android/AndroidNotification.java index b891f5d..cbb96b0 100644 --- a/huaweipush-server-sdk/src/main/java/com/huawei/push/android/AndroidNotification.java +++ b/server/huaweipush-server-sdk/src/main/java/com/huawei/push/android/AndroidNotification.java @@ -140,6 +140,15 @@ public class AndroidNotification { @JSONField(name = "foreground_show") private boolean foregroundShow; + @JSONField(name = "inbox_content") + private List inboxContent; + + @JSONField(name = "buttons") + private List