feat:完成数据埋点需求

This commit is contained in:
Max
2023-12-27 17:14:07 +08:00
parent 95aeda920a
commit 3e1ab090aa
18 changed files with 233 additions and 111 deletions

View File

@@ -5,16 +5,23 @@ import android.content.Intent
import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import com.gyf.immersionbar.BarHide
import com.gyf.immersionbar.ImmersionBar
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseBindingActivity
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.common.widget.dialog.DialogManager.AbsOkDialogListener
import com.nnbc123.app.databinding.ActivityMoreRoomBinding
import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.core.UriProvider
import com.nnbc123.core.bean.response.observeResult
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.pay.PayModel.NOT_REAL_NAME_BEFORE_CHARGING
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.net.ServerException
import com.nnbc123.library.annatation.ActLayoutRes
/**
@@ -61,7 +68,7 @@ class GameRoomActivity : BaseBindingActivity<ActivityMoreRoomBinding>() {
}
private fun initObserve() {
viewModel.jumpLiveData.observe(this) {
viewModel.jumpLiveData.observeResult(this, success = {
dialogManager.dismissDialog()
it?.let {
if (it.isPick) {
@@ -70,7 +77,24 @@ class GameRoomActivity : BaseBindingActivity<ActivityMoreRoomBinding>() {
RecommendRoomDialog.newInstance(it).show(context)
}
}
}
}, failed = {
dialogManager.dismissDialog()
if ((it as? ServerException)?.code == NOT_REAL_NAME_BEFORE_CHARGING) {
dialogManager.showTipsDialog(getString(R.string.tips_need_to_certification),
getString(R.string.go_to_certification),
object : AbsOkDialogListener() {
override fun onOk() {
// 跳去实名认证页面
CommonWebViewActivity.start(
this@GameRoomActivity.context,
UriProvider.getTutuRealNamePage()
)
}
})
} else {
toast(it.message)
}
})
viewModel.gameTabLiveData.observe(this) {
gameTabAdapter.setNewData(it)
mBinding.rvTop.isVisible = !it.isNullOrEmpty()
@@ -83,6 +107,10 @@ class GameRoomActivity : BaseBindingActivity<ActivityMoreRoomBinding>() {
private fun initEvent() {
gameTabAdapter.setOnItemClickListener { adapter, view, position ->
gameTabAdapter.getItem(position)?.let {
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_HOMEPAGE_MORE_GAME_TAB_CLICK,
it.name
)
dialogManager.showProgressDialog(this)
val type = if (it.isFriendsType == true) {
2

View File

@@ -2,6 +2,7 @@ package com.nnbc123.app.game_room
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.bean.response.BeanResult
import com.nnbc123.core.bean.response.ListResult
import com.nnbc123.core.home.bean.HomeGameBean
import com.nnbc123.core.home.bean.HomeRoomInfo
@@ -13,7 +14,7 @@ class GameRoomViewModel : BaseViewModel() {
val gameTabLiveData = MutableLiveData<List<HomeGameBean>>()
val roomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val jumpLiveData = MutableLiveData<HomeRoomInfo?>()
val jumpLiveData = MutableLiveData<BeanResult<HomeRoomInfo>?>()
fun getData() {
safeLaunch(
@@ -39,11 +40,10 @@ class GameRoomViewModel : BaseViewModel() {
fun getJumpInfo(id: Long, type: Int) {
safeLaunch(
onError = {
jumpLiveData.value = null
it.message.toast()
jumpLiveData.value = BeanResult.failed(it)
},
block = {
jumpLiveData.value = HomeModel.getResourceJumpInfo(id, type)
jumpLiveData.value = BeanResult.success(HomeModel.getResourceJumpInfo(id, type))
}
)
}

View File

@@ -3,6 +3,7 @@ package com.nnbc123.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.bean.response.BeanResult
import com.nnbc123.core.bean.response.ListResult
import com.nnbc123.core.home.bean.HomeGameTab
import com.nnbc123.core.home.bean.HomeRoomInfo
@@ -16,8 +17,8 @@ import com.nnbc123.core.utils.toast
**/
class FriendsViewModel: BaseViewModel() {
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
private val _resourceJumpLiveData = MutableLiveData<BeanResult<HomeRoomInfo>?>()
val resourceJumpLiveData: LiveData<BeanResult<HomeRoomInfo>?> = _resourceJumpLiveData
private val _homeChatPickLiveData = MutableLiveData<String?>()
val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
@@ -32,11 +33,10 @@ class FriendsViewModel: BaseViewModel() {
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
_resourceJumpLiveData.value = BeanResult.failed(it)
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
_resourceJumpLiveData.value = BeanResult.success(HomeModel.getResourceJumpInfo(id, 0))
}
)
}

View File

@@ -1,45 +0,0 @@
package com.nnbc123.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.model.HomeModel
import com.nnbc123.core.utils.toast
/**
* Created by Max on 2023/12/27 10:18
* Desc:
**/
class HomeChildViewModel: BaseViewModel() {
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
private val _homeChatPickLiveData = MutableLiveData<String?>()
val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
}
)
}
fun getHomeChatPick() {
safeLaunch(
onError = {
_homeChatPickLiveData.value = null
it.message.toast()
},
block = {
_homeChatPickLiveData.value = HomeModel.getHomeChatPick()
}
)
}
}

View File

@@ -3,6 +3,7 @@ package com.nnbc123.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.nnbc123.app.base.BaseViewModel
import com.nnbc123.core.bean.response.BeanResult
import com.nnbc123.core.bean.response.ListResult
import com.nnbc123.core.home.bean.BannerInfo
import com.nnbc123.core.home.bean.GiftServiceMsgVo
@@ -21,17 +22,16 @@ class PartyViewModel : BaseViewModel() {
private val _bannerLiveData = MutableLiveData<List<BannerInfo>>()
val bannerLiveData: LiveData<List<BannerInfo>> = _bannerLiveData
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
private val _resourceJumpLiveData = MutableLiveData<BeanResult<HomeRoomInfo>?>()
val resourceJumpLiveData: LiveData<BeanResult<HomeRoomInfo>?> = _resourceJumpLiveData
fun getResourceJumpInfo(id: Long) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
it.message.toast()
_resourceJumpLiveData.value = BeanResult.failed(it)
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id, 0)
_resourceJumpLiveData.value = BeanResult.success(HomeModel.getResourceJumpInfo(id, 0))
}
)
}

View File

@@ -2,7 +2,6 @@ package com.nnbc123.app.home.fragment
import android.annotation.SuppressLint
import android.content.Intent
import android.text.TextUtils
import android.util.SparseArray
import android.view.View
import android.view.ViewGroup
@@ -39,7 +38,6 @@ import com.nnbc123.app.ui.patriarch.PatriarchModeActivity
import com.nnbc123.app.ui.pay.ChargeActivity
import com.nnbc123.app.ui.relation.AttentionListActivity
import com.nnbc123.app.ui.relation.FansListActivity
import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.app.ui.widget.OnPageSelectedListener
import com.nnbc123.app.utils.UserUtils
@@ -57,12 +55,10 @@ import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.user.UserModel
import com.nnbc123.core.user.bean.UserExpInfo
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.core.user.event.LoginUserInfoUpdateEvent
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.StarUtils
import com.nnbc123.core.utils.net.BeanObserver
import com.nnbc123.core.utils.toast
import com.trello.rxlifecycle3.android.FragmentEvent
import io.reactivex.Observable
@@ -241,12 +237,15 @@ class MeFragment : BaseFragment(), View.OnClickListener {
override fun onResume() {
super.onResume()
if (!isHidden) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "我的")
}
if (mUserInfo?.isReview == true) {
requestUpdateUserInfo()
}
initUserDate()
}
@SuppressLint("CheckResult")
private fun initUserDate() {
UserModel.get().currentUserInfo

View File

@@ -17,6 +17,8 @@ import com.nnbc123.app.ui.im.friend.FriendListFragment
import com.nnbc123.app.ui.im.recent.RecentListFragment
import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import org.greenrobot.eventbus.EventBus
/**
@@ -42,6 +44,13 @@ class MsgFragment : BaseViewBindingFragment<FragmentMsgBinding>(),
binding.viewPager.currentItem = currentIndex
}
override fun onResume() {
super.onResume()
if (!isHidden) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "消息")
}
}
override fun init() {
val tagList = arrayListOf("消息", "好友")
mFragments.clear()

View File

@@ -3,6 +3,8 @@ package com.nnbc123.app.home.fragment.home
import android.graphics.Color
import android.view.Gravity
import android.widget.LinearLayout
import androidx.viewpager.widget.ViewPager
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import com.chuhai.utils.ktx.singleClick
import com.gyf.immersionbar.ImmersionBar
import com.nnbc123.app.R
@@ -36,21 +38,28 @@ class HomeFragment : BaseBindingFragment<HomeFragmentBinding>() {
initEvent()
}
override fun onResume() {
super.onResume()
if (!isHidden) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "首页")
}
}
private fun initEvent() {
mBinding.ivMyRoom.singleClick {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_MY_ROOM_CLICK, "首页_我的房间")
.onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_MY_ROOM_CLICK)
OpenRoomHelper.openRoom(baseActivity)
}
mBinding.ivRanking.singleClick {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_RANK_CLICK, "首页_榜单")
.onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_RANK_CLICK)
CommonWebViewActivity.start(mContext, UriProvider.getRanking())
}
mBinding.tvSearch.singleClick {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SEARCH, "进入搜索页")
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_SEARCH_CLICK)
SearchActivity.start(activity)
//为啥触发条件这么恶心 我也不知道啊
if (DemoCache.readAnchorCardView() == 0) {
@@ -78,6 +87,23 @@ class HomeFragment : BaseBindingFragment<HomeFragmentBinding>() {
mBinding.viewPager.adapter =
RoomVPAdapter(childFragmentManager, fragmentList)
ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
mBinding.viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_TBA_CLICK, "${position + 1}")
}
override fun onPageScrollStateChanged(state: Int) {
}
})
InitialModel.get().cacheInitInfo?.defaultTab?.let {
val tab = it - 1
if (it >= 0 && it < tagList.size) {

View File

@@ -8,6 +8,7 @@ import com.chuhai.utils.ktx.singleClick
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.common.widget.dialog.DialogManager
import com.nnbc123.app.databinding.HomeFriendsFragmentBinding
import com.nnbc123.app.home.FriendsViewModel
import com.nnbc123.app.home.HomeViewModel
@@ -17,8 +18,13 @@ import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity
import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.app.ui.widget.NewFriendsFilterWindow
import com.nnbc123.core.UriProvider
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.bean.response.observeResult
import com.nnbc123.core.pay.PayModel
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.net.ServerException
import com.nnbc123.library.annatation.ActLayoutRes
/**
@@ -79,26 +85,38 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
private fun initResource() {
mBinding.ivResourceMatch.singleClick {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_MATCH_CLICK)
dialogManager.showProgressDialog(mContext)
viewModel.getHomeChatPick()
}
viewModel.resourceJumpLiveData.observe(this)
{
viewModel.resourceJumpLiveData.observeResult(this, success = {
dialogManager.dismissDialog()
it?.let {
if (it.isPick) {
AVRoomActivity.start(context, it.uid)
// StatisticManager.Instance().onEvent(
// "${currMatchClick}_match_success",
// "资源位匹配成功",
// mapOf("user_id" to AuthModel.get().currentUid.toString())
// )
} else {
RecommendRoomDialog.newInstance(it).show(context)
}
}
}
}, failed = {
dialogManager.dismissDialog()
if ((it as? ServerException)?.code == PayModel.NOT_REAL_NAME_BEFORE_CHARGING) {
dialogManager.showTipsDialog(getString(R.string.tips_need_to_certification),
getString(R.string.go_to_certification),
object : DialogManager.AbsOkDialogListener() {
override fun onOk() {
// 跳去实名认证页面
CommonWebViewActivity.start(
this@FriendsFragment.context,
UriProvider.getTutuRealNamePage()
)
}
})
} else {
toast(it.message)
}
})
viewModel.homeChatPickLiveData.observe(viewLifecycleOwner) {
dialogManager.dismissDialog()
@@ -116,9 +134,8 @@ class FriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
mBinding.ivResource0.load(item.icon)
mBinding.ivResource0.singleClick {
StatisticManager.Instance().onEvent(
"E_match_click",
"资源位点击",
mapOf("user_id" to AuthModel.get().currentUid.toString())
StatisticsProtocol.EVENT_HOMEPAGE_TOP_RESOURCE_CLICK,
"E"
)
when (item.resourceType) {
5 -> {

View File

@@ -13,14 +13,13 @@ import com.nnbc123.app.R
import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.databinding.HomeFriendsListFragmentBinding
import com.nnbc123.app.home.FriendsViewModel
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.HomeFriendsUserAdapter
import com.nnbc123.app.ui.user.UserInfoActivity
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.library.annatation.ActLayoutRes
import com.tencent.mm.opensdk.utils.Log
import kotlin.random.Random
/**
* Created by Max on 2023/12/18 19:35
@@ -87,6 +86,10 @@ class FriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBinding>(
private fun initEvent() {
adapter.setOnItemClickListener { adapter, view, position ->
(adapter.getItem(position) as? UserInfo)?.let { item ->
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_HOMEPAGE_MORE_GAME_USER_CLICK,
item.uid.toString()
)
UserInfoActivity.Companion.start(mContext, item.uid)
}
}

View File

@@ -10,6 +10,7 @@ import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseActivity
import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.common.widget.dialog.DialogManager
import com.nnbc123.app.databinding.HomePartyFragmentBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.game_room.GameRoomActivity
@@ -17,15 +18,19 @@ import com.nnbc123.app.home.PartyViewModel
import com.nnbc123.app.home.adapter.HomePartyMessageAdapter
import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.home.helper.OpenRoomHelper
import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.UriProvider
import com.nnbc123.core.bean.response.observeResult
import com.nnbc123.core.home.bean.BannerInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.room.bean.RoomInfo
import com.nnbc123.core.im.custom.bean.RouterType
import com.nnbc123.core.pay.PayModel
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.net.ServerException
import com.nnbc123.library.annatation.ActLayoutRes
import com.nnbc123.library.utils.JavaUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -85,8 +90,12 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
setAdapter(adapter)
registerLifecycleObserver(lifecycle)
setUserInputEnabled(false)
setOnPageClickListener { clickedView, position ->
setOnPageClickListener { _, position ->
adapter.getItem(position)?.let {
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_HOMEPAGE_INFORM_CLICK,
it.roomUid.toString()
)
AVRoomActivity.start(mContext, it.roomUid)
}
}
@@ -101,6 +110,8 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
private fun initResource() {
mBinding.ivResourceMore.singleClick {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOMEPAGE_TOP_MORE_ROOM_CLICK)
GameRoomActivity.start(requireContext())
}
@@ -121,9 +132,8 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
resourceViews[i].singleClick { _ ->
currMatchClick = abcArray[i]
StatisticManager.Instance().onEvent(
"${currMatchClick}_match_click",
"资源位点击",
mapOf("user_id" to AuthModel.get().currentUid.toString())
StatisticsProtocol.EVENT_HOMEPAGE_TOP_RESOURCE_CLICK,
currMatchClick
)
when (it[i].resourceType) {
5 -> {
@@ -139,29 +149,50 @@ class PartyFragment : BaseBindingFragment<HomePartyFragmentBinding>() {
}
}
viewModel.resourceJumpLiveData.observe(this)
{
viewModel.resourceJumpLiveData.observeResult(this, success = {
dialogManager.dismissDialog()
it?.let {
if (it.isPick) {
AVRoomActivity.start(context, it.uid)
StatisticManager.Instance().onEvent(
"${currMatchClick}_match_success",
"资源位匹配成功",
mapOf("user_id" to AuthModel.get().currentUid.toString())
)
} else {
RecommendRoomDialog.newInstance(it).show(context)
}
}
}
}, failed = {
dialogManager.dismissDialog()
if ((it as? ServerException)?.code == PayModel.NOT_REAL_NAME_BEFORE_CHARGING) {
dialogManager.showTipsDialog(getString(R.string.tips_need_to_certification),
getString(R.string.go_to_certification),
object : DialogManager.AbsOkDialogListener() {
override fun onOk() {
// 跳去实名认证页面
CommonWebViewActivity.start(
this@PartyFragment.context,
UriProvider.getTutuRealNamePage()
)
}
})
} else {
toast(it.message)
}
})
}
private fun initBanner() {
viewModel.bannerLiveData.observe(this) {
BannerHelper.setBanner(mBinding.rollView, it) { _, _ ->
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner")
BannerHelper.setBanner(mBinding.rollView, it) { _, data ->
var roomId: Long? = null
if (data.skipType == BannerInfo.SKIP_TYPE_ROUTER) {
if (JavaUtil.str2int(data.routerType) == RouterType.ROOM) {
roomId = JavaUtil.str2long(data.routerValue)
}
} else if (data.skipType == BannerInfo.SKIP_TYP_CHAT_ROOM) {
roomId = JavaUtil.str2long(data.skipUri)
}
if (roomId != null) {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BANNER_CLICK, roomId.toString())
}
}
}
}

View File

@@ -40,7 +40,7 @@ class PartyHotRoomFragment : BaseBindingFragment<HomePartyRoomFragmentBinding>()
adapter.getItem(position)?.let {
AVRoomActivity.start(context, it.uid)
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "派对-热门进入房间成功")
.onEvent(StatisticsProtocol.EVENT_HOMEPAGE_ROOM_CLICK, it.uid.toString())
}
}
homeViewModel.hotRoomLiveData.observe(this) {

View File

@@ -110,22 +110,22 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener
switch (v.getId()) {
case R.id.main_home_tab:
select(mainTabInfoList.get(0).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOME_FIRST_TAB, "首页tab");
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "首页");
break;
// case R.id.main_party_tab:
// select(mainTabInfoList.get(1).getTabType());
// break;
case R.id.main_square_tab:
select(mainTabInfoList.get(1).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SQUARE_DONG_TAI_CLICK, "点击广场动态页");
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "广场");
break;
case R.id.main_msg_tab:
select(mainTabInfoList.get(2).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MESSAGE, "消息");
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "消息");
break;
case R.id.main_me_tab:
select(mainTabInfoList.get(3).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOME_MINE_TAB, "我的tab");
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_BAR_CLICK, "我的");
break;
}
}

View File

@@ -175,6 +175,14 @@ public class SquareFragment extends BaseFragment implements MainMagicIndicatorAd
}
@Override
public void onResume() {
super.onResume();
if (!isHidden()) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOMEPAGE_SHOW, "广场");
}
}
@Override
public void onSetListener() {
if (ivSquarePublish != null) {

View File

@@ -3,6 +3,7 @@ package com.nnbc123.core.home.model
import com.nnbc123.core.DemoCache
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.base.BaseModel
import com.nnbc123.core.bean.response.BeanResult
import com.nnbc123.core.bean.response.ServiceResult
import com.nnbc123.core.community.CommunityConstant
import com.nnbc123.core.community.bean.UnReadCountInfo

View File

@@ -1,12 +1,19 @@
package com.nnbc123.core.bean.response
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.chuhai.core.exceptions.SuperException
import com.nnbc123.core.utils.net.ServerException
data class BeanResult<T>(
val isSuccess: Boolean,
@Deprecated("建议使用throwable")
val code: Int = 0,
@Deprecated("建议使用throwable")
val message: String? = null,
val data: T? = null
val data: T? = null,
val throwable: Throwable? = null
) {
companion object {
@@ -20,14 +27,32 @@ data class BeanResult<T>(
fun <T> failed(throwable: Throwable): BeanResult<T> {
return if (throwable is ServerException) {
failed(throwable.code, throwable.message)
BeanResult(false, throwable.code, throwable.message, null, throwable)
} else {
failed(-1, "网络异常,请检查你的网络再试!")
}
}
}
}
fun <T> LiveData<BeanResult<T>?>.observeResult(
lifecycleOwner: LifecycleOwner,
success: ((T?) -> Unit)? = null,
failed: ((Throwable) -> Unit)? = null
) {
this.observe(lifecycleOwner) {
if (it == null) {
failed?.invoke(NullPointerException("Result null"))
} else if (it.isSuccess) {
success?.invoke(it.data)
} else {
if (it.throwable != null) {
failed?.invoke(it.throwable)
} else {
failed?.invoke(SuperException(it.message, it.code))
}
}
}
}

View File

@@ -68,6 +68,12 @@ public class StatisticManager {
mStatisticModel.onPageEnd(context, pageName);
}
public void onEvent(String eventId) {
LogUtil.e(eventId);
mStatisticModel.onEvent(BasicConfig.INSTANCE.getAppContext(), eventId, null, null);
}
public void onEvent(String eventId, String eventLabel) {
LogUtil.e(eventId);
mStatisticModel.onEvent(BasicConfig.INSTANCE.getAppContext(), eventId, eventLabel, null);

View File

@@ -118,7 +118,7 @@ public interface StatisticsProtocol {
String EVENT_MP_ROOM_SMASH_EGG_CLICK = "mp_room_smashEgg_click"; // 砸蛋入口
String EVENT_MP_ROOM_SMASHEGG_CHOOSE = "mp_room_smashEgg_choose"; // 开始砸蛋-多人房
String EVENT_MP_ROOM_RANKING_LIST_CLICK = "mp_room_rankingList_click"; // 房间榜
String EVENT_CP_ROOM_RANKING_LIST_CLICK=("cp_room_rankingList_click");// 房间榜
String EVENT_CP_ROOM_RANKING_LIST_CLICK = ("cp_room_rankingList_click");// 房间榜
String EVENT_MP_ROOM_SET_TOPIC_CLICK = "mp_room_setTopic_click"; // 设置房间话题
String EVENT_MP_ROOM_CLOSE_MIC_CLICK = "mp_room_close_mic_click"; // 关闭麦克风
String EVENT_MP_ROOM_CLOSE_SOUND_CLICK = "mp_room_close_sound_click"; // 关闭声音
@@ -440,4 +440,18 @@ public interface StatisticsProtocol {
String EVENT_GRADE_PROFIT_POP_SHOW = "grade_profit_pop_show";//主播评级入口曝光
String EVENT_GRADE_PROFIT_CLOSE_CLICK = "grade_profit_close_click";//主播评级弹窗关闭点击
String EVENT_HOMEPAGE_SHOW = "homepage_show";//首页曝光统计
String EVENT_HOMEPAGE_BAR_CLICK = "homepage_bar_click";//底部工具栏bar统计
String EVENT_HOMEPAGE_TOP_TBA_CLICK = "homepage_top_tab_click";//首页顶部tab切换点击
String EVENT_HOMEPAGE_TOP_SEARCH_CLICK = "homepage_top_search_click";//首页顶部搜索框点击
String EVENT_HOMEPAGE_TOP_RANK_CLICK = "homepage_top_rank_click";//首页顶部全服榜单点击
String EVENT_HOMEPAGE_TOP_MY_ROOM_CLICK = "homepage_top_myroom_click";//首页顶部我的房间点击
String EVENT_HOMEPAGE_TOP_RESOURCE_CLICK = "homepage_top_resource_click";//首页顶部资源位点击
String EVENT_HOMEPAGE_TOP_MORE_ROOM_CLICK = "homepage_top_moregame_click";//首页顶部更多游戏跳转点击
String EVENT_HOMEPAGE_INFORM_CLICK = "homepage_inform_click";//首页轮播通知的跳转点击
String EVENT_HOMEPAGE_BANNER_CLICK = "homepage_banner_click";//首页banner的跳转点击
String EVENT_HOMEPAGE_ROOM_CLICK = "homepage_room_click";//首页房间的跳转点击
String EVENT_HOMEPAGE_MORE_GAME_TAB_CLICK = "homepage_moregame_tab_click";//更多游戏二级页顶部游戏分类点击
String EVENT_HOMEPAGE_TOP_MATCH_CLICK = "homepage_top_match_click";//首页顶部匹配点击
String EVENT_HOMEPAGE_MORE_GAME_USER_CLICK = "homepage_moregame_user_click";//首页用户主播卡片点击
}