diff --git a/app/agconnect-services.json b/app/agconnect-services.json
new file mode 100644
index 0000000..ee847ea
--- /dev/null
+++ b/app/agconnect-services.json
@@ -0,0 +1 @@
+{"agcgw":{"url":"connect-drcn.dbankcloud.cn","backurl":"connect-drcn.hispace.hicloud.com","websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn","websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com"},"agcgw_all":{"SG":"connect-dra.dbankcloud.cn","SG_back":"connect-dra.hispace.hicloud.com","CN":"connect-drcn.dbankcloud.cn","CN_back":"connect-drcn.hispace.hicloud.com","RU":"connect-drru.hispace.dbankcloud.ru","RU_back":"connect-drru.hispace.dbankcloud.cn","DE":"connect-dre.dbankcloud.cn","DE_back":"connect-dre.hispace.hicloud.com"},"websocketgw_all":{"SG":"connect-ws-dra.hispace.dbankcloud.cn","SG_back":"connect-ws-dra.hispace.dbankcloud.com","CN":"connect-ws-drcn.hispace.dbankcloud.cn","CN_back":"connect-ws-drcn.hispace.dbankcloud.com","RU":"connect-ws-drru.hispace.dbankcloud.ru","RU_back":"connect-ws-drru.hispace.dbankcloud.cn","DE":"connect-ws-dre.hispace.dbankcloud.cn","DE_back":"connect-ws-dre.hispace.dbankcloud.com"},"client":{"cp_id":"10086000857368069","product_id":"461323198430317227","client_id":"1767315365546720896","client_secret":"E850E689CE235C825BECC77648A7183C12B83DED658DB9299DE327BDBA8371C2","project_id":"461323198430317227","app_id":"116691541","api_key":"DgEDAFb9kA1N7as7xG6yopyuQl8jtjXgqaU8CTZ8royzaRgSWCFIvzAyo7PrRwF3DGbHZ3+Mf5KH7m6Un16Rs+MB5xkbUwj+B4qn/Q==","package_name":"com.cheng.BoLe"},"oauth_client":{"client_id":"116691541","client_type":1},"app_info":{"app_id":"116691541","package_name":"com.cheng.BoLe"},"service":{"analytics":{"collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn","collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.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","resource_id":"p1","channel_id":""},"ml":{"mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"},"cloudstorage":{"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg":"https://ops-dra.agcstorage.link","storage_url_de":"https://ops-dre.agcstorage.link","storage_url_cn":"https://agc-storage-drcn.platform.dbankcloud.cn","storage_url_ru_back":"https://agc-storage-drru.cloud.huawei.ru","storage_url_sg_back":"https://agc-storage-dra.cloud.huawei.asia","storage_url_de_back":"https://agc-storage-dre.cloud.huawei.eu","storage_url_cn_back":"https://agc-storage-drcn.cloud.huawei.com.cn"},"search":{"url":"https://search-drcn.cloud.huawei.com"},"edukit":{"edu_url":"edukit.cloud.huawei.com.cn","dh_url":"edukit.cloud.huawei.com.cn"}},"region":"CN","configuration_version":"3.0","appInfos":[{"package_name":"com.cheng.BoLe","client":{"app_id":"116691541"},"app_info":{"package_name":"com.cheng.BoLe","app_id":"116691541"},"oauth_client":{"client_type":1,"client_id":"116691541"}},{"package_name":"cn.zuom8.jisuloca","client":{"app_id":"116209939"},"app_info":{"package_name":"cn.zuom8.jisuloca","app_id":"116209939"},"oauth_client":{"client_type":1,"client_id":"116209939"}},{"package_name":"cn.zuom8.smartdrive","client":{"app_id":"115184955"},"app_info":{"package_name":"cn.zuom8.smartdrive","app_id":"115184955"},"oauth_client":{"client_type":1,"client_id":"115184955"}}]}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index d135d1b..b8e2671 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,6 +3,7 @@ plugins {
alias(libs.plugins.jetbrainsKotlinAndroid)
id 'kotlin-kapt'
id 'kotlin-parcelize'
+ id 'com.huawei.agconnect'
}
android {
@@ -59,6 +60,23 @@ android {
manifestPlaceholders = [
GETUI_APPID : "ej3hUPd0LR8G1CzkNtyZS3",
GT_INSTALL_CHANNEL: "test",
+ // 华为 相关应用参数
+ HUAWEI_APP_ID : "116691541",
+
+ // 小米相关应用参数
+ XIAOMI_APP_ID : "2882303761520492130",
+ XIAOMI_APP_KEY : "5942049244130",
+
+ // OPPO 相关应用参数
+ OPPO_APP_KEY : "14c5c2d077404b5f987e34f3d4fd2e97",
+ OPPO_APP_SECRET : "cfe7bd2037cf4f16aa1579ff6113d6c1",
+
+ // VIVO 相关应用参数
+ VIVO_APP_ID : "106026636",
+ VIVO_APP_KEY : "be86ca063884357ff7eeb87a2de537d6",
+
+ // 荣耀相关应用参数
+ HONOR_APP_ID : "104542383"
]
}
@@ -163,8 +181,23 @@ dependencies {
implementation files('libs/humesdk-1.0.0.aar') //巨量分包
implementation 'com.getui:gysdk:3.1.7.0' //一键认证sdk
+ implementation 'com.getui:gtsdk:3.3.8.0' // 推送sdk
implementation 'com.getui:gtc:3.2.16.0' //个推公共库,如已接其他个推sdk则保留一个最高版本即可
+ // 根据所需厂商选择集成
+ implementation 'com.getui.opt:hwp:3.1.2' // 华为
+ implementation 'com.getui.opt:xmp:3.3.3' // 小米
+ implementation 'com.assist-v3:oppo:3.5.0' // oppo
+ implementation 'com.assist-v3:vivo:3.2.0' // vivo
+ implementation 'com.getui.opt:honor:3.6.0' // 荣耀
+ //华为厂商推送配置
+ implementation 'com.huawei.hms:push:6.11.0.300'
+ implementation 'com.huawei.agconnect:agconnect-core:1.9.1.300'
+ //荣耀厂商推送配置
+ implementation 'com.hihonor.mcs:push:7.0.61.303'
+ //oppo厂商推送配置
+ implementation 'commons-codec:commons-codec:1.6'
+
//微信
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'
//友盟
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5e5bfd0..73c27c4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -191,6 +191,15 @@
+
+
+
+
+
clientid = $clientid")
+ UserConfigManager.saveGTCid(clientid)
+ }
+
+ // cid 离线上线通知
+ override fun onReceiveOnlineState(context: Context?, online: Boolean) {}
+
+ // 各种事件处理回执
+ override fun onReceiveCommandResult(context: Context?, cmdMessage: GTCmdMessage?) {}
+
+ // 通知到达,只有个推通道下发的通知会回调此方法
+ override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) {
+ L.d("PushIntentService---onNotificationMessageArrived: ${Gson().toJson(msg)}")
+ if (msg!!.intentUri != null) {
+ try {
+ val intent = Intent.parseUri(msg.intentUri, Intent.URI_INTENT_SCHEME)
+ RxBus.defaultInstance.post(PushMessageEvent(intent.getStringExtra("payload") ?: "", 2))
+ } catch (e: URISyntaxException) {
+ L.d(e)
+ }
+ }
+ }
+
+ // 通知点击,只有个推通道下发的通知会回调此方法
+ override fun onNotificationMessageClicked(context: Context?, msg: GTNotificationMessage?) {
+ L.d("PushIntentService---onNotificationMessageClicked: ${Gson().toJson(msg)}")
+ if (msg!!.intentUri != null) {
+ try {
+ val intent = Intent.parseUri(msg.intentUri, Intent.URI_INTENT_SCHEME)
+ startActivity(intent)
+ } catch (e: URISyntaxException) {
+ L.d(e)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/cheng/blzb/service/PushMessageService.kt b/app/src/main/java/com/cheng/blzb/service/PushMessageService.kt
new file mode 100644
index 0000000..ed3f273
--- /dev/null
+++ b/app/src/main/java/com/cheng/blzb/service/PushMessageService.kt
@@ -0,0 +1,6 @@
+package com.cheng.blzb.service
+
+import com.igexin.sdk.PushService
+
+class PushMessageService: PushService() {
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt b/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt
index a708cfb..bb83d24 100644
--- a/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt
+++ b/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt
@@ -28,6 +28,7 @@ import com.g.gysdk.GyCallBack
import com.g.gysdk.GyConfig
import com.gyf.immersionbar.BarHide
import com.gyf.immersionbar.ImmersionBar
+import com.igexin.sdk.PushManager
import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure
import org.jetbrains.anko.startActivity
@@ -170,6 +171,9 @@ class LauncherActivity : BaseActivity() {
L.d("TAG-->>GYManager ePreLogin onFailed =${gyResponse.code}")
}
})
+
+ PushManager.getInstance().preInit(this)
+ PushManager.getInstance().initialize(this)
}
@SuppressLint("UnsafeOptInUsageError")
diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsFragment.kt
index 1756f65..bbeaab9 100644
--- a/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsFragment.kt
+++ b/app/src/main/java/com/cheng/blzb/ui/fragment/bid/publish/goods/MyGoodsFragment.kt
@@ -81,7 +81,7 @@ class MyGoodsFragment: BaseFragment()
}
R.id.btn_view -> {
- PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
+ PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("id", item.id))
}
}
}
diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt
index 0debc10..9b277d9 100644
--- a/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt
+++ b/app/src/main/java/com/cheng/blzb/ui/fragment/home/HomeFragment.kt
@@ -10,6 +10,7 @@ import com.cheng.blzb.common.EventConstants
import com.cheng.blzb.databinding.FragmentHomeBinding
import com.cheng.blzb.event.HomeRefreshEvent
import com.cheng.blzb.manager.EventReportManager
+import com.cheng.blzb.manager.NotificationHelper
import com.cheng.blzb.manager.SearchHistoryManager
import com.cheng.blzb.manager.UserConfigManager
import com.cheng.blzb.ui.activity.PublicActivity
@@ -22,6 +23,7 @@ import com.cheng.blzb.ui.fragment.home.zzdb.ZZDBFragment
import com.cheng.blzb.ui.fragment.mine.vip.VipFragment
import com.cheng.blzb.ui.fragment.search.SearchFragment
import com.cheng.blzb.ui.fragment.search.list.SearchListFragment
+import com.cheng.blzb.utils.PermissionUtils
import com.example.base.common.RxBus
import com.example.base.decoration.GridSpaceItemDecoration
import com.example.base.decoration.SpacesItemDecoration
@@ -29,6 +31,7 @@ import com.example.base.extensions.getColor
import com.example.base.extensions.onClick
import com.example.base.ui.list.ListFragment
import com.example.base.utils.DensityUtils
+import com.example.base.utils.MMKVUtils
import com.example.base.utils.SpanUtils
import java.text.DecimalFormat
import kotlin.math.abs
@@ -60,6 +63,14 @@ class HomeFragment : ListFragment
+ if (!isGranted) NotificationHelper.showDisabledTip(requireActivity(), childFragmentManager)
+ MMKVUtils.put("request_notification_permission", false)
+ }
+ }
}
override fun initData() {
diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/main/MainFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/main/MainFragment.kt
index 8477606..95973b9 100644
--- a/app/src/main/java/com/cheng/blzb/ui/fragment/main/MainFragment.kt
+++ b/app/src/main/java/com/cheng/blzb/ui/fragment/main/MainFragment.kt
@@ -4,6 +4,8 @@ import android.text.TextUtils
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
import com.cheng.blzb.R
+import com.cheng.blzb.bean.PushPayloadEntity
+import com.cheng.blzb.common.AppUpdate
import com.cheng.blzb.common.EventConstants
import com.cheng.blzb.databinding.FragmentMainBinding
import com.cheng.blzb.event.HomeRefreshEvent
@@ -18,8 +20,10 @@ import com.cheng.blzb.ui.activity.PublicActivity
import com.cheng.blzb.ui.base.BasePageAdapter
import com.cheng.blzb.ui.dialog.PublishBidDialog
import com.cheng.blzb.ui.dialog.VipLoginTipDialog
+import com.cheng.blzb.ui.fragment.bid.detail.BidDetailFragment
import com.cheng.blzb.ui.fragment.home.HomeFragment
import com.cheng.blzb.ui.fragment.merchant.MerchantFragment
+import com.cheng.blzb.ui.fragment.merchant.detail.MerchantGoodsDetailFragment
import com.cheng.blzb.ui.fragment.mine.MineFragment
import com.cheng.blzb.ui.fragment.mine.coupon.CouponFragment
import com.cheng.blzb.ui.fragment.mine.vip.VipFragment
@@ -153,7 +157,7 @@ class MainFragment : BaseFragment() {
val pushMessageEvent = RxBus.defaultInstance.toObservable(PushMessageEvent::class.java).subscribe {
if (!TextUtils.isEmpty(it.payload)) {
- val payload = Gson().fromJson(it.payload, com.cheng.blzb.bean.PushPayloadEntity::class.java)
+ val payload = Gson().fromJson(it.payload, PushPayloadEntity::class.java)
if (it.type == 3) handlePushMessage(payload)
mViewModel.reportPushReceipt(payload.msgId, "${it.type}")
}
@@ -161,7 +165,7 @@ class MainFragment : BaseFragment() {
addDisposable(pushMessageEvent)
}
- private fun handlePushMessage(payloadEntity: com.cheng.blzb.bean.PushPayloadEntity) {
+ private fun handlePushMessage(payloadEntity: PushPayloadEntity) {
if (TextUtils.isEmpty(payloadEntity.page)) return
when (payloadEntity.page) {
"member_recharge" -> {
@@ -169,7 +173,30 @@ class MainFragment : BaseFragment() {
requireContext(),
VipFragment::class.java,
Pair("origin", parseData("source", payloadEntity.params)),
-// Pair("goodsType", parseData("type", payloadEntity.params))
+ Pair("goodsType", parseData("type", payloadEntity.params))
+ )
+ }
+
+ "bid_info" -> {
+ val bidId = parseData("bid_info_id", payloadEntity.params)
+ if (TextUtils.isEmpty(bidId)) {
+ toast("标讯id为空")
+ return
+ }
+ PublicActivity.start(requireActivity(),
+ BidDetailFragment::class.java,
+ Pair("source", parseData("source", payloadEntity.params)),
+ Pair("goodsType", parseData("type", payloadEntity.params)),
+ Pair("info_source", parseData("info_source", payloadEntity.params)),
+ Pair("id", bidId),
+ Pair("origin", "push")
+ )
+ }
+
+ "goods_details" -> {
+ PublicActivity.start(requireActivity(),
+ MerchantGoodsDetailFragment::class.java,
+ Pair("id", parseData("goods_id", payloadEntity.params))
)
}
}
@@ -191,6 +218,6 @@ class MainFragment : BaseFragment() {
}
private fun checkVersion() {
- com.cheng.blzb.common.AppUpdate.checkUpdate(this, false) {}
+ AppUpdate.checkUpdate(this, false) {}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/detail/MerchantGoodsDetailFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/detail/MerchantGoodsDetailFragment.kt
index bf467a6..c4c32d2 100644
--- a/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/detail/MerchantGoodsDetailFragment.kt
+++ b/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/detail/MerchantGoodsDetailFragment.kt
@@ -28,6 +28,7 @@ import com.example.base.utils.SpanUtils
import java.text.DecimalFormat
class MerchantGoodsDetailFragment : BaseFragment() {
+ private val id by lazy { arguments?.getString("id") ?: "" }
private var goodsInfo: MerchantGoodsEntity? = null
private val contactsAdapter by lazy { MerchantContactsAdapter() }
@@ -60,9 +61,13 @@ class MerchantGoodsDetailFragment : BaseFragment()
+
+ fun getGoodsInfo(id: String) {
+ showDialog()
+ launchOnUiTryCatch({
+ val response = ApiFactory.apiService.getGoodsInfo(id)
+ if (response.status) {
+ infoLiveData.postValue(response.data)
+ } else toast(response.message, true)
+ dismissDialog()
+ }, {
+ dismissDialog()
+ setError(it)
+ L.d(it)
+ })
+ }
fun sendAuth() {
launchOnUiTryCatch({
diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/list/MerchantGoodsListFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/list/MerchantGoodsListFragment.kt
index 14b62a6..806f1d1 100644
--- a/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/list/MerchantGoodsListFragment.kt
+++ b/app/src/main/java/com/cheng/blzb/ui/fragment/merchant/list/MerchantGoodsListFragment.kt
@@ -64,7 +64,7 @@ class MerchantGoodsListFragment : ListFragment()
val companyLiveData = MutableLiveData()
val addLiveData = MutableLiveData()
val imageLiveData = MutableLiveData()
+ fun userInfo() {
+ showDialog()
+ launchOnUiTryCatch({
+ val response = ApiFactory.apiService.userInfo()
+ if (response.status) {
+ userInfoLiveData.postValue(response.data)
+ } else toast(response.message, true)
+ dismissDialog()
+ }, {
+ dismissDialog()
+ setError(it)
+ L.d(it)
+ })
+ }
+
fun getCompanyInfo() {
showDialog()
launchOnUiTryCatch({
diff --git a/build.gradle b/build.gradle
index 4ce5a86..85a1cc7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,11 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ dependencies {
+ classpath 'com.android.tools.build:gradle:8.0'
+ // 增加AGC插件配置,请您参见AGC插件依赖关系选择合适的AGC插件版本。
+ classpath 'com.huawei.agconnect:agcp:1.9.1.300'
+ }
+}
plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.jetbrainsKotlinAndroid) apply false