添加推送
This commit is contained in:
parent
30eabe1f42
commit
a2ad52a560
|
|
@ -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"}}]}
|
||||
|
|
@ -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:+'
|
||||
//友盟
|
||||
|
|
|
|||
|
|
@ -191,6 +191,15 @@
|
|||
|
||||
</activity>
|
||||
|
||||
<!--推送-->
|
||||
<service
|
||||
android:name=".service.PushMessageService"
|
||||
android:exported="false"
|
||||
android:label="PushService"
|
||||
android:process=":pushservice" />
|
||||
|
||||
<service android:name=".service.PushIntentService" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.fileprovider"
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import com.g.gysdk.GYManager
|
|||
import com.g.gysdk.GYResponse
|
||||
import com.g.gysdk.GyCallBack
|
||||
import com.g.gysdk.GyConfig
|
||||
import com.igexin.sdk.PushManager
|
||||
import com.scwang.smart.refresh.header.MaterialHeader
|
||||
import com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||
import com.tencent.mmkv.MMKV
|
||||
|
|
@ -78,6 +79,9 @@ class BaseApplication : MvvmApplication() {
|
|||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
PushManager.getInstance().preInit(this)
|
||||
PushManager.getInstance().initialize(this)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,13 +22,7 @@ object NotificationHelper {
|
|||
private val notificationManager by lazy { Utils.getApp().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager }
|
||||
|
||||
private const val DEFAULT_CHANNEL_ID = "default"
|
||||
private const val DOWNLOAD_CHANNEL_ID = "download"
|
||||
private const val FOREGROUND_CHANNEL_ID = "foreground"
|
||||
|
||||
private const val DOWNLOAD_GROUP = "download_group"
|
||||
|
||||
private const val DOWNLOAD_CANCEL_CODE = 2000
|
||||
private const val DOWNLOAD_RETRY_CODE = 3000
|
||||
private const val MESSAGE_CHANNEL_ID = "message"
|
||||
|
||||
private var _notificationId = 1000
|
||||
|
||||
|
|
@ -40,17 +34,17 @@ object NotificationHelper {
|
|||
}
|
||||
|
||||
/**
|
||||
* 前台通知
|
||||
* 消息通知
|
||||
*/
|
||||
fun startForeground(service: Service) {
|
||||
val channelId = createNotificationChannel(FOREGROUND_CHANNEL_ID, "Foreground", NotificationManager.IMPORTANCE_LOW)
|
||||
val builder = NotificationCompat.Builder(service, channelId)
|
||||
val notification = builder
|
||||
.setContentText("文件下载服务运行中")
|
||||
fun createMessageNotification(context: Context): Notification {
|
||||
val channelId = createNotificationChannel(MESSAGE_CHANNEL_ID, "Message", NotificationManager.IMPORTANCE_HIGH)
|
||||
val builder = NotificationCompat.Builder(context, channelId)
|
||||
return builder
|
||||
.setContentTitle("")
|
||||
.setContentText("")
|
||||
.setSmallIcon(R.mipmap.ic_launcher_icon)
|
||||
.setCategory(Notification.CATEGORY_SERVICE)
|
||||
.setCategory(Notification.CATEGORY_MESSAGE)
|
||||
.build()
|
||||
service.startForeground(1, notification)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -69,7 +63,6 @@ object NotificationHelper {
|
|||
*/
|
||||
private fun createNotificationChannel(channelId: String, channelName: String, importance: Int): String {
|
||||
val channel = NotificationChannel(channelId, channelName, importance)
|
||||
channel.setSound(null, null)
|
||||
notificationManager.createNotificationChannel(channel)
|
||||
return channelId
|
||||
}
|
||||
|
|
@ -88,13 +81,10 @@ object NotificationHelper {
|
|||
/**
|
||||
* 通知被禁用时显示提示
|
||||
*/
|
||||
fun showDisabledTip(activity: Activity, fm: FragmentManager, isHomePage: Boolean = false) {
|
||||
if (isHomePage) {
|
||||
toast("平台推送消息需要通知权限,检测到您已关闭相关权限,请前往设置手动打开")
|
||||
} else {
|
||||
val f = TipDialog.newInstance("请开启通知权限", "为方便查看下载进度,请在设置中打开【允许通知】")
|
||||
fun showDisabledTip(activity: Activity, fm: FragmentManager) {
|
||||
val f = TipDialog.newInstance("请开启通知权限", "未避免错过重要消息,请在设置中打开【允许通知】", "去设置", "取消", cancelable = false)
|
||||
f.setOnSelectListener {
|
||||
if (it == DialogEnum.CLICK_OK) {
|
||||
if (it == DialogEnum.CLICK_CANCEL) {
|
||||
try {
|
||||
//8.0及以上
|
||||
val intent = Intent()
|
||||
|
|
@ -114,4 +104,3 @@ object NotificationHelper {
|
|||
f.show(fm, TipDialog::class.java.simpleName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
package com.cheng.blzb.service
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.cheng.blzb.event.PushMessageEvent
|
||||
import com.cheng.blzb.manager.UserConfigManager
|
||||
import com.example.base.common.RxBus
|
||||
import com.example.base.utils.L
|
||||
import com.google.gson.Gson
|
||||
import com.igexin.sdk.GTIntentService
|
||||
import com.igexin.sdk.message.GTCmdMessage
|
||||
import com.igexin.sdk.message.GTNotificationMessage
|
||||
import com.igexin.sdk.message.GTTransmitMessage
|
||||
import java.net.URISyntaxException
|
||||
|
||||
|
||||
class PushIntentService : GTIntentService() {
|
||||
|
||||
override fun onReceiveServicePid(context: Context?, pid: Int) {}
|
||||
|
||||
/**
|
||||
* 此方法用于接收和处理透传消息。透传消息个推只传递数据,不做任何处理,客户端接收到透传消息后需要自己去做后续动作处理,如通知栏展示、弹框等。
|
||||
* 如果开发者在客户端将透传消息创建了通知栏展示,建议将展示和点击回执上报给个推。
|
||||
*/
|
||||
override fun onReceiveMessageData(context: Context?, msg: GTTransmitMessage) {
|
||||
val payload = msg.payload
|
||||
val data = String(payload)
|
||||
L.d("receiver payload = $data") //透传消息文本内容
|
||||
}
|
||||
|
||||
// 接收 cid
|
||||
override fun onReceiveClientId(context: Context?, clientid: String) {
|
||||
L.d("PushIntentService---onReceiveClientId -> 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
package com.cheng.blzb.service
|
||||
|
||||
import com.igexin.sdk.PushService
|
||||
|
||||
class PushMessageService: PushService() {
|
||||
}
|
||||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ class MyGoodsFragment: BaseFragment<FragmentMyGoodsBinding, MyGoodsViewModel>()
|
|||
}
|
||||
|
||||
R.id.btn_view -> {
|
||||
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
|
||||
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("id", item.id))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<FragmentHomeBinding, HomeViewModel, BidItemEnt
|
|||
|
||||
binding.rvHotKeyword.adapter = keywordAdapter
|
||||
binding.rvHotKeyword.addItemDecoration(SpacesItemDecoration(DensityUtils.dp2px(8f), HORIZONTAL))
|
||||
|
||||
NotificationHelper.createDefaultChannel()
|
||||
if (MMKVUtils.getBoolean("request_notification_permission", true)) {
|
||||
PermissionUtils.checkNotificationPermission(requireActivity()) { isGranted ->
|
||||
if (!isGranted) NotificationHelper.showDisabledTip(requireActivity(), childFragmentManager)
|
||||
MMKVUtils.put("request_notification_permission", false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun initData() {
|
||||
|
|
|
|||
|
|
@ -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<FragmentMainBinding, MainViewModel>() {
|
|||
|
||||
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<FragmentMainBinding, MainViewModel>() {
|
|||
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<FragmentMainBinding, MainViewModel>() {
|
|||
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<FragmentMainBinding, MainViewModel>() {
|
|||
}
|
||||
|
||||
private fun checkVersion() {
|
||||
com.cheng.blzb.common.AppUpdate.checkUpdate(this, false) {}
|
||||
AppUpdate.checkUpdate(this, false) {}
|
||||
}
|
||||
}
|
||||
|
|
@ -28,6 +28,7 @@ import com.example.base.utils.SpanUtils
|
|||
import java.text.DecimalFormat
|
||||
|
||||
class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBinding, MerchantGoodsDetailViewModel>() {
|
||||
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<FragmentMerchantGoodsDetailBind
|
|||
} else {
|
||||
arguments?.getSerializable("item") as? MerchantGoodsEntity
|
||||
}
|
||||
if (goodsInfo != null) {
|
||||
setData()
|
||||
mViewModel.sendAuth()
|
||||
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${goodsInfo?.id}}")
|
||||
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${goodsInfo!!.id}}")
|
||||
} else {
|
||||
mViewModel.getGoodsInfo(id)
|
||||
EventReportManager.eventReport(EventConstants.JUMP_TO_GOODS_DETAIL, "", "{\"id\": ${id}}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun initListener() {
|
||||
|
|
@ -72,6 +77,7 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
|
|||
}
|
||||
|
||||
binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onPageSelected(position: Int) {
|
||||
super.onPageSelected(position)
|
||||
binding.tvIndicator.text = "${position + 1}/${imageAdapter.data.size}"
|
||||
|
|
@ -96,6 +102,10 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
|
|||
|
||||
override fun initObserve() {
|
||||
super.initObserve()
|
||||
mViewModel.infoLiveData.observe(this) {
|
||||
goodsInfo = it
|
||||
setData()
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
|
|
@ -146,6 +156,8 @@ class MerchantGoodsDetailFragment : BaseFragment<FragmentMerchantGoodsDetailBind
|
|||
|
||||
binding.tvLocation.text = if (TextUtils.isEmpty(goodsInfo!!.city_name)) "全国" else goodsInfo!!.city_name
|
||||
binding.tvViewCount.text = "已浏览 ${if (!TextUtils.isEmpty(goodsInfo!!.view_count)) goodsInfo!!.view_count else 0}"
|
||||
|
||||
mViewModel.sendAuth()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,31 @@
|
|||
package com.cheng.blzb.ui.fragment.merchant.detail
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.cheng.blzb.bean.MerchantGoodsEntity
|
||||
import com.cheng.blzb.net.ApiFactory
|
||||
import com.example.base.extensions.toast
|
||||
import com.example.base.utils.L
|
||||
import com.example.base.viewmodel.BaseViewModel
|
||||
import com.google.gson.JsonObject
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
|
||||
class MerchantGoodsDetailViewModel: BaseViewModel() {
|
||||
val infoLiveData = MutableLiveData<MerchantGoodsEntity>()
|
||||
|
||||
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({
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ class MerchantGoodsListFragment : ListFragment<FragmentMerchantGoodsListBinding,
|
|||
super.initObserve()
|
||||
mViewModel.authLiveData.observe(this) {
|
||||
if (it.auth) {
|
||||
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
|
||||
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("id", item!!.id))
|
||||
} else {
|
||||
PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_goods"))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,6 +79,11 @@ class CompanyAuthFragment : BaseFragment<FragmentCompanyAuthBinding, CompanyAuth
|
|||
mViewModel.getCompanyInfo()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
mViewModel.userInfo()
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun initListener() {
|
||||
super.initListener()
|
||||
|
|
@ -162,6 +167,10 @@ class CompanyAuthFragment : BaseFragment<FragmentCompanyAuthBinding, CompanyAuth
|
|||
|
||||
override fun initObserve() {
|
||||
super.initObserve()
|
||||
mViewModel.userInfoLiveData.observe(this) {
|
||||
UserConfigManager.userInfoLiveData.postValue(it)
|
||||
}
|
||||
|
||||
mViewModel.addLiveData.observe(this) {
|
||||
toast("提交成功")
|
||||
requireActivity().finish()
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import android.content.Context
|
|||
import androidx.lifecycle.MutableLiveData
|
||||
import com.cheng.blzb.bean.CompanyEntity
|
||||
import com.cheng.blzb.bean.UploadFileEntity
|
||||
import com.cheng.blzb.bean.UserEntity
|
||||
import com.cheng.blzb.net.ApiFactory
|
||||
import com.cheng.blzb.utils.BitmapUtils
|
||||
import com.example.base.extensions.toast
|
||||
|
|
@ -14,10 +15,26 @@ import okhttp3.MultipartBody
|
|||
import okhttp3.RequestBody
|
||||
|
||||
class CompanyAuthViewModel: BaseViewModel() {
|
||||
val userInfoLiveData = MutableLiveData<UserEntity>()
|
||||
val companyLiveData = MutableLiveData<CompanyEntity>()
|
||||
val addLiveData = MutableLiveData<Any>()
|
||||
val imageLiveData = MutableLiveData<UploadFileEntity>()
|
||||
|
||||
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({
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue