From 2cac9b9218e261e0f5fa8e186d01b2097d4a9a5c Mon Sep 17 00:00:00 2001 From: xuqm Date: Thu, 23 Feb 2023 15:07:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/agconnect-services.json | 96 ++++++++++++++++++++++ app/build.gradle | 3 + .../cn/org/bjca/trust/pushdemo/MainActivity.kt | 28 +++++++ build.gradle | 12 ++- push/build.gradle | 5 +- push/proguard-rules.pro | 13 ++- push/src/main/AndroidManifest.xml | 21 ++++- .../org/bjca/trust/push/huawei/HwMessageService.kt | 13 +++ .../org/bjca/trust/push/provider/PushProvider.kt | 44 ++++++++-- settings.gradle | 3 + 10 files changed, 224 insertions(+), 14 deletions(-) create mode 100644 app/agconnect-services.json create mode 100644 push/src/main/java/cn/org/bjca/trust/push/huawei/HwMessageService.kt diff --git a/app/agconnect-services.json b/app/agconnect-services.json new file mode 100644 index 0000000..ab957f5 --- /dev/null +++ b/app/agconnect-services.json @@ -0,0 +1,96 @@ +{ + "agcgw":{ + "backurl":"connect-drcn.hispace.hicloud.com", + "url":"connect-drcn.dbankcloud.cn", + "websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com", + "websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn" + }, + "agcgw_all":{ + "CN":"connect-drcn.dbankcloud.cn", + "CN_back":"connect-drcn.hispace.hicloud.com", + "DE":"connect-dre.dbankcloud.cn", + "DE_back":"connect-dre.hispace.hicloud.com", + "RU":"connect-drru.hispace.dbankcloud.ru", + "RU_back":"connect-drru.hispace.dbankcloud.cn", + "SG":"connect-dra.dbankcloud.cn", + "SG_back":"connect-dra.hispace.hicloud.com" + }, + "websocketgw_all":{ + "CN":"connect-ws-drcn.hispace.dbankcloud.cn", + "CN_back":"connect-ws-drcn.hispace.dbankcloud.com", + "DE":"connect-ws-dre.hispace.dbankcloud.cn", + "DE_back":"connect-ws-dre.hispace.dbankcloud.com", + "RU":"connect-ws-drru.hispace.dbankcloud.ru", + "RU_back":"connect-ws-drru.hispace.dbankcloud.cn", + "SG":"connect-ws-dra.hispace.dbankcloud.cn", + "SG_back":"connect-ws-dra.hispace.dbankcloud.com" + }, + "client":{ + "cp_id":"890086000102126289", + "product_id":"388421841221324973", + "client_id":"1097147676853554624", + "client_secret":"9197FDE892D57B19533CBFB5BC34DD396EADE59916977DA0986C313B19F4B337", + "project_id":"388421841221324973", + "app_id":"107729977", + "api_key":"DAEDAN8kvIq9473K8CieVezr5XWTQe8EQcy5cEiP4lJCG/y3tN53/z9QAtCc0hfVHdEqRKU2QBIkKrGzbi5YgHV9yMjIl+7lMtj1lg==", + "package_name":"cn.org.bjca.trust.pushdemo" + }, + "oauth_client":{ + "client_id":"107729977", + "client_type":1 + }, + "app_info":{ + "app_id":"107729977", + "package_name":"cn.org.bjca.trust.pushdemo" + }, + "service":{ + "analytics":{ + "collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn", + "collector_url_ru":"datacollector-drru.dt.dbankcloud.ru,datacollector-drru.dt.hicloud.com", + "collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn", + "collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn", + "collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn", + "resource_id":"p1", + "channel_id":"" + }, + "edukit":{ + "edu_url":"edukit.edu.cloud.huawei.com.cn", + "dh_url":"edukit.edu.cloud.huawei.com.cn" + }, + "search":{ + "url":"https://search-drcn.cloud.huawei.com" + }, + "cloudstorage":{ + "storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia", + "storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru", + "storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru", + "storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu", + "storage_url_de":"https://ops-dre.agcstorage.link", + "storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn", + "storage_url_sg":"https://ops-dra.agcstorage.link", + "storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn", + "storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn" + }, + "ml":{ + "mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn" + } + }, + "region":"CN", + "configuration_version":"3.0", + "appInfos":[ + { + "package_name":"cn.org.bjca.trust.pushdemo", + "client":{ + "app_id":"107729977" + }, + "app_info":{ + "package_name":"cn.org.bjca.trust.pushdemo", + "app_id":"107729977" + }, + "oauth_client":{ + "client_type":1, + "client_id":"107729977" + } + } + ] +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index f8e20ef..0c88bb1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' + id 'com.huawei.agconnect' } android { @@ -19,6 +20,8 @@ android { manifestPlaceholders = [ XIAOMI_APP_ID : "2882303761520224743", XIAOMI_APP_KEY : "5762022470743", + + HUAWEI_APP_ID : "107729977", ] } diff --git a/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt b/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt index 3cdedec..94919aa 100644 --- a/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt +++ b/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt @@ -1,9 +1,14 @@ package cn.org.bjca.trust.pushdemo import android.os.Bundle +import android.text.TextUtils +import android.util.Log import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import cn.org.bjca.trust.push.PushSdk +import cn.org.bjca.trust.push.common.LogHelper +import com.huawei.hms.aaid.HmsInstanceId +import com.huawei.hms.common.ApiException class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -11,6 +16,29 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.activity_main) findViewById(R.id.tv).setOnClickListener { PushSdk.instance.register(this, "xuqm") + + + getToken() + } } + private fun getToken() { + // 创建一个新线程 + object : Thread() { + override fun run() { + try { + // 从agconnect-services.json文件中读取APP_ID + val appId = "107729977" + + // 输入token标识"HCM" + val tokenScope = "HCM" + val token = HmsInstanceId.getInstance(this@MainActivity).getToken(appId, tokenScope) + LogHelper.e( "get token:$token") + + } catch (e: ApiException) { + LogHelper.e( "get token failed, $e") + } + } + }.start() + } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 60a0620..e2d02eb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,17 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. + + +buildscript { + dependencies { + // 增加Android Gradle插件版本号配置,{version}为实际的Gradle插件版本号,例如7.1.1。 + classpath 'com.android.tools.build:gradle:7.1.1' + // 增加AGC插件配置,请您参见AGC插件依赖关系选择合适的AGC插件版本。 + classpath 'com.huawei.agconnect:agcp:1.6.0.300' + } +} plugins { id 'com.android.application' version '7.3.1' apply false id 'com.android.library' version '7.3.1' apply false id 'org.jetbrains.kotlin.android' version '1.7.20' apply false } -apply from: "config.gradle" \ No newline at end of file +apply from: "config.gradle" diff --git a/push/build.gradle b/push/build.gradle index f5c8b6c..396c3e8 100644 --- a/push/build.gradle +++ b/push/build.gradle @@ -77,8 +77,11 @@ dependencies { // 小米推送 // implementation (name: 'MiPush_SDK_Client_5_3_0-C_3rd', ext: 'aar') -} + // 华为推送 + implementation 'com.huawei.hms:push:6.9.0.300' + +} // 这个是把源码打入aar包中的任务 task sourceJar(type: Jar) { archiveClassifier.set('sources') diff --git a/push/proguard-rules.pro b/push/proguard-rules.pro index 1dad3b4..839998a 100644 --- a/push/proguard-rules.pro +++ b/push/proguard-rules.pro @@ -124,4 +124,15 @@ -keep interface kotlin.Metadata { *; } --keepattributes RuntimeVisibleAnnotations \ No newline at end of file +-keepattributes RuntimeVisibleAnnotations + +# 华为相关 +-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.**{*;} \ No newline at end of file diff --git a/push/src/main/AndroidManifest.xml b/push/src/main/AndroidManifest.xml index a51977d..f101c6c 100644 --- a/push/src/main/AndroidManifest.xml +++ b/push/src/main/AndroidManifest.xml @@ -6,7 +6,24 @@ android:name=".provider.PushProvider" android:authorities="${applicationId}.szyx.push" android:exported="false" /> - - + + + + + + + + + + \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/huawei/HwMessageService.kt b/push/src/main/java/cn/org/bjca/trust/push/huawei/HwMessageService.kt new file mode 100644 index 0000000..0bf35fb --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/huawei/HwMessageService.kt @@ -0,0 +1,13 @@ +package cn.org.bjca.trust.push.huawei + +import android.os.Bundle +import cn.org.bjca.trust.push.common.LogHelper +import com.huawei.hms.push.HmsMessageService + +class HwMessageService: HmsMessageService() { + + override fun onNewToken(p0: String?, p1: Bundle?) { + super.onNewToken(p0, p1) + LogHelper.e( "get token:$p0") + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/provider/PushProvider.kt b/push/src/main/java/cn/org/bjca/trust/push/provider/PushProvider.kt index 59b5676..db68614 100644 --- a/push/src/main/java/cn/org/bjca/trust/push/provider/PushProvider.kt +++ b/push/src/main/java/cn/org/bjca/trust/push/provider/PushProvider.kt @@ -6,12 +6,16 @@ import android.content.UriMatcher import android.content.pm.PackageManager import android.database.Cursor import android.net.Uri +import android.text.TextUtils +import android.util.Log import androidx.sqlite.db.SupportSQLiteQueryBuilder import cn.org.bjca.trust.push.CrashHandler import cn.org.bjca.trust.push.common.CommonHelper import cn.org.bjca.trust.push.common.LogHelper import cn.org.bjca.trust.push.db.DbHelper import cn.org.bjca.trust.push.db.device.Device +import com.huawei.hms.aaid.HmsInstanceId +import com.huawei.hms.common.ApiException import com.xiaomi.push.it @@ -34,15 +38,7 @@ class PushProvider : ContentProvider() { CrashHandler.init() // 初始化唯一码 initDevice() - - val manifestField = context!!.packageManager.getApplicationInfo( - context!!.packageName, - PackageManager.GET_META_DATA - ).metaData.getString("XIAOMI_APP_ID") - - LogHelper.e("====>${manifestField}") - - +getHwToken() // MiPushClient.registerPush(this, APP_ID, APP_KEY); return true @@ -112,4 +108,34 @@ class PushProvider : ContentProvider() { else -> null } } + + // 华为相关 + private fun getHwToken() { + // 创建一个新线程 + object : Thread() { + override fun run() { + try { + + + val appId = context!!.packageManager.getApplicationInfo( + context!!.packageName, + PackageManager.GET_META_DATA + ).metaData.getString("HUAWEI_APP_ID")?.substring(1) + LogHelper.e("appId:$appId") + + // 输入token标识"HCM" + val tokenScope = "HCM" + val token = HmsInstanceId.getInstance(context).getToken(appId, tokenScope) + LogHelper.e("get token:$token") + + // 判断token是否为空 +// if (!TextUtils.isEmpty(token)) { +//// sendRegTokenToServer(token) +// } + } catch (e: ApiException) { + LogHelper.e("get token failed, $e") + } + } + }.start() + } } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 31dfacf..e0cb222 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,7 @@ pluginManagement { repositories { + maven {url 'https://developer.huawei.com/repo/'} + maven { url 'http://nexus.51trust.net/repository/android-group/' allowInsecureProtocol true @@ -13,6 +15,7 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { + maven {url 'https://developer.huawei.com/repo/'} maven { url 'http://127.0.0.1:1022/repository/maven-public/' allowInsecureProtocol true