Commit 6107ffa1 by 刘鹏

Merge branch '4.1.69_log' into 4.1.69(强绑手机号)

parents c445a1b7 a0681f68
...@@ -19,24 +19,24 @@ import com.umeng.analytics.MobclickAgent ...@@ -19,24 +19,24 @@ import com.umeng.analytics.MobclickAgent
import com.ydl.component.music.FragmentContainerActivity import com.ydl.component.music.FragmentContainerActivity
import com.ydl.component.mvp.DemoContract import com.ydl.component.mvp.DemoContract
import com.ydl.component.mvp.DemoPresenter import com.ydl.component.mvp.DemoPresenter
import com.ydl.component.route.PlatformTempCommonRouteImpl
import com.ydl.confide.home.ConfideHomeActivity
import com.ydl.media.audio.PlayService import com.ydl.media.audio.PlayService
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.mvp.lce.BaseLceActivity import com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import com.ydl.ydlcommon.router.YdlCommonRouterManager
import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.consultant.api.IConsultantService
import com.yidianling.fm.api.service.IFMService import com.yidianling.fm.api.service.IFMService
import com.yidianling.tests.home.NewTestHomeActivity import com.yidianling.tests.home.NewTestHomeActivity
import com.yidianling.user.StatusUtils
import com.yidianling.user.ui.collect.CollectSexAndBirthActivity import com.yidianling.user.ui.collect.CollectSexAndBirthActivity
import com.yidianling.user.ui.login.OneKeyLoginHelp
import com.yidianling.user.widget.SecretDescriptionDialog import com.yidianling.user.widget.SecretDescriptionDialog
import com.yidianling.user.widget.SecretDialog import com.yidianling.user.widget.SecretDialog
import com.yidianling.user.widget.SecretDialog.OnSecretDialogListener import com.yidianling.user.widget.SecretDialog.OnSecretDialogListener
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import com.ydl.component.route.PlatformTempCommonRouteImpl
import com.ydl.confide.home.ConfideHomeActivity
import com.ydl.ydlcommon.router.YdlCommonRouterManager
import com.yidianling.common.tools.LogUtil
import com.yidianling.consultant.api.IConsultantService
import com.yidianling.user.StatusUtils
import com.yidianling.user.ui.login.OneKeyLoginHelp
/** /**
......
...@@ -5,12 +5,12 @@ ext { ...@@ -5,12 +5,12 @@ ext {
ydlPublishVersion = [ ydlPublishVersion = [
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.49.02", "m-confide" : "0.0.49.06",
"m-consultant" : "0.0.59.69", "m-consultant" : "0.0.59.69",
"m-fm" : "0.0.30.01", "m-fm" : "0.0.30.01",
"m-user" : "0.0.61.29", "m-user" : "0.0.61.29",
"m-home" : "0.0.22.59", "m-home" : "0.0.22.59",
"m-im" : "0.0.18.41", "m-im" : "0.0.18.48",
"m-dynamic" : "0.0.7.19", "m-dynamic" : "0.0.7.19",
"m-article" : "0.0.0.6", "m-article" : "0.0.0.6",
...@@ -33,18 +33,18 @@ ext { ...@@ -33,18 +33,18 @@ ext {
//-------------- 功能组件 -------------- //-------------- 功能组件 --------------
//第一步 //第一步
"ydl-platform" : "0.0.39.98", "ydl-platform" : "0.0.40.00",
//第二步 若干 //第二步 若干
"ydl-webview" : "0.0.38.36", "ydl-webview" : "0.0.38.41",
"ydl-media" : "0.0.21.6", "ydl-media" : "0.0.21.6",
"ydl-pay" : "0.0.18.13", "ydl-pay" : "0.0.18.18",
"m-audioim" : "0.0.49.29.36", "m-audioim" : "0.0.49.29.36",
"ydl-flutter-base": "0.0.14.23", "ydl-flutter-base": "0.0.14.23",
//以下 几乎不会动 //以下 几乎不会动
"router" : "0.0.1", "router" : "0.0.1",
"ydl-net" : "0.0.3.7", "ydl-net" : "0.0.3.9",
"ydl-utils" : "0.0.3.1", "ydl-utils" : "0.0.3.1",
] ]
ydl_app = [ ydl_app = [
...@@ -88,12 +88,12 @@ ext { ...@@ -88,12 +88,12 @@ ext {
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.49.02", "m-confide" : "0.0.49.06",
"m-consultant" : "0.0.59.69", "m-consultant" : "0.0.59.69",
"m-fm" : "0.0.30.01", "m-fm" : "0.0.30.01",
"m-user" : "0.0.61.29", "m-user" : "0.0.61.29",
"m-home" : "0.0.22.59", "m-home" : "0.0.22.59",
"m-im" : "0.0.18.40", "m-im" : "0.0.18.48",
"m-dynamic" : "0.0.7.19", "m-dynamic" : "0.0.7.19",
"m-article" : "0.0.0.6", "m-article" : "0.0.0.6",
...@@ -115,18 +115,18 @@ ext { ...@@ -115,18 +115,18 @@ ext {
//-------------- 功能组件 -------------- //-------------- 功能组件 --------------
//第一步 //第一步
"ydl-platform" : "0.0.39.98", "ydl-platform" : "0.0.40.00",
//第二步 若干 //第二步 若干
"ydl-webview" : "0.0.38.36", "ydl-webview" : "0.0.38.41",
"ydl-media" : "0.0.21.6", "ydl-media" : "0.0.21.6",
"ydl-pay" : "0.0.18.11", "ydl-pay" : "0.0.18.18",
"m-audioim" : "0.0.49.29.36", "m-audioim" : "0.0.49.29.36",
"ydl-flutter-base": "0.0.14.23", "ydl-flutter-base": "0.0.14.23",
//以下 几乎不会动 //以下 几乎不会动
"router" : "0.0.1", "router" : "0.0.1",
"ydl-net" : "0.0.3.7", "ydl-net" : "0.0.3.9",
"ydl-utils" : "0.0.3.1", "ydl-utils" : "0.0.3.1",
] ]
...@@ -199,6 +199,7 @@ ext { ...@@ -199,6 +199,7 @@ ext {
"androideventbus" : "org.simple:androideventbus:1.0.5.1", "androideventbus" : "org.simple:androideventbus:1.0.5.1",
"otto" : "com.squareup:otto:1.3.8", "otto" : "com.squareup:otto:1.3.8",
"gson" : "com.google.code.gson:gson:2.8.5", "gson" : "com.google.code.gson:gson:2.8.5",
"aliyun" : "com.aliyun.openservices:aliyun-log-android-sdk:2.5.13",
"javax.annotation" : "javax.annotation:jsr250-api:1.0", "javax.annotation" : "javax.annotation:jsr250-api:1.0",
"arouter" : "com.alibaba:arouter-api:1.4.1", "arouter" : "com.alibaba:arouter-api:1.4.1",
"progressmanager" : "me.jessyan:progressmanager:1.5.0", "progressmanager" : "me.jessyan:progressmanager:1.5.0",
......
...@@ -50,6 +50,8 @@ import com.ydl.ydlcommon.utils.LogUtil ...@@ -50,6 +50,8 @@ import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.Utils import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
...@@ -212,6 +214,8 @@ class AudioHomeActivity : ...@@ -212,6 +214,8 @@ class AudioHomeActivity :
uploadException("mRtcEventHandler-onWarning:warnCode--%${warn}", callback = null) uploadException("mRtcEventHandler-onWarning:warnCode--%${warn}", callback = null)
LogUtil.e("[agora]发生警告回调$warn") LogUtil.e("[agora]发生警告回调$warn")
writeAgoraLog("声网警告回调($warn)") writeAgoraLog("声网警告回调($warn)")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网警告回调($warn)")
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源 //103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器 //104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
//105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的 //105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的
...@@ -240,6 +244,8 @@ class AudioHomeActivity : ...@@ -240,6 +244,8 @@ class AudioHomeActivity :
super.onError(err) super.onError(err)
uploadException("mRtcEventHandler-onError:errorCode--%${err}", callback = null) uploadException("mRtcEventHandler-onError:errorCode--%${err}", callback = null)
writeAgoraLog("声网错误回调errorCode--%${err}") writeAgoraLog("声网错误回调errorCode--%${err}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}")
//3:SDK 初始化失败。Agora 建议尝试以下处理方法 //3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化 //7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
//10:API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误 //10:API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误
...@@ -283,11 +289,16 @@ class AudioHomeActivity : ...@@ -283,11 +289,16 @@ class AudioHomeActivity :
override fun onApiCallExecuted(error: Int, api: String?, result: String?) { override fun onApiCallExecuted(error: Int, api: String?, result: String?) {
super.onApiCallExecuted(error, api, result) super.onApiCallExecuted(error, api, result)
// LogUtil.e("[agora]$api 已执行回调 $result") // LogUtil.e("[agora]$api 已执行回调 $result")
//注销原因,产生大量无效数据,会被频繁调用
// AliYunRichLogsHelper.getInstance()
// .sendLog(AliYunLogConfig.AGORA, "$api 已执行回调 $result")
} }
override fun onJoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) { override fun onJoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) {
super.onJoinChannelSuccess(channel, uid, elapsed) super.onJoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 用户声网加入频道成功:channel=$channel") LogUtil.e("[agora]$uid 用户声网加入频道成功:channel=$channel")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "$uid 用户声网加入频道成功:channel=$channel")
//更新ui //更新ui
// onJoinChannelSuccess() // onJoinChannelSuccess()
...@@ -303,6 +314,8 @@ class AudioHomeActivity : ...@@ -303,6 +314,8 @@ class AudioHomeActivity :
override fun onRejoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) { override fun onRejoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) {
super.onRejoinChannelSuccess(channel, uid, elapsed) super.onRejoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 用户声网重新加入频道成功:channel=$channel") LogUtil.e("[agora]$uid 用户声网重新加入频道成功:channel=$channel")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "$uid 用户声网重新加入频道成功:channel=$channel")
runOnUiThread { runOnUiThread {
//自己加入频道成功 //自己加入频道成功
if (!isConnectSuccess) { if (!isConnectSuccess) {
...@@ -316,6 +329,8 @@ class AudioHomeActivity : ...@@ -316,6 +329,8 @@ class AudioHomeActivity :
override fun onRtcStats(stats: IRtcEngineEventHandler.RtcStats?) { override fun onRtcStats(stats: IRtcEngineEventHandler.RtcStats?) {
super.onRtcStats(stats) super.onRtcStats(stats)
writeAgoraLog("声网onRtcStats:users:${stats?.users}") writeAgoraLog("声网onRtcStats:users:${stats?.users}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网onRtcStats:users:${stats?.users}")
// 不需要移动端做离开房间逻辑,服务端会判断进行踢人逻辑 // 不需要移动端做离开房间逻辑,服务端会判断进行踢人逻辑
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断 //因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
// if (isConnectSuccess && null != stats?.users && stats.users == 1) { // if (isConnectSuccess && null != stats?.users && stats.users == 1) {
...@@ -332,6 +347,8 @@ class AudioHomeActivity : ...@@ -332,6 +347,8 @@ class AudioHomeActivity :
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑 // 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if (reason == 3) { if (reason == 3) {
writeAgoraLog("通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})") writeAgoraLog("通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})")
// com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断") // com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断")
//通话结束或挂断时,上传日志文件 //通话结束或挂断时,上传日志文件
uploadLog() uploadLog()
...@@ -343,6 +360,8 @@ class AudioHomeActivity : ...@@ -343,6 +360,8 @@ class AudioHomeActivity :
override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) { override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) {
super.onLeaveChannel(stats) super.onLeaveChannel(stats)
LogUtil.e("[agora]离开频道回调") LogUtil.e("[agora]离开频道回调")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "离开频道回调")
//通话结束或挂断时,上传日志文件 //通话结束或挂断时,上传日志文件
uploadLog() uploadLog()
} }
...@@ -351,12 +370,16 @@ class AudioHomeActivity : ...@@ -351,12 +370,16 @@ class AudioHomeActivity :
override fun onUserJoined(uid: Int, elapsed: Int) { override fun onUserJoined(uid: Int, elapsed: Int) {
super.onUserJoined(uid, elapsed) super.onUserJoined(uid, elapsed)
LogUtil.e("[agora]远端用户/主播加入频道回调") LogUtil.e("[agora]远端用户/主播加入频道回调")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "远端用户/主播加入频道回调")
} }
override fun onUserOffline(uid: Int, elapsed: Int) { override fun onUserOffline(uid: Int, elapsed: Int) {
super.onUserOffline(uid, elapsed) super.onUserOffline(uid, elapsed)
LogUtil.e("[agora]远端用户$uid 离开频道回调") LogUtil.e("[agora]远端用户$uid 离开频道回调")
writeAgoraLog("接通后通话结束:对方已挂断") writeAgoraLog("接通后通话结束:对方已挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "接通后通话结束:对方已挂断")
//通话结束或挂断时,上传日志文件 //通话结束或挂断时,上传日志文件
uploadLog() uploadLog()
showToast("专家已挂断") showToast("专家已挂断")
...@@ -430,6 +453,8 @@ class AudioHomeActivity : ...@@ -430,6 +453,8 @@ class AudioHomeActivity :
//页面传递数据初始化 //页面传递数据初始化
initIntentData() initIntentData()
writeAgoraLog("通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}") writeAgoraLog("通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.RTM, "通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}")
if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) { if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) {
//再次登录声网,确保声网登录状态 //再次登录声网,确保声网登录状态
reLoginRTM() reLoginRTM()
...@@ -486,6 +511,8 @@ class AudioHomeActivity : ...@@ -486,6 +511,8 @@ class AudioHomeActivity :
commentUrl = intent.getStringExtra(IntentConstants.INTENT_COMMENT_URL) commentUrl = intent.getStringExtra(IntentConstants.INTENT_COMMENT_URL)
dialStatus = intent.getStringExtra(IntentConstants.INTENT_DIALSTATUS) dialStatus = intent.getStringExtra(IntentConstants.INTENT_DIALSTATUS)
writeAgoraLog("专家的通话状态dialStatus:$dialStatus", false) writeAgoraLog("专家的通话状态dialStatus:$dialStatus", false)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "专家的通话状态dialStatus:$dialStatus")
isShowAXB = intent.getBooleanExtra(IntentConstants.INTENT_ISSHOWAXB, true) isShowAXB = intent.getBooleanExtra(IntentConstants.INTENT_ISSHOWAXB, true)
val logBean = AgoraLogInfoBean( val logBean = AgoraLogInfoBean(
...@@ -500,7 +527,8 @@ class AudioHomeActivity : ...@@ -500,7 +527,8 @@ class AudioHomeActivity :
) )
val content = Gson().toJson(logBean) val content = Gson().toJson(logBean)
writeAgoraLog("主叫方发送的邀请通话消息内容:$content", true) writeAgoraLog("主叫方发送的邀请通话消息内容:$content", true)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "主叫方发送的邀请通话消息内容:$content")
localRemainTime = remainTime?.toInt() localRemainTime = remainTime?.toInt()
handler = Handler() handler = Handler()
vibrator = getSystemService(Service.VIBRATOR_SERVICE) as Vibrator? vibrator = getSystemService(Service.VIBRATOR_SERVICE) as Vibrator?
...@@ -508,6 +536,8 @@ class AudioHomeActivity : ...@@ -508,6 +536,8 @@ class AudioHomeActivity :
private fun reLoginRTM() { private fun reLoginRTM() {
writeAgoraLog("RMT状态:${YDLavManager.sdkStatus},重新登录RMT") writeAgoraLog("RMT状态:${YDLavManager.sdkStatus},重新登录RMT")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.RTM, "RMT状态:${YDLavManager.sdkStatus},重新登录RMTt")
val uid = YdlCommonRouterManager.getYdlCommonRoute().getUid().toString() val uid = YdlCommonRouterManager.getYdlCommonRoute().getUid().toString()
YDLavManager.instances.login(uid) { _isSuccess, _msg -> YDLavManager.instances.login(uid) { _isSuccess, _msg ->
// writeAgoraLog("拨打电话界面打开RTM重新登录,uid=${uid}") // writeAgoraLog("拨打电话界面打开RTM重新登录,uid=${uid}")
...@@ -518,6 +548,8 @@ class AudioHomeActivity : ...@@ -518,6 +548,8 @@ class AudioHomeActivity :
private fun initView() { private fun initView() {
writeAgoraLog("用户拨打电话界面开启") writeAgoraLog("用户拨打电话界面开启")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "用户拨打电话界面开启")
tv_change_route.isEnabled = false tv_change_route.isEnabled = false
//水波纹view初始化 //水波纹view初始化
wave_view.setDuration(6000) wave_view.setDuration(6000)
...@@ -563,6 +595,8 @@ class AudioHomeActivity : ...@@ -563,6 +595,8 @@ class AudioHomeActivity :
} }
if (isConnectSuccess) { if (isConnectSuccess) {
writeAgoraLog("已接通:主叫主动挂断") writeAgoraLog("已接通:主叫主动挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "已接通:主叫主动挂断")
updateExpertStatus(false, 1) updateExpertStatus(false, 1)
leaveChannel() leaveChannel()
uploadLog() uploadLog()
...@@ -611,6 +645,8 @@ class AudioHomeActivity : ...@@ -611,6 +645,8 @@ class AudioHomeActivity :
when { when {
permission.granted -> { permission.granted -> {
writeAgoraLog("请求音频权限通过") writeAgoraLog("请求音频权限通过")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "请求音频权限通过")
init() init()
} }
permission.shouldShowRequestPermissionRationale -> { permission.shouldShowRequestPermissionRationale -> {
...@@ -620,6 +656,8 @@ class AudioHomeActivity : ...@@ -620,6 +656,8 @@ class AudioHomeActivity :
// 拒绝权限操作发送给服务端 // 拒绝权限操作发送给服务端
uploadException("AudioNotAuth","zhu",YDLavManager.AUDIO_NO_AUTH_ERROR_CODE,null) uploadException("AudioNotAuth","zhu",YDLavManager.AUDIO_NO_AUTH_ERROR_CODE,null)
writeAgoraLog("拒绝请求音频权限") writeAgoraLog("拒绝请求音频权限")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "拒绝请求音频权限")
uploadLog() uploadLog()
ToastHelper.show(getString(R.string.audioim_need_storage_permission_hint)) ToastHelper.show(getString(R.string.audioim_need_storage_permission_hint))
...@@ -682,6 +720,8 @@ class AudioHomeActivity : ...@@ -682,6 +720,8 @@ class AudioHomeActivity :
//关闭音乐 //关闭音乐
stopPlaying() stopPlaying()
writeAgoraLog("未接通挂断:50s等待倒计时结束挂断") writeAgoraLog("未接通挂断:50s等待倒计时结束挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接通挂断:50s等待倒计时结束挂断")
//提示切换传统线路 //提示切换传统线路
//发送消息通知专家用户已挂断 //发送消息通知专家用户已挂断
YDLavManager.instances.cancelCall( YDLavManager.instances.cancelCall(
...@@ -690,6 +730,8 @@ class AudioHomeActivity : ...@@ -690,6 +730,8 @@ class AudioHomeActivity :
sendDoctocrMsg!! sendDoctocrMsg!!
) { msg, code -> ) { msg, code ->
writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断") writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断")
} }
//通话结束或挂断时,上传日志文件 //通话结束或挂断时,上传日志文件
uploadLog() uploadLog()
...@@ -725,6 +767,8 @@ class AudioHomeActivity : ...@@ -725,6 +767,8 @@ class AudioHomeActivity :
*/ */
fun joinChannel() { fun joinChannel() {
writeAgoraLog("对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId") writeAgoraLog("对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId")
voiceManage!!.getVoiceApi().joinChannel( voiceManage!!.getVoiceApi().joinChannel(
token!!, token!!,
channelId!!, channelId!!,
...@@ -740,6 +784,8 @@ class AudioHomeActivity : ...@@ -740,6 +784,8 @@ class AudioHomeActivity :
*/ */
private fun userCloseCalling() { private fun userCloseCalling() {
writeAgoraLog("未接听时:主叫(用户)主动挂断,取消呼叫") writeAgoraLog("未接听时:主叫(用户)主动挂断,取消呼叫")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断,取消呼叫")
LogUtil.e("未接听挂断") LogUtil.e("未接听挂断")
//发送消息通知专家用户已挂断 //发送消息通知专家用户已挂断
YDLavManager.instances.cancelCall( YDLavManager.instances.cancelCall(
...@@ -748,6 +794,8 @@ class AudioHomeActivity : ...@@ -748,6 +794,8 @@ class AudioHomeActivity :
sendDoctocrMsg!! sendDoctocrMsg!!
) { msg, code -> ) { msg, code ->
writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断") writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断")
} }
//通话结束或挂断时,上传日志文件 //通话结束或挂断时,上传日志文件
uploadLog() uploadLog()
...@@ -793,6 +841,8 @@ class AudioHomeActivity : ...@@ -793,6 +841,8 @@ class AudioHomeActivity :
val dialog = AxbConfirmDialog(mContext, type, object : AxbConfirmDialog.OnClickEnsureListener { val dialog = AxbConfirmDialog(mContext, type, object : AxbConfirmDialog.OnClickEnsureListener {
override fun onClickEnsure() { override fun onClickEnsure() {
writeAgoraLog("主叫点击切换AXB按钮") writeAgoraLog("主叫点击切换AXB按钮")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "主叫点击切换AXB按钮")
switchAXB() switchAXB()
} }
...@@ -815,6 +865,8 @@ class AudioHomeActivity : ...@@ -815,6 +865,8 @@ class AudioHomeActivity :
uploadException("", "zhu", "108", object : YDLavManager.UploadExceptionCallback { uploadException("", "zhu", "108", object : YDLavManager.UploadExceptionCallback {
override fun onSuccess() { override fun onSuccess() {
writeAgoraLog("离开房间成功,主叫切换AXB之后") writeAgoraLog("离开房间成功,主叫切换AXB之后")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "离开房间成功,主叫切换AXB之后")
mPresenter.getAXBPhone(ConnectCommand(listenId!!, "1")) mPresenter.getAXBPhone(ConnectCommand(listenId!!, "1"))
} }
...@@ -848,6 +900,8 @@ class AudioHomeActivity : ...@@ -848,6 +900,8 @@ class AudioHomeActivity :
sendDoctocrMsg!! sendDoctocrMsg!!
) { msg, code -> ) { msg, code ->
writeAgoraLog("未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断") writeAgoraLog("未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断")
} }
leaveChannel() leaveChannel()
} }
......
...@@ -22,13 +22,12 @@ import com.ydl.ydl_av.messge_service.callback.LoginCallback ...@@ -22,13 +22,12 @@ import com.ydl.ydl_av.messge_service.callback.LoginCallback
import com.ydl.ydl_av.messge_service.request.LoginParam import com.ydl.ydl_av.messge_service.request.LoginParam
import com.ydl.ydl_av.messge_service.response.CallLocalResponse import com.ydl.ydl_av.messge_service.response.CallLocalResponse
import com.ydl.ydl_av.messge_service.response.CallRemoteResponse import com.ydl.ydl_av.messge_service.response.CallRemoteResponse
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.utils.ActivityManager import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.SharedPreferencesEditor import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.RxSPTool
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack
import com.yidianling.im.api.bean.IMSendCustomNotificationResultCallBack import com.yidianling.im.api.bean.IMSendCustomNotificationResultCallBack
...@@ -93,6 +92,10 @@ class YDLavManager { ...@@ -93,6 +92,10 @@ class YDLavManager {
override fun onCallRecivedByPeer(response: CallLocalResponse?) { override fun onCallRecivedByPeer(response: CallLocalResponse?) {
//返回给主叫:被叫已收到呼叫邀请 //返回给主叫:被叫已收到呼叫邀请
LogUtil.e("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}") LogUtil.e("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}"
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is AudioHomeActivity) { if (act is AudioHomeActivity) {
...@@ -106,7 +109,10 @@ class YDLavManager { ...@@ -106,7 +109,10 @@ class YDLavManager {
override fun onCallAccepted(response: CallLocalResponse?, msg: String?) { override fun onCallAccepted(response: CallLocalResponse?, msg: String?) {
//返回给主叫 //返回给主叫
LogUtil.e("[agora]${response?.calleeId}已接收呼叫邀请") LogUtil.e("[agora]${response?.calleeId}已接收呼叫邀请")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"${response?.calleeId}已接收呼叫邀请"
)
//加入声网频道时机修改:主叫收到被叫接受邀请的回调后再加入声网频道 //加入声网频道时机修改:主叫收到被叫接受邀请的回调后再加入声网频道
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is AudioHomeActivity) { if (act is AudioHomeActivity) {
...@@ -119,7 +125,10 @@ class YDLavManager { ...@@ -119,7 +125,10 @@ class YDLavManager {
override fun onCallRefused(response: CallLocalResponse?, msg: String?) { override fun onCallRefused(response: CallLocalResponse?, msg: String?) {
//返回给主叫 //返回给主叫
LogUtil.e("[agora]${response?.calleeId}已拒绝呼叫邀请") LogUtil.e("[agora]${response?.calleeId}已拒绝呼叫邀请")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"${response?.calleeId}已拒绝呼叫邀请"
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is AudioHomeActivity) { if (act is AudioHomeActivity) {
act.runOnUiThread { act.runOnUiThread {
...@@ -137,6 +146,10 @@ class YDLavManager { ...@@ -137,6 +146,10 @@ class YDLavManager {
override fun onCallCanceled(response: CallLocalResponse?) { override fun onCallCanceled(response: CallLocalResponse?) {
//返回给主叫 //返回给主叫
LogUtil.e("[agora]主叫已取消呼叫邀请") LogUtil.e("[agora]主叫已取消呼叫邀请")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"主叫已取消呼叫邀请"
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is AudioHomeActivity) { if (act is AudioHomeActivity) {
act.runOnUiThread { act.runOnUiThread {
...@@ -149,6 +162,10 @@ class YDLavManager { ...@@ -149,6 +162,10 @@ class YDLavManager {
override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) { override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
//返回给主叫 //返回给主叫
LogUtil.e("[agora]呼叫${response?.calleeId}用户失败:${response?.response}") LogUtil.e("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"呼叫${response?.calleeId}用户失败:${response?.response}"
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次 //专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
when (errorCode) { when (errorCode) {
...@@ -160,26 +177,13 @@ class YDLavManager { ...@@ -160,26 +177,13 @@ class YDLavManager {
} }
} }
} }
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> { //呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。 RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> {
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
/*
* 和IOS保持一致,当呼叫邀请为3的时候不处理
* */
/* if (act is AudioHomeActivity) {
act.runOnUiThread {
sendCustomNotification(response?.calleeId!!, response?.ChannelId!!, "5")
callEndStatusUpdate(response.ChannelId!!, 2, "被叫超时未接听")
act.uploadExceptionStatus("对方未接听", 3)
// //通话结束或挂断时,上传日志文件
// act.uploadLog()
// act.leaveChannel()
}
}*/
} }
} }
//呼叫失败日志输出 //呼叫失败日志输出
if (act is AudioHomeActivity){ if (act is AudioHomeActivity) {
act.runOnUiThread{ act.runOnUiThread {
act.writeAgoraLog("发送通话邀请失败:${errorCode}") act.writeAgoraLog("发送通话邀请失败:${errorCode}")
LogHelper.getInstance().uploadLog(false) LogHelper.getInstance().uploadLog(false)
} }
...@@ -189,17 +193,29 @@ class YDLavManager { ...@@ -189,17 +193,29 @@ class YDLavManager {
override fun onRemoteInvitationReceived(response: CallRemoteResponse?) { override fun onRemoteInvitationReceived(response: CallRemoteResponse?) {
//返回给被叫 //返回给被叫
LogUtil.e("[agora]收到来自${response?.callerId}的呼叫邀请") LogUtil.e("[agora]收到来自${response?.callerId}的呼叫邀请")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"收到来自${response?.callerId}的呼叫邀请"
)
receivedCall(response?.content, "来自RTM") receivedCall(response?.content, "来自RTM")
} }
override fun onRemoteInvitationAccepted(response: CallRemoteResponse?) { override fun onRemoteInvitationAccepted(response: CallRemoteResponse?) {
//返回给被叫 //返回给被叫
LogUtil.e("[agora]接受来自${response?.callerId}的呼叫成功") LogUtil.e("[agora]接受来自${response?.callerId}的呼叫成功")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"接受来自${response?.callerId}的呼叫成功"
)
} }
override fun onRemoteInvitationRefused(response: CallRemoteResponse?) { override fun onRemoteInvitationRefused(response: CallRemoteResponse?) {
//返回给被叫 //返回给被叫
LogUtil.e("[agora]已拒绝来自${response?.callerId}的呼叫") LogUtil.e("[agora]已拒绝来自${response?.callerId}的呼叫")
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"已拒绝来自${response?.callerId}的呼叫"
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is ConsultantAudioHomeActivity) { if (act is ConsultantAudioHomeActivity) {
act.uploadExceptionStatus("已拒绝", 2) act.uploadExceptionStatus("已拒绝", 2)
...@@ -210,7 +226,14 @@ class YDLavManager { ...@@ -210,7 +226,14 @@ class YDLavManager {
callEndStatusUpdate(response?.ChannelId!!, 1, "主叫取消呼叫") callEndStatusUpdate(response?.ChannelId!!, 1, "主叫取消呼叫")
//返回给被叫 //返回给被叫
LogUtil.e("[agora]主叫${response?.callerId}已取消呼叫邀请") LogUtil.e("[agora]主叫${response?.callerId}已取消呼叫邀请")
writeAgoraLog("呼叫邀请被取消:主叫(专家)主动取消-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME) AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"主叫${response?.callerId}已取消呼叫邀请"
)
writeAgoraLog(
"呼叫邀请被取消:主叫(专家)主动取消-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}",
FILE_NAME
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is ConsultantAudioHomeActivity) { if (act is ConsultantAudioHomeActivity) {
...@@ -224,13 +247,26 @@ class YDLavManager { ...@@ -224,13 +247,26 @@ class YDLavManager {
//返回给被叫 //返回给被叫
LogUtil.e("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}") LogUtil.e("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}")
if (errorCode == RtmStatusCode.RemoteInvitationError.REMOTE_INVITATION_ERR_INVITATION_EXPIRE) { //呼叫邀请过期 if (errorCode == RtmStatusCode.RemoteInvitationError.REMOTE_INVITATION_ERR_INVITATION_EXPIRE) { //呼叫邀请过期
writeAgoraLog("呼叫邀请被取消:用户未接听-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME) AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"呼叫邀请被取消:用户未接听"
)
writeAgoraLog(
"呼叫邀请被取消:用户未接听-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}",
FILE_NAME
)
val act = ActivityManager.getInstance().getTopTaskActivity() val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is ConsultantAudioHomeActivity) { if (act is ConsultantAudioHomeActivity) {
act.uploadExceptionStatus("未接听", 3) act.uploadExceptionStatus("未接听", 3)
} }
} else { } else {
writeAgoraLog("呼叫邀请被取消:错误原因(${errorCode})-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME) writeAgoraLog(
"呼叫邀请被取消:错误原因(${errorCode})", FILE_NAME
)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"呼叫邀请被取消:错误原因(${errorCode})"
)
} }
callEndStatusUpdate(response?.ChannelId!!, 2, "超时未接听导致的取消呼叫") callEndStatusUpdate(response?.ChannelId!!, 2, "超时未接听导致的取消呼叫")
//关闭页面 //关闭页面
...@@ -239,11 +275,29 @@ class YDLavManager { ...@@ -239,11 +275,29 @@ class YDLavManager {
override fun onOtherMsg(error: String?) { override fun onOtherMsg(error: String?) {
LogUtil.e("[agora]其它消息:${error}") LogUtil.e("[agora]其它消息:${error}")
if (error.equals("呼叫发送成功")){ if (error.equals("呼叫发送成功")) {
writeAgoraLog("声网发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log",true) writeAgoraLog(
}else{ "声网发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}",
writeAgoraLog("声网发送通话邀请失败${error}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log",true) "confide.log",
true
)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"声网发送通话邀请成功"
)
} else {
writeAgoraLog(
"声网发送通话邀请失败${error}-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time
)
}", "confide.log", true
)
LogHelper.getInstance().uploadLog(false) LogHelper.getInstance().uploadLog(false)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"声网发送通话邀请失败${error}"
)
} }
} }
}) })
...@@ -255,6 +309,8 @@ class YDLavManager { ...@@ -255,6 +309,8 @@ class YDLavManager {
toUid: String, toUid: String,
content: String content: String
) { ) {
// LogUtil.e("[agora]收到云信的通知消息:$content") // LogUtil.e("[agora]收到云信的通知消息:$content")
// val agoraInvitationBean = Gson().fromJson(content, AgoraInvitationBean::class.java) // val agoraInvitationBean = Gson().fromJson(content, AgoraInvitationBean::class.java)
...@@ -354,15 +410,31 @@ class YDLavManager { ...@@ -354,15 +410,31 @@ class YDLavManager {
override fun onException(throwable: Throwable) { override fun onException(throwable: Throwable) {
// writeAgoraLog("云信发送通话邀请异常${throwable.message}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) // writeAgoraLog("云信发送通话邀请异常${throwable.message}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true)
// LogHelper.getInstance().uploadLog(false) // LogHelper.getInstance().uploadLog(false)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.YUNXIN,
"云信发送通话邀请异常${throwable.message}"
)
} }
override fun onFailed(code: Int) { override fun onFailed(code: Int) {
// writeAgoraLog("云信发送通话邀请失败${code}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) // writeAgoraLog("云信发送通话邀请失败${code}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true)
// LogHelper.getInstance().uploadLog(false) // LogHelper.getInstance().uploadLog(false)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.YUNXIN,
"云信发送通话邀请失败${code}"
)
} }
override fun onSuccess() { override fun onSuccess() {
writeAgoraLog("云信发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) writeAgoraLog(
"云信发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}",
"confide.log",
true
)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.YUNXIN,
"云信发送通话邀请成功"
)
} }
}) })
}, 300) }, 300)
...@@ -379,6 +451,7 @@ class YDLavManager { ...@@ -379,6 +451,7 @@ class YDLavManager {
if (TextUtils.isEmpty(userId) || userId ?: "0" <= "0") { if (TextUtils.isEmpty(userId) || userId ?: "0" <= "0") {
//如果uid为空或小于等于0 ,则不进行登录,因为uid为0也会登录成功,会导致后面uid正确时无法登录 //如果uid为空或小于等于0 ,则不进行登录,因为uid为0也会登录成功,会导致后面uid正确时无法登录
LogUtil.e("[agora]login-uid:$userId") LogUtil.e("[agora]login-uid:$userId")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA,"uid为空或小于等于0 ,则不进行登录 login-uid:$userId")
return return
} }
isOnlineRtm = true isOnlineRtm = true
...@@ -394,22 +467,50 @@ class YDLavManager { ...@@ -394,22 +467,50 @@ class YDLavManager {
override fun onSuccess() { override fun onSuccess() {
//登陆成功,发起呼叫 //登陆成功,发起呼叫
LogUtil.e("[agora]实时消息登录成功") LogUtil.e("[agora]实时消息登录成功")
writeAgoraLog("声网rtm登录成功,uid:$userId-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网rtm登录成功,uid:$userId")
writeAgoraLog(
"声网rtm登录成功,uid:$userId-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time
)
}", "confide.log", true
)
event(true, "") event(true, "")
} }
override fun onFailure(msg: String?) { override fun onFailure(msg: String?) {
LogUtil.e("[agora]实时消息登录失败:$msg") LogUtil.e("[agora]实时消息登录失败:$msg")
writeAgoraLog("声网rtm登录失败:$msg-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) writeAgoraLog(
"声网rtm登录失败:$msg-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time
)
}", "confide.log", true
)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网rtm登录失败:$msg")
event(false, msg) event(false, msg)
} }
}) })
} else { } else {
LogUtil.e("声网token获取失败uid:" + userId + " error:" + it.msg) LogUtil.e("声网token获取失败uid:" + userId + " error:" + it.msg)
LogHelper.getInstance().writeLogSync("声网token获取失败uid:" + userId + " error:" + it.msg) LogHelper.getInstance()
.writeLogSync("声网token获取失败uid:" + userId + " error:" + it.msg)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"声网token获取失败uid" + userId + " error:" + it.msg
)
} }
}, { }, {
LogUtil.e("声网token获取异常uid:" + userId + " error:" + it.message) LogUtil.e("声网token获取异常uid:" + userId + " error:" + it.message)
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.AGORA,
"声网token获取异常uid:" + userId + " error:" + it.message
)
}) })
} }
...@@ -428,7 +529,16 @@ class YDLavManager { ...@@ -428,7 +529,16 @@ class YDLavManager {
Observable.timer(1000, TimeUnit.MILLISECONDS).subscribeOn(Schedulers.io()) Observable.timer(1000, TimeUnit.MILLISECONDS).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe { .observeOn(AndroidSchedulers.mainThread()).subscribe {
LogUtil.e("[agora]启动通话界面") LogUtil.e("[agora]启动通话界面")
writeAgoraLog("收到主叫方通话邀请($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME, false) writeAgoraLog(
"收到主叫方通话邀请($from)-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time
)
}", FILE_NAME, false
)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "收到主叫方通话邀请($from)")
LogHelper.getInstance().uploadLog(false) LogHelper.getInstance().uploadLog(false)
//邀请加入频道消息,跳转通话界面 //邀请加入频道消息,跳转通话界面
ARouter.getInstance().build("/av/ConsultantAudioHomeActivity") ARouter.getInstance().build("/av/ConsultantAudioHomeActivity")
...@@ -436,12 +546,29 @@ class YDLavManager { ...@@ -436,12 +546,29 @@ class YDLavManager {
} }
} else { } else {
LogUtil.d("[agora]收到声网邀请,但界面实例已存在") LogUtil.d("[agora]收到声网邀请,但界面实例已存在")
writeAgoraLog("收到主叫方通话邀请,但界面实例已存在($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME, false) writeAgoraLog(
"收到主叫方通话邀请,但界面实例已存在($from)-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time
)
}", FILE_NAME, false
)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "收到主叫方通话邀请,但界面实例已存在($from)")
LogHelper.getInstance().uploadLog(false) LogHelper.getInstance().uploadLog(false)
} }
} else { } else {
LogUtil.d("[agora]收到声网邀请,但response==null") LogUtil.d("[agora]收到声网邀请,但response==null")
writeAgoraLog("收到主叫方通话邀请,但response==null($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME, false) writeAgoraLog(
"收到主叫方通话邀请,但response==null($from)-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time
)
}", FILE_NAME, false
)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "收到主叫方通话邀请,但response==null($from)")
LogHelper.getInstance().uploadLog(false) LogHelper.getInstance().uploadLog(false)
} }
} }
...@@ -472,19 +599,25 @@ class YDLavManager { ...@@ -472,19 +599,25 @@ class YDLavManager {
* 退出登录 * 退出登录
* @param * @param
*/ */
private fun logout(isReLogin:Boolean) { private fun logout(isReLogin: Boolean) {
EventBus.getDefault().unregister(this) EventBus.getDefault().unregister(this)
YDLRTMClient.instances.logout(object : LoginCallback { YDLRTMClient.instances.logout(object : LoginCallback {
override fun onSuccess() { override fun onSuccess() {
//退出登陆成功 //退出登陆成功
LogUtil.d("[agora]实时消息退出成功") LogUtil.d("[agora]实时消息退出成功")
if (isReLogin){ AliYunRichLogsHelper.getInstance()
login(ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid) .sendRichLog(AliYunLogConfig.AGORA, "实时消息退出成功")
if (isReLogin) {
login(
ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid
)
} }
} }
override fun onFailure(msg: String?) { override fun onFailure(msg: String?) {
LogUtil.d("[agora]实时消息退出失败:$msg") LogUtil.d("[agora]实时消息退出失败:$msg")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "实时消息退出失败:$msg")
} }
}) })
} }
...@@ -492,7 +625,7 @@ class YDLavManager { ...@@ -492,7 +625,7 @@ class YDLavManager {
/** /**
* 退出登录默认不重新登录 * 退出登录默认不重新登录
*/ */
fun logout(){ fun logout() {
logout(false) logout(false)
} }
...@@ -510,6 +643,8 @@ class YDLavManager { ...@@ -510,6 +643,8 @@ class YDLavManager {
callback?.onSuccess() callback?.onSuccess()
}, { }, {
LogUtil.e("agora", "声网上传异常与错误日志接口调用失败:" + it.message) LogUtil.e("agora", "声网上传异常与错误日志接口调用失败:" + it.message)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网上传异常与错误日志接口调用失败: + ${it.message}")
}) })
} }
...@@ -529,6 +664,9 @@ class YDLavManager { ...@@ -529,6 +664,9 @@ class YDLavManager {
.subscribe({ .subscribe({
}, { }, {
LogUtil.d("callEndStatusUpdate error: ${it.message}") LogUtil.d("callEndStatusUpdate error: ${it.message}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "callEndStatusUpdate error: ${it.message}")
}) })
} }
...@@ -538,6 +676,8 @@ class YDLavManager { ...@@ -538,6 +676,8 @@ class YDLavManager {
private val listener = object : InitListener { private val listener = object : InitListener {
override fun onTokenExpired() { override fun onTokenExpired() {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "onTokenExpired")
LogUtil.e("[agora]onTokenExpired") LogUtil.e("[agora]onTokenExpired")
instances.login( instances.login(
ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid
...@@ -546,22 +686,32 @@ class YDLavManager { ...@@ -546,22 +686,32 @@ class YDLavManager {
override fun onMessageReceived(message: RTMMesssage, userId: Int) { override fun onMessageReceived(message: RTMMesssage, userId: Int) {
LogUtil.i("[agora]onMessageReceived:${message.text} -->uid:$userId") LogUtil.i("[agora]onMessageReceived:${message.text} -->uid:$userId")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "onMessageReceived:${message.text} -->uid:$userId")
} }
override fun onConnectionStateChanged(state: Int, reason: Int) { override fun onConnectionStateChanged(state: Int, reason: Int) {
sdkStatus = state sdkStatus = state
writeAgoraLog("声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) writeAgoraLog(
"声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}",
"confide.log",
true
)
LogUtil.i("[agora]onConnectionStateChanged:state:${state} -->reason:$reason") LogUtil.i("[agora]onConnectionStateChanged:state:${state} -->reason:$reason")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "声网rtm登录状态:${state}")
/* /*
* 当reason=CONNECTION_CHANGE_REASON_REMOTE_LOGIN的时候,是远端用户以相同UID登录RTM * 当reason=CONNECTION_CHANGE_REASON_REMOTE_LOGIN的时候,是远端用户以相同UID登录RTM
* 如果正在通话中,则不进行退出操作 * 如果正在通话中,则不进行退出操作
* */ * */
if (reason==CONNECTION_CHANGE_REASON_REMOTE_LOGIN){ if (reason == CONNECTION_CHANGE_REASON_REMOTE_LOGIN) {
if (!activityIsExists(ConsultantAudioHomeActivity::class.java)&&!activityIsExists(AudioHomeActivity::class.java)){ if (!activityIsExists(ConsultantAudioHomeActivity::class.java) && !activityIsExists(
AudioHomeActivity::class.java
)
) {
isOnlineRtm = false isOnlineRtm = false
logout() logout()
}else{ } else {
logout(true) logout(true)
} }
} }
......
...@@ -47,6 +47,8 @@ import com.ydl.ydlcommon.utils.LogUtil ...@@ -47,6 +47,8 @@ import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.Utils import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.user.api.service.IUserService import com.yidianling.user.api.service.IUserService
...@@ -137,7 +139,7 @@ class ConsultantAudioHomeActivity : ...@@ -137,7 +139,7 @@ class ConsultantAudioHomeActivity :
super.onJoinChannelSuccess(channel, uid, elapsed) super.onJoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 加入频道回调") LogUtil.e("[agora]$uid 加入频道回调")
writeAgoraLog("被叫(用户)加入声网($channel)频道成功") writeAgoraLog("被叫(用户)加入声网($channel)频道成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "被叫(用户)加入声网($channel)频道成功")
runOnUiThread { runOnUiThread {
// 加入频道后再通知用户已接受 // 加入频道后再通知用户已接受
// YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId) // YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId)
...@@ -165,6 +167,9 @@ class ConsultantAudioHomeActivity : ...@@ -165,6 +167,9 @@ class ConsultantAudioHomeActivity :
super.onRejoinChannelSuccess(channel, uid, elapsed) super.onRejoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 重新加入频道回调") LogUtil.e("[agora]$uid 重新加入频道回调")
writeAgoraLog("被叫(用户)重新加入声网频道($channel)成功") writeAgoraLog("被叫(用户)重新加入声网频道($channel)成功")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "被叫(用户)重新加入声网频道($channel)成功")
runOnUiThread { runOnUiThread {
if (!isConnectSuccess) { if (!isConnectSuccess) {
tv_toast.visibility = View.VISIBLE tv_toast.visibility = View.VISIBLE
...@@ -182,6 +187,8 @@ class ConsultantAudioHomeActivity : ...@@ -182,6 +187,8 @@ class ConsultantAudioHomeActivity :
super.onUserJoined(uid, elapsed) super.onUserJoined(uid, elapsed)
LogUtil.e("[agora]远端用户加入频道回调") LogUtil.e("[agora]远端用户加入频道回调")
writeAgoraLog("主叫(专家)加入声网频道成功") writeAgoraLog("主叫(专家)加入声网频道成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "主叫(专家)加入声网频道成功")
//另一方加入频道成功 //另一方加入频道成功
runOnUiThread { runOnUiThread {
isConnectSuccess = true isConnectSuccess = true
...@@ -223,6 +230,8 @@ class ConsultantAudioHomeActivity : ...@@ -223,6 +230,8 @@ class ConsultantAudioHomeActivity :
override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) { override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) {
super.onLeaveChannel(stats) super.onLeaveChannel(stats)
LogUtil.e("[agora]自己离开频道回调") LogUtil.e("[agora]自己离开频道回调")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "自己离开频道回调")
//通知php 通话已结束 //通知php 通话已结束
close(RESULT_ANSWERED_CODE, "") close(RESULT_ANSWERED_CODE, "")
} }
...@@ -249,6 +258,8 @@ class ConsultantAudioHomeActivity : ...@@ -249,6 +258,8 @@ class ConsultantAudioHomeActivity :
) )
showToast("对方已挂断") showToast("对方已挂断")
writeAgoraLog("通话接通后挂断:主叫(专家)离开频道") writeAgoraLog("通话接通后挂断:主叫(专家)离开频道")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "通话接通后挂断:主叫(专家)离开频道")
if (null != totalDisposable) { if (null != totalDisposable) {
totalDisposable!!.dispose() totalDisposable!!.dispose()
} }
...@@ -265,6 +276,8 @@ class ConsultantAudioHomeActivity : ...@@ -265,6 +276,8 @@ class ConsultantAudioHomeActivity :
} }
LogUtil.e("[agora]发生警告回调=$warn") LogUtil.e("[agora]发生警告回调=$warn")
writeAgoraLog("声网警告回调码:($warn)") writeAgoraLog("声网警告回调码:($warn)")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "声网警告回调码:($warn)")
//103:没有可用的频道资源。可能是因为服务端没法分配频道资源 //103:没有可用的频道资源。可能是因为服务端没法分配频道资源
//104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器 //104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器
//105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的 //105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的
...@@ -290,6 +303,7 @@ class ConsultantAudioHomeActivity : ...@@ -290,6 +303,7 @@ class ConsultantAudioHomeActivity :
uploadException("mRtcEventHandler-onError:errorCode--%${err}") uploadException("mRtcEventHandler-onError:errorCode--%${err}")
LogUtil.e("[agora] 发生错误回调 =$err") LogUtil.e("[agora] 发生错误回调 =$err")
writeAgoraLog("声网错误回调errorCode--%${err}") writeAgoraLog("声网错误回调errorCode--%${err}")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}")
//3:SDK 初始化失败。Agora 建议尝试以下处理方法 //3:SDK 初始化失败。Agora 建议尝试以下处理方法
//7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化 //7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化
...@@ -510,6 +524,8 @@ class ConsultantAudioHomeActivity : ...@@ -510,6 +524,8 @@ class ConsultantAudioHomeActivity :
override fun channelTokenResponse(token: String?, needJoinChannel: Boolean) { override fun channelTokenResponse(token: String?, needJoinChannel: Boolean) {
if (TextUtils.isEmpty(token)) { if (TextUtils.isEmpty(token)) {
LogUtil.e("[agora]token not null") LogUtil.e("[agora]token not null")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "token isEmpty ")
showToast("通话频道不存在") showToast("通话频道不存在")
finish() finish()
return return
...@@ -583,6 +599,8 @@ class ConsultantAudioHomeActivity : ...@@ -583,6 +599,8 @@ class ConsultantAudioHomeActivity :
val account = YdlCommonRouterManager.getYdlCommonRoute().getUid() val account = YdlCommonRouterManager.getYdlCommonRoute().getUid()
if (!TextUtils.isEmpty(mAudioMessageBean?.channelId)) { if (!TextUtils.isEmpty(mAudioMessageBean?.channelId)) {
LogUtil.e("[agora] joinChannel:$account") LogUtil.e("[agora] joinChannel:$account")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "joinChannel:$account")
voiceManage?.getVoiceApi()?.joinChannel( voiceManage?.getVoiceApi()?.joinChannel(
channelToken channelToken
?: "", mAudioMessageBean!!.channelId!!, "Extra Optional Data", account ?: "", mAudioMessageBean!!.channelId!!, "Extra Optional Data", account
...@@ -807,6 +825,9 @@ class ConsultantAudioHomeActivity : ...@@ -807,6 +825,9 @@ class ConsultantAudioHomeActivity :
fun close(code: Int, msg: String) { fun close(code: Int, msg: String) {
runOnUiThread { runOnUiThread {
LogUtil.e("[agora]close(code:$code,msg:$msg)") LogUtil.e("[agora]close(code:$code,msg:$msg)")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.AGORA, "close(code:$code,msg:$msg)")
//上传日志文件 //上传日志文件
uploadLog() uploadLog()
stopMusic() stopMusic()
...@@ -837,6 +858,7 @@ class ConsultantAudioHomeActivity : ...@@ -837,6 +858,7 @@ class ConsultantAudioHomeActivity :
} }
ActivityManager.getInstance().removeStack(activity = this) ActivityManager.getInstance().removeStack(activity = this)
LogUtil.e("[agora]页面移除") LogUtil.e("[agora]页面移除")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "页面移除")
finish() finish()
} }
} }
...@@ -945,9 +967,11 @@ class ConsultantAudioHomeActivity : ...@@ -945,9 +967,11 @@ class ConsultantAudioHomeActivity :
Observable.create<Any> { Observable.create<Any> {
try { try {
AudioLogUtils.writeAgoraLog( AudioLogUtils.writeAgoraLog(
"$content-------Time:${AudioLogUtils.format.format( "$content-------Time:${
AudioLogUtils.format.format(
Calendar.getInstance().time Calendar.getInstance().time
)}", "consult.log" )
}", "consult.log"
) )
} catch (e: Exception) { } catch (e: Exception) {
} }
......
...@@ -10,6 +10,8 @@ import com.netease.nimlib.sdk.avchat.AVChatManager; ...@@ -10,6 +10,8 @@ import com.netease.nimlib.sdk.avchat.AVChatManager;
import com.netease.nimlib.sdk.avchat.constant.AVChatControlCommand; import com.netease.nimlib.sdk.avchat.constant.AVChatControlCommand;
import com.netease.nimlib.sdk.avchat.model.AVChatData; import com.netease.nimlib.sdk.avchat.model.AVChatData;
import com.ydl.ydlcommon.base.BaseActivityMgr; import com.ydl.ydlcommon.base.BaseActivityMgr;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.avchatkit.activity.AVChatActivity; import com.yidianling.avchatkit.activity.AVChatActivity;
import com.yidianling.avchatkit.common.log.ILogUtil; import com.yidianling.avchatkit.common.log.ILogUtil;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
...@@ -149,6 +151,8 @@ public class AVChatKit { ...@@ -149,6 +151,8 @@ public class AVChatKit {
*/ */
public static void outgoingCall(Context context, String account, String displayName, int callType, int source) { public static void outgoingCall(Context context, String account, String displayName, int callType, int source) {
AVChatActivity.outgoingCall(context, account, displayName, callType, source); AVChatActivity.outgoingCall(context, account, displayName, callType, source);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"outgoingCall 发起音视频通话呼叫");
} }
/** /**
...@@ -162,7 +166,7 @@ public class AVChatKit { ...@@ -162,7 +166,7 @@ public class AVChatKit {
*/ */
public static void outgoingTeamCall(Context context, boolean receivedCall, String teamId, String roomId, ArrayList<String> accounts, String teamName) { public static void outgoingTeamCall(Context context, boolean receivedCall, String teamId, String roomId, ArrayList<String> accounts, String teamName) {
TeamAVChatActivity.startActivity(context, receivedCall, teamId, roomId, accounts, teamName); TeamAVChatActivity.startActivity(context, receivedCall, teamId, roomId, accounts, teamName);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"outgoingTeamCall 发起群组音视频通话呼叫");
} }
/** /**
......
...@@ -26,6 +26,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatData; ...@@ -26,6 +26,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatData;
import com.netease.nimlib.sdk.avchat.model.AVChatOnlineAckEvent; import com.netease.nimlib.sdk.avchat.model.AVChatOnlineAckEvent;
import com.netease.nimlib.sdk.avchat.model.AVChatVideoFrame; import com.netease.nimlib.sdk.avchat.model.AVChatVideoFrame;
import com.tbruyelle.rxpermissions2.RxPermissions; import com.tbruyelle.rxpermissions2.RxPermissions;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.avchatkit.AVChatKit; import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.avchatkit.AVChatProfile; import com.yidianling.avchatkit.AVChatProfile;
import com.yidianling.avchatkit.common.activity.AVChatBaseUI; import com.yidianling.avchatkit.common.activity.AVChatBaseUI;
...@@ -325,6 +327,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -325,6 +327,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
ToastUtil.toastShort(AVChatActivity.this, msg); ToastUtil.toastShort(AVChatActivity.this, msg);
} else { } else {
ToastUtil.toastShort(AVChatActivity.this, "录制已结束."); ToastUtil.toastShort(AVChatActivity.this, "录制已结束.");
} }
if (state == AVChatType.AUDIO.getValue()) { if (state == AVChatType.AUDIO.getValue()) {
avChatAudioUI.resetRecordTip(); avChatAudioUI.resetRecordTip();
...@@ -345,12 +348,17 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -345,12 +348,17 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override @Override
public void onJoinedChannel(int code, String audioFile, String videoFile, int i) { public void onJoinedChannel(int code, String audioFile, String videoFile, int i) {
LogUtil.d(TAG, "audioFile -> " + audioFile + " videoFile -> " + videoFile); LogUtil.d(TAG, "audioFile -> " + audioFile + " videoFile -> " + videoFile);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "audioFile -> " + audioFile + " videoFile -> " + videoFile);
handleWithConnectServerResult(code); handleWithConnectServerResult(code);
} }
@Override @Override
public void onUserJoined(String account) { public void onUserJoined(String account) {
LogUtil.d(TAG, "onUserJoin -> " + account); LogUtil.d(TAG, "onUserJoin -> " + account);
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "onUserJoin -> " + account);
if (state == AVChatType.VIDEO.getValue()) { if (state == AVChatType.VIDEO.getValue()) {
avChatVideoUI.initLargeSurfaceView(account); avChatVideoUI.initLargeSurfaceView(account);
} }
...@@ -359,6 +367,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -359,6 +367,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override @Override
public void onUserLeave(String account, int event) { public void onUserLeave(String account, int event) {
LogUtil.d(TAG, "onUserLeave -> " + account); LogUtil.d(TAG, "onUserLeave -> " + account);
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "onUserLeave -> " + account);
manualHangUp(AVChatExitCode.HANGUP); manualHangUp(AVChatExitCode.HANGUP);
finish(); finish();
} }
...@@ -366,11 +377,14 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -366,11 +377,14 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override @Override
public void onCallEstablished() { public void onCallEstablished() {
LogUtil.d(TAG, "onCallEstablished"); LogUtil.d(TAG, "onCallEstablished");
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "onCallEstablished");
//移除超时监听 //移除超时监听
AVChatTimeoutObserver.getInstance().observeTimeoutNotification(timeoutObserver, false, mIsInComingCall); AVChatTimeoutObserver.getInstance().observeTimeoutNotification(timeoutObserver, false, mIsInComingCall);
if (avChatController.getTimeBase() == 0) if (avChatController.getTimeBase() == 0) {
avChatController.setTimeBase(SystemClock.elapsedRealtime()); avChatController.setTimeBase(SystemClock.elapsedRealtime());
}
if (state == AVChatType.AUDIO.getValue()) { if (state == AVChatType.AUDIO.getValue()) {
avChatAudioUI.showAudioInitLayout(); avChatAudioUI.showAudioInitLayout();
} else { } else {
...@@ -400,6 +414,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -400,6 +414,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
public void onEvent(AVChatCommonEvent avChatHangUpInfo) { public void onEvent(AVChatCommonEvent avChatHangUpInfo) {
avChatData = avChatController.getAvChatData(); avChatData = avChatController.getAvChatData();
if (avChatData != null && avChatData.getChatId() == avChatHangUpInfo.getChatId()) { if (avChatData != null && avChatData.getChatId() == avChatHangUpInfo.getChatId()) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "callHangupObserver 通话过程中,收到对方挂断电话");
hangUpByOther(AVChatExitCode.HANGUP); hangUpByOther(AVChatExitCode.HANGUP);
cancelCallingNotifier(); cancelCallingNotifier();
// 如果是incoming call主叫方挂断,那么通知栏有通知 // 如果是incoming call主叫方挂断,那么通知栏有通知
...@@ -418,10 +435,16 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -418,10 +435,16 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
AVChatData info = avChatController.getAvChatData(); AVChatData info = avChatController.getAvChatData();
if (info != null && info.getChatId() == ackInfo.getChatId()) { if (info != null && info.getChatId() == ackInfo.getChatId()) {
if (ackInfo.getEvent() == AVChatEventType.CALLEE_ACK_BUSY) { if (ackInfo.getEvent() == AVChatEventType.CALLEE_ACK_BUSY) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "callAckObserver 呼叫时,被叫方正在忙");
hangUpByOther(AVChatExitCode.PEER_BUSY); hangUpByOther(AVChatExitCode.PEER_BUSY);
} else if (ackInfo.getEvent() == AVChatEventType.CALLEE_ACK_REJECT) { } else if (ackInfo.getEvent() == AVChatEventType.CALLEE_ACK_REJECT) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "callAckObserver 呼叫时,被叫方拒绝通话");
hangUpByOther(AVChatExitCode.REJECT); hangUpByOther(AVChatExitCode.REJECT);
} else if (ackInfo.getEvent() == AVChatEventType.CALLEE_ACK_AGREE) { } else if (ackInfo.getEvent() == AVChatEventType.CALLEE_ACK_AGREE) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "callAckObserver 呼叫时,被叫方同意通话");
AVChatSoundPlayer.instance().stop(); AVChatSoundPlayer.instance().stop();
avChatController.isCallEstablish.set(true); avChatController.isCallEstablish.set(true);
} }
...@@ -436,6 +459,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -436,6 +459,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
// 来电超时,自己未接听 // 来电超时,自己未接听
if (mIsInComingCall) { if (mIsInComingCall) {
activeMissCallNotifier(); activeMissCallNotifier();
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "timeoutObserver 来电超时,自己未接听");
} }
finish(); finish();
} }
...@@ -456,27 +481,39 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -456,27 +481,39 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
} }
switch (notification.getControlCommand()) { switch (notification.getControlCommand()) {
case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO: case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO:
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleCallControl 音频切换到视频");
incomingAudioToVideo(); incomingAudioToVideo();
break; break;
case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO_AGREE: case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO_AGREE:
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleCallControl 同意从音频切换到视频");
// 对方同意切成视频啦 // 对方同意切成视频啦
state = AVChatType.VIDEO.getValue(); state = AVChatType.VIDEO.getValue();
avChatVideoUI.onAudioToVideoAgree(notification.getAccount()); avChatVideoUI.onAudioToVideoAgree(notification.getAccount());
break; break;
case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO_REJECT: case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO_REJECT:
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleCallControl 拒绝从音频切换到视频");
rejectAudioToVideo(); rejectAudioToVideo();
ToastUtil.toastShort(AVChatActivity.this, R.string.im_avchat_switch_video_reject); ToastUtil.toastShort(AVChatActivity.this, R.string.im_avchat_switch_video_reject);
break; break;
case AVChatControlCommand.SWITCH_VIDEO_TO_AUDIO: case AVChatControlCommand.SWITCH_VIDEO_TO_AUDIO:
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleCallControl 视频切换到音频");
onVideoToAudio(); onVideoToAudio();
break; break;
case AVChatControlCommand.NOTIFY_VIDEO_OFF: case AVChatControlCommand.NOTIFY_VIDEO_OFF:
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleCallControl 通知对方自己关闭了视频");
// 收到对方关闭画面通知 // 收到对方关闭画面通知
if (state == AVChatType.VIDEO.getValue()) { if (state == AVChatType.VIDEO.getValue()) {
avChatVideoUI.peerVideoOff(); avChatVideoUI.peerVideoOff();
} }
break; break;
case AVChatControlCommand.NOTIFY_VIDEO_ON: case AVChatControlCommand.NOTIFY_VIDEO_ON:
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleCallControl 通知对方自己打开了视频");
// 收到对方打开画面通知 // 收到对方打开画面通知
if (state == AVChatType.VIDEO.getValue()) { if (state == AVChatType.VIDEO.getValue()) {
avChatVideoUI.peerVideoOn(); avChatVideoUI.peerVideoOn();
...@@ -496,14 +533,24 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -496,14 +533,24 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
protected void handleWithConnectServerResult(int auth_result) { protected void handleWithConnectServerResult(int auth_result) {
LogUtil.i(TAG, "result code->" + auth_result); LogUtil.i(TAG, "result code->" + auth_result);
if (auth_result == 200) { if (auth_result == 200) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleWithConnectServerResult onConnectServer success");
LogUtil.d(TAG, "onConnectServer success"); LogUtil.d(TAG, "onConnectServer success");
} else if (auth_result == 101) { // 连接超时 } else if (auth_result == 101) { // 连接超时
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleWithConnectServerResult 连接超时 101");
avChatController.showQuitToast(AVChatExitCode.PEER_NO_RESPONSE); avChatController.showQuitToast(AVChatExitCode.PEER_NO_RESPONSE);
} else if (auth_result == 401) { // 验证失败 } else if (auth_result == 401) { // 验证失败
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleWithConnectServerResult 验证失败 401");
avChatController.showQuitToast(AVChatExitCode.CONFIG_ERROR); avChatController.showQuitToast(AVChatExitCode.CONFIG_ERROR);
} else if (auth_result == 417) { // 无效的channelId } else if (auth_result == 417) { // 无效的channelId
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleWithConnectServerResult 无效的channelId 417");
avChatController.showQuitToast(AVChatExitCode.INVALIDE_CHANNELID); avChatController.showQuitToast(AVChatExitCode.INVALIDE_CHANNELID);
} else { // 连接服务器错误,直接退出 } else { // 连接服务器错误,直接退出
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "handleWithConnectServerResult 连接服务器错误" + auth_result);
avChatController.showQuitToast(AVChatExitCode.CONFIG_ERROR); avChatController.showQuitToast(AVChatExitCode.CONFIG_ERROR);
} }
} }
...@@ -545,6 +592,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -545,6 +592,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
if (client != null) { if (client != null) {
String option = ackInfo.getEvent() == AVChatEventType.CALLEE_ONLINE_CLIENT_ACK_AGREE ? "接听!" : "拒绝!"; String option = ackInfo.getEvent() == AVChatEventType.CALLEE_ONLINE_CLIENT_ACK_AGREE ? "接听!" : "拒绝!";
ToastUtil.toastShort(AVChatActivity.this, "通话已在" + client + "端被" + option); ToastUtil.toastShort(AVChatActivity.this, "通话已在" + client + "端被" + option);
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "onlineAckObserver 通话已在" + client + "端被" + option);
} }
finish(); finish();
} }
...@@ -607,6 +656,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -607,6 +656,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override @Override
public void onReceiveAudioToVideoAgree() { public void onReceiveAudioToVideoAgree() {
// 同意切换为视频 // 同意切换为视频
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "onReceiveAudioToVideoAgree 同意切换为视频");
state = AVChatType.VIDEO.getValue(); state = AVChatType.VIDEO.getValue();
audioRoot.setVisibility(View.GONE); audioRoot.setVisibility(View.GONE);
videoRoot.setVisibility(View.VISIBLE); videoRoot.setVisibility(View.VISIBLE);
...@@ -663,12 +714,16 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -663,12 +714,16 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
// 主动挂断 // 主动挂断
private void manualHangUp(int exitCode) { private void manualHangUp(int exitCode) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "manualHangUp 主动挂断");
releaseVideo(); releaseVideo();
avChatController.hangUp(exitCode); avChatController.hangUp(exitCode);
} }
// 被对方挂断 // 被对方挂断
private void hangUpByOther(int exitCode) { private void hangUpByOther(int exitCode) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.YUNXIN, "hangUpByOther 被对方挂断 exitCode:"+exitCode);
if (exitCode == AVChatExitCode.PEER_BUSY) { if (exitCode == AVChatExitCode.PEER_BUSY) {
avChatController.hangUp(AVChatExitCode.HANGUP); avChatController.hangUp(AVChatExitCode.HANGUP);
finish(); finish();
......
...@@ -35,6 +35,7 @@ public abstract class AVChatBaseUI extends AppCompatActivity { ...@@ -35,6 +35,7 @@ public abstract class AVChatBaseUI extends AppCompatActivity {
super.onStart(); super.onStart();
} }
@Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
......
...@@ -157,6 +157,7 @@ public class CustomAlertDialog extends AlertDialog { ...@@ -157,6 +157,7 @@ public class CustomAlertDialog extends AlertDialog {
} }
} }
@Override
public void setTitle(int resId) { public void setTitle(int resId) {
this.title = context.getString(resId); this.title = context.getString(resId);
isTitleVisible = TextUtils.isEmpty(title) ? false : true; isTitleVisible = TextUtils.isEmpty(title) ? false : true;
......
...@@ -11,6 +11,8 @@ import android.os.Build; ...@@ -11,6 +11,8 @@ import android.os.Build;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
public class NetworkUtil { public class NetworkUtil {
...@@ -79,9 +81,10 @@ public class NetworkUtil { ...@@ -79,9 +81,10 @@ public class NetworkUtil {
NetworkInfo networkInfo = getActiveNetworkInfo(context); NetworkInfo networkInfo = getActiveNetworkInfo(context);
if (networkInfo == null) { if (networkInfo == null) {
return -1; return -1;
} else } else {
return networkInfo.getType(); return networkInfo.getType();
} }
}
/** /**
...@@ -145,7 +148,7 @@ public class NetworkUtil { ...@@ -145,7 +148,7 @@ public class NetworkUtil {
} }
} }
curNetworkType = type; curNetworkType = type;
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.NETSTATUS, "网络类型:" + type);
return type; return type;
} }
...@@ -271,8 +274,11 @@ public class NetworkUtil { ...@@ -271,8 +274,11 @@ public class NetworkUtil {
NetworkInfo ni = cm.getActiveNetworkInfo(); NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null) { if (ni != null) {
if (ni.getType() == ConnectivityManager.TYPE_WIFI) { if (ni.getType() == ConnectivityManager.TYPE_WIFI) {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.NETSTATUS, "网络类型:TYPE_WIFI");
return true; return true;
} else { } else {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.NETSTATUS, "网络类型:非WIFI环境");
return false; return false;
} }
} else { } else {
......
...@@ -15,6 +15,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatNotifyOption; ...@@ -15,6 +15,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatNotifyOption;
import com.netease.nimlib.sdk.avchat.model.AVChatParameters; import com.netease.nimlib.sdk.avchat.model.AVChatParameters;
import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer; import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer;
import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory; import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.avchatkit.AVChatKit; import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
import com.yidianling.avchatkit.common.widgets.MultiSelectDialog; import com.yidianling.avchatkit.common.widgets.MultiSelectDialog;
...@@ -70,8 +72,11 @@ public class AVChatController { ...@@ -70,8 +72,11 @@ public class AVChatController {
this.avChatConfigs = new AVChatConfigs(context); this.avChatConfigs = new AVChatConfigs(context);
} }
//恢复视频和语音发送 /**
* 恢复视频和语音发送
*/
public void resumeVideo() { public void resumeVideo() {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "恢复视频和语音发送");
if (needRestoreLocalVideo) { if (needRestoreLocalVideo) {
AVChatManager.getInstance().muteLocalVideo(false); AVChatManager.getInstance().muteLocalVideo(false);
needRestoreLocalVideo = false; needRestoreLocalVideo = false;
...@@ -84,9 +89,11 @@ public class AVChatController { ...@@ -84,9 +89,11 @@ public class AVChatController {
} }
//关闭视频和语音发送. /**
* 关闭视频和语音发送.
*/
public void pauseVideo() { public void pauseVideo() {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "关闭视频和语音发送");
if (!AVChatManager.getInstance().isLocalVideoMuted()) { if (!AVChatManager.getInstance().isLocalVideoMuted()) {
AVChatManager.getInstance().muteLocalVideo(true); AVChatManager.getInstance().muteLocalVideo(true);
needRestoreLocalVideo = true; needRestoreLocalVideo = true;
...@@ -137,8 +144,10 @@ public class AVChatController { ...@@ -137,8 +144,10 @@ public class AVChatController {
if (code == ResponseCode.RES_FORBIDDEN) { if (code == ResponseCode.RES_FORBIDDEN) {
ToastUtil.toastShort(context, R.string.im_avchat_no_permission); ToastUtil.toastShort(context, R.string.im_avchat_no_permission);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "onFailed 暂无权限,请开通音视频服务 code:" + code);
} else { } else {
ToastUtil.toastShort(context, R.string.im_avchat_call_failed); ToastUtil.toastShort(context, R.string.im_avchat_call_failed);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "onFailed 发起通话失败 code:" + code);
} }
closeRtc(avChatType == AVChatType.VIDEO ? CallStateEnum.VIDEO : CallStateEnum.AUDIO); closeRtc(avChatType == AVChatType.VIDEO ? CallStateEnum.VIDEO : CallStateEnum.AUDIO);
callback.onFailed(code, ""); callback.onFailed(code, "");
...@@ -147,6 +156,8 @@ public class AVChatController { ...@@ -147,6 +156,8 @@ public class AVChatController {
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
LogUtil.d(TAG, "avChat call onException->" + exception); LogUtil.d(TAG, "avChat call onException->" + exception);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "onException avChat call onException->" + exception);
closeRtc(avChatType == AVChatType.VIDEO ? CallStateEnum.VIDEO : CallStateEnum.AUDIO); closeRtc(avChatType == AVChatType.VIDEO ? CallStateEnum.VIDEO : CallStateEnum.AUDIO);
callback.onFailed(-1, exception.toString()); callback.onFailed(-1, exception.toString());
} }
...@@ -184,8 +195,12 @@ public class AVChatController { ...@@ -184,8 +195,12 @@ public class AVChatController {
public void onFailed(int code) { public void onFailed(int code) {
if (code == -1) { if (code == -1) {
ToastUtil.toastShort(context, "本地音视频启动失败"); ToastUtil.toastShort(context, "本地音视频启动失败");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "onFailed 本地音视频启动失败 code:" + code);
} else { } else {
ToastUtil.toastShort(context, "建立连接失败"); ToastUtil.toastShort(context, "建立连接失败");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "onFailed 建立连接失败 code:" + code);
} }
LogUtil.e(TAG, "accept onFailed->" + code); LogUtil.e(TAG, "accept onFailed->" + code);
handleAcceptFailed(avChatType == AVChatType.VIDEO ? handleAcceptFailed(avChatType == AVChatType.VIDEO ?
...@@ -196,6 +211,8 @@ public class AVChatController { ...@@ -196,6 +211,8 @@ public class AVChatController {
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
LogUtil.d(TAG, "accept exception->" + exception); LogUtil.d(TAG, "accept exception->" + exception);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "onException accept exception->" + exception);
handleAcceptFailed(avChatType == AVChatType.VIDEO ? handleAcceptFailed(avChatType == AVChatType.VIDEO ?
CallStateEnum.VIDEO_CONNECTING : CallStateEnum.AUDIO); CallStateEnum.VIDEO_CONNECTING : CallStateEnum.AUDIO);
callback.onFailed(-1, exception.toString()); callback.onFailed(-1, exception.toString());
...@@ -208,9 +225,13 @@ public class AVChatController { ...@@ -208,9 +225,13 @@ public class AVChatController {
if (!AVChatManager.getInstance().isLocalAudioMuted()) { // isMute是否处于静音状态 if (!AVChatManager.getInstance().isLocalAudioMuted()) { // isMute是否处于静音状态
// 关闭音频 // 关闭音频
AVChatManager.getInstance().muteLocalAudio(true); AVChatManager.getInstance().muteLocalAudio(true);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "toggleMute 关闭音频");
} else { } else {
// 打开音频 // 打开音频
AVChatManager.getInstance().muteLocalAudio(false); AVChatManager.getInstance().muteLocalAudio(false);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "toggleMute 打开音频");
} }
} }
...@@ -224,6 +245,8 @@ public class AVChatController { ...@@ -224,6 +245,8 @@ public class AVChatController {
@Override @Override
public void onSuccess(Void aVoid) { public void onSuccess(Void aVoid) {
LogUtil.d(TAG, "videoSwitchAudio onSuccess"); LogUtil.d(TAG, "videoSwitchAudio onSuccess");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送视频切换为音频命令 onSuccess");
//关闭视频 //关闭视频
AVChatManager.getInstance().stopVideoPreview(); AVChatManager.getInstance().stopVideoPreview();
AVChatManager.getInstance().disableVideo(); AVChatManager.getInstance().disableVideo();
...@@ -235,11 +258,15 @@ public class AVChatController { ...@@ -235,11 +258,15 @@ public class AVChatController {
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
LogUtil.d(TAG, "videoSwitchAudio onFailed"); LogUtil.d(TAG, "videoSwitchAudio onFailed");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送视频切换为音频命令 onFailed code:" + code);
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
LogUtil.d(TAG, "videoSwitchAudio onException"); LogUtil.d(TAG, "videoSwitchAudio onException");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送视频切换为音频命令 onException exception:" + exception);
} }
}); });
} }
...@@ -250,17 +277,23 @@ public class AVChatController { ...@@ -250,17 +277,23 @@ public class AVChatController {
@Override @Override
public void onSuccess(Void aVoid) { public void onSuccess(Void aVoid) {
LogUtil.d(TAG, "requestSwitchToVideo onSuccess"); LogUtil.d(TAG, "requestSwitchToVideo onSuccess");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送音频切换为视频命令 onSuccess");
avSwitchListener.onAudioToVideo(); avSwitchListener.onAudioToVideo();
} }
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
LogUtil.d(TAG, "requestSwitchToVideo onFailed" + code); LogUtil.d(TAG, "requestSwitchToVideo onFailed" + code);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送音频切换为视频命令 onFailed:" + code);
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
LogUtil.d(TAG, "requestSwitchToVideo onException" + exception); LogUtil.d(TAG, "requestSwitchToVideo onException" + exception);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送音频切换为视频命令 onException:" + exception);
} }
}); });
} }
...@@ -271,6 +304,7 @@ public class AVChatController { ...@@ -271,6 +304,7 @@ public class AVChatController {
@Override @Override
public void onSuccess(Void aVoid) { public void onSuccess(Void aVoid) {
LogUtil.d(TAG, "receiveAudioToVideo onSuccess"); LogUtil.d(TAG, "receiveAudioToVideo onSuccess");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送同意从音频切换为视频的命令 onSuccess");
avSwitchListener.onReceiveAudioToVideoAgree(); avSwitchListener.onReceiveAudioToVideoAgree();
} }
...@@ -278,11 +312,16 @@ public class AVChatController { ...@@ -278,11 +312,16 @@ public class AVChatController {
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
LogUtil.d(TAG, "receiveAudioToVideo onFailed"); LogUtil.d(TAG, "receiveAudioToVideo onFailed");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,
"switchVideoToAudio 发送同意从音频切换为视频的命令 onFailed:" + code);
} }
@Override @Override
public void onException(Throwable exception) { public void onException(Throwable exception) {
LogUtil.d(TAG, "receiveAudioToVideo onException"); LogUtil.d(TAG, "receiveAudioToVideo onException");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "switchVideoToAudio 发送同意从音频切换为视频的命令 exception:" + exception);
} }
}); });
} }
...@@ -361,12 +400,16 @@ public class AVChatController { ...@@ -361,12 +400,16 @@ public class AVChatController {
} }
} }
// 设置扬声器是否开启 /**
* 设置扬声器是否开启
*/
public void toggleSpeaker() { public void toggleSpeaker() {
AVChatManager.getInstance().setSpeaker(!AVChatManager.getInstance().speakerEnabled()); AVChatManager.getInstance().setSpeaker(!AVChatManager.getInstance().speakerEnabled());
} }
// 切换摄像头(主要用于前置和后置摄像头切换) /**
* 切换摄像头(主要用于前置和后置摄像头切换)
*/
public void switchCamera() { public void switchCamera() {
mVideoCapturer.switchCamera(); mVideoCapturer.switchCamera();
} }
...@@ -403,7 +446,7 @@ public class AVChatController { ...@@ -403,7 +446,7 @@ public class AVChatController {
showQuitToast(type); showQuitToast(type);
} }
// 收到挂断通知,自己的处理 /**收到挂断通知,自己的处理*/
public void onHangUp(int exitCode) { public void onHangUp(int exitCode) {
if (destroyRTC) { if (destroyRTC) {
return; return;
...@@ -415,37 +458,49 @@ public class AVChatController { ...@@ -415,37 +458,49 @@ public class AVChatController {
((Activity) context).finish(); ((Activity) context).finish();
} }
// 显示退出toast /** 显示退出toast*/
public void showQuitToast(int code) { public void showQuitToast(int code) {
switch (code) { switch (code) {
case AVChatExitCode.NET_CHANGE: // 网络切换 // 网络切换
case AVChatExitCode.NET_ERROR: // 网络异常 case AVChatExitCode.NET_CHANGE:
case AVChatExitCode.CONFIG_ERROR: // 服务器返回数据错误 // 网络异常
case AVChatExitCode.NET_ERROR:
// 服务器返回数据错误
case AVChatExitCode.CONFIG_ERROR:
ToastUtil.toastShort(context, R.string.im_avchat_net_error_then_quit); ToastUtil.toastShort(context, R.string.im_avchat_net_error_then_quit);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,
"网络异常,通话结束 网络切换4 网络异常8 服务器返回数据错误10 code:" + code);
break; break;
case AVChatExitCode.REJECT: case AVChatExitCode.REJECT:
ToastUtil.toastShort(context, R.string.im_avchat_call_reject); ToastUtil.toastShort(context, R.string.im_avchat_call_reject);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "被对方拒绝");
break; break;
case AVChatExitCode.PEER_HANGUP: case AVChatExitCode.PEER_HANGUP:
case AVChatExitCode.HANGUP: case AVChatExitCode.HANGUP:
if (isCallEstablish.get()) { if (isCallEstablish.get()) {
ToastUtil.toastShort(context, R.string.im_avchat_call_finish); ToastUtil.toastShort(context, R.string.im_avchat_call_finish);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "通话结束");
} }
break; break;
case AVChatExitCode.PEER_BUSY: case AVChatExitCode.PEER_BUSY:
ToastUtil.toastShort(context, R.string.im_avchat_peer_busy); ToastUtil.toastShort(context, R.string.im_avchat_peer_busy);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "对方正在通话中,请稍后再拨。");
break; break;
case AVChatExitCode.PROTOCOL_INCOMPATIBLE_PEER_LOWER: case AVChatExitCode.PROTOCOL_INCOMPATIBLE_PEER_LOWER:
ToastUtil.toastShort(context, R.string.im_avchat_peer_protocol_low_version); ToastUtil.toastShort(context, R.string.im_avchat_peer_protocol_low_version);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "对方版本过低,请提示对方升");
break; break;
case AVChatExitCode.PROTOCOL_INCOMPATIBLE_SELF_LOWER: case AVChatExitCode.PROTOCOL_INCOMPATIBLE_SELF_LOWER:
ToastUtil.toastShort(context, R.string.im_avchat_local_protocol_low_version); ToastUtil.toastShort(context, R.string.im_avchat_local_protocol_low_version);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "版本过低,请升级后使用");
break; break;
case AVChatExitCode.INVALIDE_CHANNELID: case AVChatExitCode.INVALIDE_CHANNELID:
ToastUtil.toastShort(context, R.string.im_avchat_invalid_channel_id); ToastUtil.toastShort(context, R.string.im_avchat_invalid_channel_id);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "对方已挂断");
break; break;
case AVChatExitCode.LOCAL_CALL_BUSY: case AVChatExitCode.LOCAL_CALL_BUSY:
ToastUtil.toastShort(context, R.string.im_avchat_local_call_busy); ToastUtil.toastShort(context, R.string.im_avchat_local_call_busy);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "本地通话中,无法进行通话。");
break; break;
default: default:
break; break;
......
...@@ -35,6 +35,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatParameters; ...@@ -35,6 +35,8 @@ import com.netease.nimlib.sdk.avchat.model.AVChatParameters;
import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer; import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer;
import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory; import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory;
import com.netease.nrtc.video.render.IVideoRender; import com.netease.nrtc.video.render.IVideoRender;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.avchatkit.AVChatKit; import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.avchatkit.TeamAVChatProfile; import com.yidianling.avchatkit.TeamAVChatProfile;
import com.yidianling.avchatkit.common.activity.AVChatBaseUI; import com.yidianling.avchatkit.common.activity.AVChatBaseUI;
...@@ -436,6 +438,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -436,6 +438,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
public void onSuccess(AVChatData data) { public void onSuccess(AVChatData data) {
chatId = data.getChatId(); chatId = data.getChatId();
LogUtil.i(TAG, "join room success, roomId=" + roomId + ", chatId=" + chatId); LogUtil.i(TAG, "join room success, roomId=" + roomId + ", chatId=" + chatId);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"join room success, roomId=" + roomId + ", chatId=" + chatId);
} }
@Override @Override
...@@ -458,13 +461,17 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -458,13 +461,17 @@ public class TeamAVChatActivity extends AVChatBaseUI {
startLocalPreview(); startLocalPreview();
startTimerForCheckReceivedCall(); startTimerForCheckReceivedCall();
LogUtil.i(TAG, "team avchat running..." + ", roomId=" + roomId); LogUtil.i(TAG, "team avchat running..." + ", roomId=" + roomId);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"onJoinRoomSuccess 进入房间成功");
} }
private void onJoinRoomFailed(int code, Throwable e) { private void onJoinRoomFailed(int code, Throwable e) {
if (code == ResponseCode.RES_ENONEXIST) { if (code == ResponseCode.RES_ENONEXIST) {
showToast(getString(R.string.im_t_avchat_join_fail_not_exist)); showToast(getString(R.string.im_t_avchat_join_fail_not_exist));
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"startRtc 进入房间失败 房间不存在 code:"+code);
} else { } else {
showToast("join room failed, code=" + code + ", e=" + (e == null ? "" : e.getMessage())); showToast("join room failed, code=" + code + ", e=" + (e == null ? "" : e.getMessage()));
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"join room failed, code=" + code + ", e=" + (e == null ? "" : e.getMessage()));
} }
} }
...@@ -483,6 +490,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -483,6 +490,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
updateAudioMuteButtonState(); updateAudioMuteButtonState();
LogUtil.i(TAG, "on user joined, account=" + account); LogUtil.i(TAG, "on user joined, account=" + account);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"on user joined, account=" + account);
} }
public void onAVChatUserLeave(String account) { public void onAVChatUserLeave(String account) {
...@@ -496,6 +504,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -496,6 +504,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
updateAudioMuteButtonState(); updateAudioMuteButtonState();
LogUtil.i(TAG, "on user leave, account=" + account); LogUtil.i(TAG, "on user leave, account=" + account);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"on user leave, account=" + account);
} }
private void startLocalPreview() { private void startLocalPreview() {
......
...@@ -17,6 +17,8 @@ import com.ydl.ydlcommon.ui.LoadingDialogFragment ...@@ -17,6 +17,8 @@ import com.ydl.ydlcommon.ui.LoadingDialogFragment
import com.ydl.ydlcommon.ui.LoadingDialogFragment.Companion.newInstance import com.ydl.ydlcommon.ui.LoadingDialogFragment.Companion.newInstance
import com.ydl.ydlcommon.utils.NetworkParamsUtils import com.ydl.ydlcommon.utils.NetworkParamsUtils
import com.ydl.ydlcommon.utils.UserInfoCache import com.ydl.ydlcommon.utils.UserInfoCache
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.remind.HttpErrorUtils.Companion.handleError import com.ydl.ydlcommon.utils.remind.HttpErrorUtils.Companion.handleError
import com.ydl.ydlcommon.view.dialog.CommonDialog import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
...@@ -194,6 +196,7 @@ object IMChatUtil { ...@@ -194,6 +196,7 @@ object IMChatUtil {
isFromQingShu: Int, isFromQingShu: Int,
context: AppCompatActivity context: AppCompatActivity
) { ) {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "startChatSession 开启聊天会话")
val p2PCustomActionHandlerImpl = P2PCustomActionHandlerImpl(toUid, expertInfo) val p2PCustomActionHandlerImpl = P2PCustomActionHandlerImpl(toUid, expertInfo)
p2PCustomActionHandlerImpl.isFromQingShu = isFromQingShu p2PCustomActionHandlerImpl.isFromQingShu = isFromQingShu
SessionHelper.startP2PSession( SessionHelper.startP2PSession(
...@@ -278,7 +281,7 @@ object IMChatUtil { ...@@ -278,7 +281,7 @@ object IMChatUtil {
} else { } else {
upLoadLog("consult/get-expert", resp.code, resp.msg) upLoadLog("consult/get-expert", resp.code, resp.msg)
if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) { if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) {
ImIn.loginByOneKeyLogin(context,true) ImIn.loginByOneKeyLogin(context, true)
ToastUtil.toastShort(resp.msg) ToastUtil.toastShort(resp.msg)
} else if (resp.code == ImConstants.SILENCED_CODE) { //禁言 } else if (resp.code == ImConstants.SILENCED_CODE) { //禁言
showSilencedDialog(context, resp.data.tips, resp.data.url) showSilencedDialog(context, resp.data.tips, resp.data.url)
...@@ -326,7 +329,7 @@ object IMChatUtil { ...@@ -326,7 +329,7 @@ object IMChatUtil {
} else { } else {
upLoadLog("consult/get-expert", resp.code, resp.msg) upLoadLog("consult/get-expert", resp.code, resp.msg)
if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) { if (resp.code == ImConstants.HTTP_CODE_UNLOGIN) {
ImIn.loginByOneKeyLogin(context,true) ImIn.loginByOneKeyLogin(context, true)
ToastUtil.toastShort(resp.msg) ToastUtil.toastShort(resp.msg)
} else if (resp.code == ImConstants.SILENCED_CODE) { //禁言 } else if (resp.code == ImConstants.SILENCED_CODE) { //禁言
showSilencedDialog(context, resp.data.tips, resp.data.url) showSilencedDialog(context, resp.data.tips, resp.data.url)
...@@ -367,7 +370,9 @@ object IMChatUtil { ...@@ -367,7 +370,9 @@ object IMChatUtil {
tb.setmMinTitleVisiable(View.GONE) tb.setmMinTitleVisiable(View.GONE)
} else { } else {
//对方是用户,自己是助理 //对方是用户,自己是助理
if (actionHandler.userType == USER_TYPE_USER && ModularServiceManager.provide(IUserService::class.java) if (actionHandler.userType == USER_TYPE_USER && ModularServiceManager.provide(
IUserService::class.java
)
.getUserInfo()?.user_type == USER_TYPE_ASSISTANT .getUserInfo()?.user_type == USER_TYPE_ASSISTANT
) { ) {
tb.setTitleTextRightIcon(R.drawable.user_info_icon) { tb.setTitleTextRightIcon(R.drawable.user_info_icon) {
......
...@@ -5,6 +5,8 @@ import android.content.Context; ...@@ -5,6 +5,8 @@ import android.content.Context;
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment; import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.nimbase.api.BaseNimUIKit; import com.yidianling.nimbase.api.BaseNimUIKit;
import com.yidianling.nimbase.api.model.session.SessionCustomization; import com.yidianling.nimbase.api.model.session.SessionCustomization;
import com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity; import com.yidianling.uikit.business.contact.selector.activity.ContactSelectActivity;
...@@ -30,6 +32,7 @@ public class NimUIKit extends BaseNimUIKit { ...@@ -30,6 +32,7 @@ public class NimUIKit extends BaseNimUIKit {
*/ */
public static void startYDLChatting(Context context, String id, SessionTypeEnum sessionType, SessionCustomization public static void startYDLChatting(Context context, String id, SessionTypeEnum sessionType, SessionCustomization
customization, IMMessage anchor, IP2PCustomActionHandler handler) { customization, IMMessage anchor, IP2PCustomActionHandler handler) {
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "startYDLChatting 打开壹点灵定制聊天窗口,开始聊天");
NimUIKitImpl.startChatting(context, id, sessionType, customization, anchor, handler); NimUIKitImpl.startChatting(context, id, sessionType, customization, anchor, handler);
} }
......
...@@ -4,7 +4,6 @@ import android.content.Context; ...@@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -17,6 +16,8 @@ import com.netease.nimlib.sdk.msg.MsgServiceObserve; ...@@ -17,6 +16,8 @@ import com.netease.nimlib.sdk.msg.MsgServiceObserve;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.CustomNotification; import com.netease.nimlib.sdk.msg.model.CustomNotification;
import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.yidianling.common.tools.ToastUtil; import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R; import com.yidianling.im.R;
import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack; import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack;
...@@ -82,9 +83,8 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -82,9 +83,8 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
/** /**
* 切换到客服界面 * 切换到客服界面
*
*/ */
public static void startChangeDoctor(Context context, String contactId, SessionCustomization customization, IMMessage anchor, IP2PCustomActionHandler l){ public static void startChangeDoctor(Context context, String contactId, SessionCustomization customization, IMMessage anchor, IP2PCustomActionHandler l) {
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra(Extras.EXTRA_ACCOUNT, contactId); intent.putExtra(Extras.EXTRA_ACCOUNT, contactId);
intent.putExtra(Extras.EXTRA_CUSTOMIZATION, customization); intent.putExtra(Extras.EXTRA_CUSTOMIZATION, customization);
...@@ -106,7 +106,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -106,7 +106,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
// 如果isChangeDoctor为true表示切换客服 // 如果isChangeDoctor为true表示切换客服
if (isChangeDoctor) { if (isChangeDoctor) {
messageFragment = (YDLMessageFragment) switchContent(switchServiceFragment(intent)); messageFragment = (YDLMessageFragment) switchContent(switchServiceFragment(intent));
isChangeDoctor=false; isChangeDoctor = false;
} }
} }
...@@ -137,7 +137,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -137,7 +137,7 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
isChangeDoctor = true; isChangeDoctor = true;
String serviceUid = String.valueOf(serviceBean.getData().getToUid()); String serviceUid = String.valueOf(serviceBean.getData().getToUid());
tb.setTitle(serviceBean.getData().getName()); tb.setTitle(serviceBean.getData().getName());
YDLP2PMessageActivity.startChangeDoctor(YDLP2PMessageActivity.this, serviceUid, SessionHelper.getP2pCustomization(-1), null,new P2PCustomActionHandlerImpl(serviceUid, serviceBean.getData().getName(), serviceUid)); YDLP2PMessageActivity.startChangeDoctor(YDLP2PMessageActivity.this, serviceUid, SessionHelper.getP2pCustomization(-1), null, new P2PCustomActionHandlerImpl(serviceUid, serviceBean.getData().getName(), serviceUid));
} }
} }
}); });
...@@ -145,13 +145,13 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -145,13 +145,13 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (ActionHandlerStorage.getL(sessionId) != null) if (ActionHandlerStorage.getL(sessionId) != null) {
ActionHandlerStorage.getL(sessionId).clear(sessionId); ActionHandlerStorage.getL(sessionId).clear(sessionId);
}
registerObservers(false); registerObservers(false);
super.onDestroy(); super.onDestroy();
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN,"退出聊天页面");
} }
@Override @Override
......
...@@ -49,6 +49,8 @@ import com.ydl.ydlcommon.utils.LogUtil; ...@@ -49,6 +49,8 @@ import com.ydl.ydlcommon.utils.LogUtil;
import com.ydl.ydlcommon.utils.SharedPreferencesEditor; import com.ydl.ydlcommon.utils.SharedPreferencesEditor;
import com.ydl.ydlcommon.utils.YdlBuryPointUtil; import com.ydl.ydlcommon.utils.YdlBuryPointUtil;
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils; import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.ydl.ydlcommon.utils.log.LogHelper; import com.ydl.ydlcommon.utils.log.LogHelper;
import com.ydl.ydlcommon.view.CircleImageView; import com.ydl.ydlcommon.view.CircleImageView;
import com.ydl.ydlcommon.view.dialog.CommonDialog; import com.ydl.ydlcommon.view.dialog.CommonDialog;
...@@ -754,15 +756,21 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy { ...@@ -754,15 +756,21 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
} }
// 帮助人数 // 帮助人数
help_num = String.valueOf(ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoOrderNum); help_num = String.valueOf(ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoOrderNum);
if (TextUtils.isEmpty(help_num)) help_num = "0"; if (TextUtils.isEmpty(help_num)) {
help_num = "0";
}
help_num_tv.setText(help_num); help_num_tv.setText(help_num);
// 服务时长 // 服务时长
server_num = String.valueOf((int) Math.ceil((double) ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoHelpLong / 60.0)); server_num = String.valueOf((int) Math.ceil((double) ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoHelpLong / 60.0));
if (TextUtils.isEmpty(server_num)) server_num = "0"; if (TextUtils.isEmpty(server_num)) {
server_num = "0";
}
server_num_tv.setText(server_num); server_num_tv.setText(server_num);
// 好评率 // 好评率
good_num = ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoFeedbackRateForShow; good_num = ActionHandlerStorage.getL(sessionId).getInfo().doctorBriefInfoFeedbackRateForShow;
if (TextUtils.isEmpty(good_num)) good_num = "0.0"; if (TextUtils.isEmpty(good_num)) {
good_num = "0.0";
}
good_num_tv.setText(good_num); good_num_tv.setText(good_num);
try { try {
...@@ -1176,13 +1184,14 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy { ...@@ -1176,13 +1184,14 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
} }
}); });
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendMessage 该消息发送成功 sessionId:" + sessionId);
} else { } else {
// 替换成tip // 替换成tip
message = MessageBuilder.createTipMessage(message.getSessionId(), message.getSessionType()); message = MessageBuilder.createTipMessage(message.getSessionId(), message.getSessionType());
message.setContent("该消息无法发送"); message.setContent("该消息无法发送");
message.setStatus(MsgStatusEnum.success); message.setStatus(MsgStatusEnum.success);
NIMClient.getService(MsgService.class).saveMessageToLocal(message, false); NIMClient.getService(MsgService.class).saveMessageToLocal(message, false);
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendMessage 该消息无法发送 sessionId:" + sessionId);
} }
messageListPanel.onMsgSend(message); messageListPanel.onMsgSend(message);
...@@ -1210,9 +1219,12 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy { ...@@ -1210,9 +1219,12 @@ public class YDLMessageFragment extends TFragment implements ModuleProxy {
LogHelper.Companion.getInstance().writeLogSync("发送消息失败:已被对方拉黑"); LogHelper.Companion.getInstance().writeLogSync("发送消息失败:已被对方拉黑");
ToastUtil.toastLong(getActivity(), "您已被对方拉黑!"); ToastUtil.toastLong(getActivity(), "您已被对方拉黑!");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendFailWithBlackList 发送消息失败:已被对方拉黑 sessionId:" + sessionId);
} else if (code == 404) { } else if (code == 404) {
LogHelper.Companion.getInstance().writeLogSync("发送消息失败:对象不见了"); LogHelper.Companion.getInstance().writeLogSync("发送消息失败:对象不见了");
ToastUtil.toastLong(getActivity(), "对象不见了!"); ToastUtil.toastLong(getActivity(), "对象不见了!");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.YUNXIN, "sendFailWithBlackList 发送消息失败:对象不见了 404 sessionId:" + sessionId);
} else { } else {
//上传至后台 //上传至后台
if (!TextUtils.isEmpty(sessionId) && ActionHandlerStorage.getL(sessionId) != null) { if (!TextUtils.isEmpty(sessionId) && ActionHandlerStorage.getL(sessionId) != null) {
......
...@@ -6,6 +6,8 @@ import com.tencent.bugly.crashreport.CrashReport ...@@ -6,6 +6,8 @@ import com.tencent.bugly.crashreport.CrashReport
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.utils.ActivityManager import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.BuryPointUtils import com.ydl.ydlcommon.utils.BuryPointUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.im.api.bean.IMLoginInfo import com.yidianling.im.api.bean.IMLoginInfo
import com.yidianling.im.api.bean.IMRequestCallback import com.yidianling.im.api.bean.IMRequestCallback
...@@ -57,16 +59,22 @@ object LoginUtils { ...@@ -57,16 +59,22 @@ object LoginUtils {
val info = IMLoginInfo(userInfo?.uid ?: "", userInfo?.hxpwd ?: "") val info = IMLoginInfo(userInfo?.uid ?: "", userInfo?.hxpwd ?: "")
val callback = object : IMRequestCallback<IMLoginInfo> { val callback = object : IMRequestCallback<IMLoginInfo> {
override fun onSuccess(t: IMLoginInfo?) { override fun onSuccess(t: IMLoginInfo?) {
LogUtil.e("IM登录成功:"+"info.account:"+info.account+"info.passWord"+info.passWord) LogUtil.e("IM登录成功:" + "info.account:" + info.account + "info.passWord" + info.passWord)
UserIn.imSetAccount(userInfo?.uid ?: "") UserIn.imSetAccount(userInfo?.uid ?: "")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "IM登录成功")
} }
override fun onFailed(i: Int) { override fun onFailed(i: Int) {
LogUtil.e("IM登录失败:$i"+"info.account:"+info.account+"info.passWord"+info.passWord) LogUtil.e("IM登录失败:$i" + "info.account:" + info.account + "info.passWord" + info.passWord)
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "IM登录失败")
} }
override fun onException(throwable: Throwable?) { override fun onException(throwable: Throwable?) {
LogUtil.e("IM登录onException:${throwable?.message}") LogUtil.e("IM登录onException:${throwable?.message}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "IM登录onException:${throwable?.message}")
} }
} }
...@@ -90,6 +98,7 @@ object LoginUtils { ...@@ -90,6 +98,7 @@ object LoginUtils {
@JvmStatic @JvmStatic
fun logoutClearLocal() { fun logoutClearLocal() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "退出登录")
UserIn.imLogout() UserIn.imLogout()
UserIn.closePlayer() UserIn.closePlayer()
UserIn.clearImData() UserIn.clearImData()
...@@ -105,7 +114,7 @@ object LoginUtils { ...@@ -105,7 +114,7 @@ object LoginUtils {
ActivityManager.finishAll() ActivityManager.finishAll()
if (StatusUtils.isFirstLogin && StatusUtils.isFirstStartApp) { if (StatusUtils.isFirstLogin && StatusUtils.isFirstStartApp) {
activity.startActivity(Intent(activity, CollectSexAndBirthActivity::class.java)) activity.startActivity(Intent(activity, CollectSexAndBirthActivity::class.java))
}else { } else {
UserIn.mainIntent(activity) UserIn.mainIntent(activity)
} }
} else {//需要判断stack中是否有MainActivity } else {//需要判断stack中是否有MainActivity
......
...@@ -14,6 +14,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut ...@@ -14,6 +14,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.ActivityManager import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.UserInfoCache import com.ydl.ydlcommon.utils.UserInfoCache
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.im.api.bean.IMLoginInfo import com.yidianling.im.api.bean.IMLoginInfo
import com.yidianling.im.api.bean.IMRequestCallback import com.yidianling.im.api.bean.IMRequestCallback
...@@ -136,7 +138,10 @@ class SmsLoginActivity : BaseActivity() { ...@@ -136,7 +138,10 @@ class SmsLoginActivity : BaseActivity() {
return return
} }
ActionCountUtils.count(UserBIConstants.POSITION_LOGIN_CLICK, UserBIConstants.ACTION_TYPE_CODE_LOGIN) ActionCountUtils.count(
UserBIConstants.POSITION_LOGIN_CLICK,
UserBIConstants.ACTION_TYPE_CODE_LOGIN
)
Log.e("短信验证码:", code + " - " + phoneNum + " - " + et_code.text.toString()); Log.e("短信验证码:", code + " - " + phoneNum + " - " + et_code.text.toString());
loginSub = userHttp.login(LoginParam(code, phoneNum, null, 2, et_code.text.toString())) loginSub = userHttp.login(LoginParam(code, phoneNum, null, 2, et_code.text.toString()))
...@@ -152,8 +157,12 @@ class SmsLoginActivity : BaseActivity() { ...@@ -152,8 +157,12 @@ class SmsLoginActivity : BaseActivity() {
if (it.firstLogin == 1) { if (it.firstLogin == 1) {
StatusUtils.isFirstLogin = true StatusUtils.isFirstLogin = true
baiduActionBury() baiduActionBury()
}else { } else {
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,it.uid!!,UserBIConstants.ACTION_TYPE_CODE_LOGIN) ActionCountUtils.countUid(
UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
it.uid!!,
UserBIConstants.ACTION_TYPE_CODE_LOGIN
)
} }
// ActivityManager.finishActivity(LoginActivity::class.java) // ActivityManager.finishActivity(LoginActivity::class.java)
// if (ActivityManager.getActivitySize() <= 1) { // if (ActivityManager.getActivitySize() <= 1) {
...@@ -161,10 +170,15 @@ class SmsLoginActivity : BaseActivity() { ...@@ -161,10 +170,15 @@ class SmsLoginActivity : BaseActivity() {
// } // }
// finish() // finish()
LoginUtils.loginSuccessOperate(this) LoginUtils.loginSuccessOperate(this)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "短信验证码 成功")
}, object : ThrowableConsumer() { }, object : ThrowableConsumer() {
override fun accept(msg: String) { override fun accept(msg: String) {
dismissProgressDialog() dismissProgressDialog()
YdlCommonOut.showToast(msg) YdlCommonOut.showToast(msg)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "短信验证码 失败 msg:$msg ")
} }
}) })
} }
...@@ -224,9 +238,11 @@ class SmsLoginActivity : BaseActivity() { ...@@ -224,9 +238,11 @@ class SmsLoginActivity : BaseActivity() {
try { try {
if (userInfo != null) { if (userInfo != null) {
UserIn.imSetAccount(userInfo.uid.toString()) UserIn.imSetAccount(userInfo.uid.toString())
UserInfoCache.getInstance().saveYDLUser(userInfo.uid.toString(), UserInfoCache.getInstance().saveYDLUser(
userInfo.uid.toString(),
userInfo.nick_name, userInfo.nick_name,
userInfo.head) userInfo.head
)
} }
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
......
...@@ -7,7 +7,6 @@ import android.content.Context ...@@ -7,7 +7,6 @@ import android.content.Context
import android.content.pm.ActivityInfo import android.content.pm.ActivityInfo
import android.graphics.Color import android.graphics.Color
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import android.util.TypedValue import android.util.TypedValue
import android.view.Gravity import android.view.Gravity
import android.view.View import android.view.View
...@@ -17,17 +16,19 @@ import android.widget.TextView ...@@ -17,17 +16,19 @@ import android.widget.TextView
import com.fm.openinstall.OpenInstall import com.fm.openinstall.OpenInstall
import com.fm.openinstall.listener.AppInstallAdapter import com.fm.openinstall.listener.AppInstallAdapter
import com.fm.openinstall.model.AppData import com.fm.openinstall.model.AppData
import com.fm.openinstall.model.Error
import com.meituan.android.walle.WalleChannelReader import com.meituan.android.walle.WalleChannelReader
import com.mobile.auth.gatewayauth.* import com.mobile.auth.gatewayauth.*
import com.mobile.auth.gatewayauth.model.TokenRet import com.mobile.auth.gatewayauth.model.TokenRet
import com.tbruyelle.rxpermissions2.RxPermissions import com.tbruyelle.rxpermissions2.RxPermissions
import com.ydl.webview.NewH5Activity
import com.ydl.ydlcommon.base.BaseActivity import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.base.BaseApp import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.utils.JPushUtils import com.ydl.ydlcommon.utils.JPushUtils
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.RxAppTool import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool import com.yidianling.common.tools.RxDeviceTool
...@@ -430,6 +431,8 @@ object OneKeyLoginHelp { ...@@ -430,6 +431,8 @@ object OneKeyLoginHelp {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
if (it.code == 200) { if (it.code == 200) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "一键登录成功")
ToastUtil.toastShort("登录成功") ToastUtil.toastShort("登录成功")
saveUserData(it.data) saveUserData(it.data)
if (it.data.firstLogin == 1) {//第一次登录:是注册 if (it.data.firstLogin == 1) {//第一次登录:是注册
...@@ -463,10 +466,18 @@ object OneKeyLoginHelp { ...@@ -463,10 +466,18 @@ object OneKeyLoginHelp {
LoginUtils.loginSuccessOperate(mActivity) LoginUtils.loginSuccessOperate(mActivity)
} }
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.LOGIN,
"一键登录失败 msg:${it.msg}"
)
ToastUtil.toastShort(it.msg) ToastUtil.toastShort(it.msg)
mPhoneNumberAuthHelper?.hideLoginLoading() mPhoneNumberAuthHelper?.hideLoginLoading()
} }
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.LOGIN,
"一键登录Error msg:${it.message}"
)
ToastUtil.toastShort(it.message) ToastUtil.toastShort(it.message)
mPhoneNumberAuthHelper?.hideLoginLoading() mPhoneNumberAuthHelper?.hideLoginLoading()
}) })
...@@ -580,6 +591,7 @@ object OneKeyLoginHelp { ...@@ -580,6 +591,7 @@ object OneKeyLoginHelp {
* */ * */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
fun startLogin(context: Activity, isOpenDialog: Boolean) { fun startLogin(context: Activity, isOpenDialog: Boolean) {
try {
RxPermissions(context) RxPermissions(context)
.request(Manifest.permission.READ_PHONE_STATE) .request(Manifest.permission.READ_PHONE_STATE)
.subscribe { hasPermission: Boolean? -> .subscribe { hasPermission: Boolean? ->
...@@ -598,5 +610,10 @@ object OneKeyLoginHelp { ...@@ -598,5 +610,10 @@ object OneKeyLoginHelp {
} }
} }
} }
} catch (e: Exception) {
RegisterAndLoginActivity.start(context)
e.printStackTrace()
}
} }
} }
...@@ -612,6 +612,7 @@ class RegisterAndLoginActivity : BaseMvpActivity<ILoginContract.View, ILoginCont ...@@ -612,6 +612,7 @@ class RegisterAndLoginActivity : BaseMvpActivity<ILoginContract.View, ILoginCont
runOnUiThread { runOnUiThread {
showLoading(false) showLoading(false)
} }
if (chcekPhoneResponeBean != null && chcekPhoneResponeBean?.hasPwd == 1) {//用户码有设置密码:跳转到密登录 if (chcekPhoneResponeBean != null && chcekPhoneResponeBean?.hasPwd == 1) {//用户码有设置密码:跳转到密登录
InputPassWordActivity.start( InputPassWordActivity.start(
this, this,
......
...@@ -7,6 +7,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut ...@@ -7,6 +7,8 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.StringUtils import com.ydl.ydlcommon.utils.StringUtils
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.user.LoginUtils import com.yidianling.user.LoginUtils
...@@ -28,7 +30,9 @@ import java.math.BigDecimal ...@@ -28,7 +30,9 @@ import java.math.BigDecimal
* @Company 壹点灵 * @Company 壹点灵
* @date 2018/12/2 * @date 2018/12/2
*/ */
class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, IInputPassWordContract.Model>(), IInputPassWordContract.Presenter { class InputPassWordPresenterImpl :
BasePresenter<IInputPassWordContract.View, IInputPassWordContract.Model>(),
IInputPassWordContract.Presenter {
override fun createModel(): IInputPassWordContract.Model { override fun createModel(): IInputPassWordContract.Model {
return InputPassWordModelImpl() return InputPassWordModelImpl()
...@@ -37,11 +41,20 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II ...@@ -37,11 +41,20 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
/** /**
* 重新设置密码 * 重新设置密码
*/ */
override fun resetPwd(newPassword: String, phone: String, msgCode: String, phoneCountryCode: String) { override fun resetPwd(
newPassword: String,
phone: String,
msgCode: String,
phoneCountryCode: String
) {
ActionCountUtils.count(UserBIConstants.POSITION_LOGIN_CLICK, UserBIConstants.ACTION_TYPE_RESET_PWD) ActionCountUtils.count(
UserBIConstants.POSITION_LOGIN_CLICK,
UserBIConstants.ACTION_TYPE_RESET_PWD
)
var param = PhoneResetPwdParam(StringUtils.md5(newPassword), phoneCountryCode, msgCode, phone) var param =
PhoneResetPwdParam(StringUtils.md5(newPassword), phoneCountryCode, msgCode, phone)
mModel.resetPwd(param) mModel.resetPwd(param)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -56,7 +69,11 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II ...@@ -56,7 +69,11 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
} else { } else {
ToastUtil.toastShort("修改密码成功") ToastUtil.toastShort("修改密码成功")
saveUserData(it.data) saveUserData(it.data)
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,it.data.uid!!,UserBIConstants.ACTION_TYPE_RESET_PWD) ActionCountUtils.countUid(
UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
it.data.uid!!,
UserBIConstants.ACTION_TYPE_RESET_PWD
)
if (it.data.firstLogin == 1) {//第一次登录:是注册 if (it.data.firstLogin == 1) {//第一次登录:是注册
StatusUtils.isFirstLogin = true StatusUtils.isFirstLogin = true
// 重设密码登录已经不可能是首次登录,所以不进行百度埋点 // 重设密码登录已经不可能是首次登录,所以不进行百度埋点
...@@ -76,8 +93,15 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II ...@@ -76,8 +93,15 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
* 手机号密码登录 * 手机号密码登录
*/ */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
override fun userLoginByPassword(inputPassword: String, phone: String, phoneCountryCode: String) { override fun userLoginByPassword(
ActionCountUtils.count( UserBIConstants.POSITION_LOGIN_CLICK,UserBIConstants.ACTION_TYPE_PWD_LOGIN) inputPassword: String,
phone: String,
phoneCountryCode: String
) {
ActionCountUtils.count(
UserBIConstants.POSITION_LOGIN_CLICK,
UserBIConstants.ACTION_TYPE_PWD_LOGIN
)
var param = PhoneLoginPwdParam(StringUtils.md5(inputPassword), phoneCountryCode, phone) var param = PhoneLoginPwdParam(StringUtils.md5(inputPassword), phoneCountryCode, phone)
mModel.userLoginByPassword(param) mModel.userLoginByPassword(param)
...@@ -87,6 +111,8 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II ...@@ -87,6 +111,8 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
.doAfterTerminate { mView.showLoading(false) } .doAfterTerminate { mView.showLoading(false) }
.subscribe({ .subscribe({
if (it?.data == null) { if (it?.data == null) {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "手机号密码 登录失败 msg: ${it.msg}")
ToastUtil.toastShort(it.msg) ToastUtil.toastShort(it.msg)
mView.startAnim() mView.startAnim()
} else { } else {
...@@ -98,13 +124,22 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II ...@@ -98,13 +124,22 @@ class InputPassWordPresenterImpl : BasePresenter<IInputPassWordContract.View, II
StatusUtils.isFirstLogin = true StatusUtils.isFirstLogin = true
mView.baiduActionBury() mView.baiduActionBury()
} else { } else {
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,it.data.uid!!,UserBIConstants.ACTION_TYPE_PWD_LOGIN) ActionCountUtils.countUid(
UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
it.data.uid!!,
UserBIConstants.ACTION_TYPE_PWD_LOGIN
)
} }
mView.closeActivity() mView.closeActivity()
} }
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.LOGIN, "手机号密码 登录成功")
} }
}, { }, {
YdlCommonOut.showToast(it.message!!) YdlCommonOut.showToast(it.message!!)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "手机号密码 Error msg: ${it.message}")
}) })
} }
......
...@@ -9,6 +9,8 @@ import com.ydl.ydlcommon.mvp.base.BasePresenter ...@@ -9,6 +9,8 @@ import com.ydl.ydlcommon.mvp.base.BasePresenter
import com.ydl.ydlcommon.router.YdlCommonOut import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.user.LoginUtils import com.yidianling.user.LoginUtils
...@@ -33,7 +35,8 @@ import java.math.BigDecimal ...@@ -33,7 +35,8 @@ import java.math.BigDecimal
* @Company 壹点灵 * @Company 壹点灵
* @date 2018/11/29 * @date 2018/11/29
*/ */
class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContract.View, ILoginContract.Model>(), ILoginContract.Presenter { class LoginPresenterImpl(view: ILoginContract.View) :
BasePresenter<ILoginContract.View, ILoginContract.Model>(), ILoginContract.Presenter {
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
override fun bindPhone(param: BindPhoneJavaParam) { override fun bindPhone(param: BindPhoneJavaParam) {
mModel.bindPhone(param) mModel.bindPhone(param)
...@@ -60,7 +63,10 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -60,7 +63,10 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
override fun autoLogin(bean: PhoneLoginAutoParam) { override fun autoLogin(bean: PhoneLoginAutoParam) {
ActionCountUtils.count( UserBIConstants.POSITION_LOGIN_CLICK,UserBIConstants.ACTION_TYPE_DIRECT_LOGIN) ActionCountUtils.count(
UserBIConstants.POSITION_LOGIN_CLICK,
UserBIConstants.ACTION_TYPE_DIRECT_LOGIN
)
mModel.autoLogin(bean) mModel.autoLogin(bean)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -73,18 +79,33 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -73,18 +79,33 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
saveUserData(it.data) saveUserData(it.data)
if (it.data.firstLogin == 1) {//第一次登录:是注册 if (it.data.firstLogin == 1) {//第一次登录:是注册
StatusUtils.isFirstLogin = true StatusUtils.isFirstLogin = true
mView.baiduActionBury(it.data.uid, UserBIConstants.POSITION_ALIYUN_REGISTER_CLICK) mView.baiduActionBury(
it.data.uid,
UserBIConstants.POSITION_ALIYUN_REGISTER_CLICK
)
} else { } else {
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,it.data.uid!!,UserBIConstants.ACTION_TYPE_DIRECT_LOGIN) ActionCountUtils.countUid(
UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
it.data.uid!!,
UserBIConstants.ACTION_TYPE_DIRECT_LOGIN
)
} }
mView.autoLoginSuccess() mView.autoLoginSuccess()
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "通过一键认证服务登录成功")
} else { } else {
// ToastUtil.toastShort(it.msg) // ToastUtil.toastShort(it.msg)
mView.aliAuthFailed() mView.aliAuthFailed()
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "通过一键认证服务登陆 失败 msg: ${it.msg}")
} }
}, { }, {
//走验证码、密码登录 //走验证码、密码登录
mView.aliAuthFailed() mView.aliAuthFailed()
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, "通过一键认证服务登陆 Error msg: ${it.message}")
}) })
} }
...@@ -161,7 +182,7 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -161,7 +182,7 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
} }
}, { }, {
mView.showLoading(false) mView.showLoading(false)
if (null != it && !TextUtils.isEmpty(it.message)){ if (null != it && !TextUtils.isEmpty(it.message)) {
YdlCommonOut.showToast(it.message!!) YdlCommonOut.showToast(it.message!!)
} }
}) })
...@@ -173,7 +194,8 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -173,7 +194,8 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
override fun loginByThird(activity: Activity, media: SHARE_MEDIA) { override fun loginByThird(activity: Activity, media: SHARE_MEDIA) {
val sign1 = if (media == SHARE_MEDIA.QQ) UserBIConstants.ACTION_TYPE_QQ_THIRD_LOGIN else UserBIConstants.ACTION_TYPE_WX_THIRD_LOGIN val sign1 =
if (media == SHARE_MEDIA.QQ) UserBIConstants.ACTION_TYPE_QQ_THIRD_LOGIN else UserBIConstants.ACTION_TYPE_WX_THIRD_LOGIN
ActionCountUtils.count(UserBIConstants.POSITION_LOGIN_CLICK, sign1) ActionCountUtils.count(UserBIConstants.POSITION_LOGIN_CLICK, sign1)
UserHttpImpl.getInstance() UserHttpImpl.getInstance()
...@@ -183,7 +205,9 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -183,7 +205,9 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
mView.dismissProgressView() mView.dismissProgressView()
} }
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.flatMap { thirdLoginParam -> UserHttpImpl.getInstance().thirdPartJavaLogin(thirdLoginParam) } .flatMap { thirdLoginParam ->
UserHttpImpl.getInstance().thirdPartJavaLogin(thirdLoginParam)
}
.doOnNext { LoginUtils.saveData(it.data) } .doOnNext { LoginUtils.saveData(it.data) }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ .subscribe({
...@@ -195,7 +219,10 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -195,7 +219,10 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
if (it.data.firstLogin == 1) {//第一次登录:是注册 if (it.data.firstLogin == 1) {//第一次登录:是注册
StatusUtils.isFirstLogin = true StatusUtils.isFirstLogin = true
if (media == SHARE_MEDIA.QQ) { if (media == SHARE_MEDIA.QQ) {
mView.baiduActionBury(it.data.uid,UserBIConstants.POSITION_QQ_REGISTER_CLICK) mView.baiduActionBury(
it.data.uid,
UserBIConstants.POSITION_QQ_REGISTER_CLICK
)
ActionCountUtils.baiduCount( ActionCountUtils.baiduCount(
it.data.uid, it.data.uid,
UserBIConstants.APP_REGISTER_PAGE, UserBIConstants.APP_REGISTER_PAGE,
...@@ -205,8 +232,11 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -205,8 +232,11 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
25, 25,
OneKeyLoginHelp.openInstallKey OneKeyLoginHelp.openInstallKey
) )
}else{ } else {
mView.baiduActionBury(it.data.uid,UserBIConstants.POSITION_WX_REGISTER_CLICK) mView.baiduActionBury(
it.data.uid,
UserBIConstants.POSITION_WX_REGISTER_CLICK
)
ActionCountUtils.baiduCount( ActionCountUtils.baiduCount(
it.data.uid, it.data.uid,
UserBIConstants.APP_REGISTER_PAGE, UserBIConstants.APP_REGISTER_PAGE,
...@@ -219,16 +249,29 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra ...@@ -219,16 +249,29 @@ class LoginPresenterImpl(view: ILoginContract.View) : BasePresenter<ILoginContra
} }
// 用户注册成功后调用 // 用户注册成功后调用
OpenInstall.reportRegister() OpenInstall.reportRegister()
}else{ } else {
ActionCountUtils.countUid(UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK, it.data.uid!!,sign1) ActionCountUtils.countUid(
UserBIConstants.POSITION_LOGIN_SUCCESS_CLICK,
it.data.uid!!,
sign1
)
} }
LoginUtils.onLogin(it.data) LoginUtils.onLogin(it.data)
mView.thirdLoginSuccess(it.data.userInfo!!,if (media == SHARE_MEDIA.QQ) "qq" else "weixin") mView.thirdLoginSuccess(
it.data.userInfo!!,
if (media == SHARE_MEDIA.QQ) "qq" else "weixin"
)
LogHelper.getInstance().writeLogSync(media.getName() + "登录成功") LogHelper.getInstance().writeLogSync(media.getName() + "登录成功")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, media.getName() + "登录成功")
}, { }, {
mView.dismissProgressView() mView.dismissProgressView()
YdlCommonOut.showToast(it.message!!) YdlCommonOut.showToast(it.message!!)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.LOGIN, media.getName() + "登录失败")
}) })
} }
......
...@@ -41,6 +41,7 @@ dependencies { ...@@ -41,6 +41,7 @@ dependencies {
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
api rootProject.ext.dependencies["gson"] api rootProject.ext.dependencies["gson"]
api rootProject.ext.dependencies["aliyun"]
api rootProject.ext.dependencies["rxjava2"] api rootProject.ext.dependencies["rxjava2"]
api(rootProject.ext.dependencies["rxandroid2"]) { api(rootProject.ext.dependencies["rxandroid2"]) {
exclude module: 'rxjava' exclude module: 'rxjava'
......
package com.ydl.ydlnet.builder.api
import com.google.gson.Gson
import com.ydl.ydlnet.YDLHttpUtils.Companion.obtainApi
import com.ydl.ydlnet.builder.bean.ApiErrorActionBean
import com.ydl.ydlnet.builder.bean.BaseAPIResponse
import io.reactivex.Observable
import okhttp3.MediaType
import okhttp3.RequestBody
/**
* Created by Ykai on 2021/3/15.
*/
class ApiUtil{
companion object {
/**
* 行为数据埋点统计
*/
fun actionDataCount(actionDataParams: ApiErrorActionBean): Observable<BaseAPIResponse<String>> {
val body = RequestBody.create(
MediaType.parse("application/json; charset=utf-8"),
Gson().toJson(actionDataParams)
)
return obtainApi(NetApi::class.java).actionDataCount(body)
}
}
}
\ No newline at end of file
package com.ydl.ydlnet.builder.api
import com.ydl.ydlnet.builder.bean.BaseAPIResponse
import io.reactivex.Observable
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.Headers
import retrofit2.http.POST
/**
* Created by Ykai on 2021/3/15.
*/
interface NetApi {
/**
* 行为动作埋点统计
*/
@Headers("Domain-Name:JAVA_BASE_URL")
@POST("data/bigdata/maidian/writeMaiDianData")
fun actionDataCount(@Body body: RequestBody): Observable<BaseAPIResponse<String>>
}
\ No newline at end of file
...@@ -2,7 +2,6 @@ package com.ydl.ydlnet.builder.interceptor.log; ...@@ -2,7 +2,6 @@ package com.ydl.ydlnet.builder.interceptor.log;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.ydl.ydlnet.utils.ApiErrorCountUtils;
import com.ydl.ydlnet.utils.CharacterHandler; import com.ydl.ydlnet.utils.CharacterHandler;
import com.ydl.ydlnet.utils.NetLogUtils; import com.ydl.ydlnet.utils.NetLogUtils;
import com.ydl.ydlnet.utils.UrlEncoderUtils; import com.ydl.ydlnet.utils.UrlEncoderUtils;
...@@ -23,13 +22,14 @@ import okhttp3.Response; ...@@ -23,13 +22,14 @@ import okhttp3.Response;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import okio.Buffer; import okio.Buffer;
import okio.BufferedSource; import okio.BufferedSource;
/** /**
* Created by haorui on 2019-09-01 . * Created by haorui on 2019-09-01 .
* Des: 解析框架中的网络请求和响应结果并打印 * Des: 解析框架中的网络请求和响应结果并打印
*/ */
public class RequestLogInterceptor implements Interceptor { public class RequestLogInterceptor implements Interceptor {
private DefaultFormatPrinter mPrinter = new DefaultFormatPrinter(); private DefaultFormatPrinter mPrinter = new DefaultFormatPrinter();
private boolean mIsDebug ; private boolean mIsDebug;
private RequestHandler mRequestHandler; private RequestHandler mRequestHandler;
public RequestLogInterceptor(boolean isDebug, RequestHandler requestHandler) { public RequestLogInterceptor(boolean isDebug, RequestHandler requestHandler) {
...@@ -48,10 +48,10 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -48,10 +48,10 @@ public class RequestLogInterceptor implements Interceptor {
mPrinter.printFileRequest(request); mPrinter.printFileRequest(request);
} }
if (mRequestHandler != null) if (mRequestHandler != null) {
request = mRequestHandler.onHttpRequestBefore(chain, request); request = mRequestHandler.onHttpRequestBefore(chain, request);
}
long t1 =System.nanoTime() ; long t1 = System.nanoTime();
Response originalResponse; Response originalResponse;
try { try {
originalResponse = chain.proceed(request); originalResponse = chain.proceed(request);
...@@ -59,7 +59,7 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -59,7 +59,7 @@ public class RequestLogInterceptor implements Interceptor {
NetLogUtils.debugInfo("Http Error: " + e); NetLogUtils.debugInfo("Http Error: " + e);
throw e; throw e;
} }
long t2 = System.nanoTime() ; long t2 = System.nanoTime();
ResponseBody responseBody = originalResponse.body(); ResponseBody responseBody = originalResponse.body();
...@@ -67,12 +67,12 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -67,12 +67,12 @@ public class RequestLogInterceptor implements Interceptor {
String bodyString = null; String bodyString = null;
if (responseBody != null && isParseable(responseBody.contentType())) { if (responseBody != null && isParseable(responseBody.contentType())) {
bodyString = printResult(request, originalResponse); bodyString = printResult(request, originalResponse);
if (mRequestHandler != null){ if (mRequestHandler != null) {
mRequestHandler.onHttpResultResponse(bodyString, chain, originalResponse); mRequestHandler.onHttpResultResponse(bodyString, chain, originalResponse);
} }
} }
if(mIsDebug) { if (mIsDebug) {
final List<String> segmentList = request.url().encodedPathSegments(); final List<String> segmentList = request.url().encodedPathSegments();
final String header = originalResponse.headers().toString(); final String header = originalResponse.headers().toString();
final int code = originalResponse.code(); final int code = originalResponse.code();
...@@ -87,21 +87,6 @@ public class RequestLogInterceptor implements Interceptor { ...@@ -87,21 +87,6 @@ public class RequestLogInterceptor implements Interceptor {
mPrinter.printFileResponse(TimeUnit.NANOSECONDS.toMillis(t2 - t1), mPrinter.printFileResponse(TimeUnit.NANOSECONDS.toMillis(t2 - t1),
isSuccessful, code, header, segmentList, message, url); isSuccessful, code, header, segmentList, message, url);
} }
}else {
int code = originalResponse.code();
// 接口返回错误的情况下,埋点告诉服务器原因
if (code!=200){
String params = "";
Request rq = originalResponse.request();
if (rq.method().equals("GET")){
params = rq.url().query();
}else if (rq.method().equals("POST")){
params = parseParams(rq);
}
String message = originalResponse.message();
ApiErrorCountUtils.Companion.baiDuCount("pardId-ydl_user_error_business","error_log",params,message);
}
} }
return originalResponse; return originalResponse;
} }
......
package com.ydl.ydlnet.utils
import android.annotation.SuppressLint
import android.util.Log
import com.ydl.ydlnet.builder.api.ApiUtil
import com.ydl.ydlnet.builder.bean.ApiErrorActionBean
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
/**
* Created by Ykai on 2021/3/15.
*/
class ApiErrorCountUtils {
companion object {
private const val TAG: String = "ActionCountUtils"
/**
* 接口返回错误埋点调用该方法
* @param partId pardId-ydl_user_error_business
* @param position error_log
* @param sign1 访问接口对应的参数
* @param sign2 接口返回的错误信息
*/
fun baiDuCount(
partId: String,
position: String,
sign1: String,
sign2: String
) {
val actionDataParams = ApiErrorActionBean.Builder()
actionDataParams.partId = partId
actionDataParams.position = position
actionDataParams.sign1 = sign1
actionDataParams.sign2 = sign2
//请求
request(actionDataParams.build())
}
/**
* 传入ActionDataParams参数,访问接口
*/
@SuppressLint("CheckResult")
private fun request(actionDataBean: ApiErrorActionBean) {
try {
ApiUtil.actionDataCount(actionDataBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
Log.i(TAG, it.data)
}) {
Log.i(TAG, it.toString())
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
}
\ No newline at end of file
...@@ -14,6 +14,8 @@ import android.widget.LinearLayout ...@@ -14,6 +14,8 @@ import android.widget.LinearLayout
import com.alipay.sdk.app.PayTask import com.alipay.sdk.app.PayTask
import com.tencent.mm.opensdk.modelpay.PayReq import com.tencent.mm.opensdk.modelpay.PayReq
import com.tencent.mm.opensdk.openapi.WXAPIFactory import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.yidianling.common.tools.RxImageTool import com.yidianling.common.tools.RxImageTool
import com.yidianling.ydl_pay.R import com.yidianling.ydl_pay.R
import com.yidianling.ydl_pay.common.bean.* import com.yidianling.ydl_pay.common.bean.*
...@@ -42,6 +44,7 @@ class CommonPayDialog : Dialog { ...@@ -42,6 +44,7 @@ class CommonPayDialog : Dialog {
private lateinit var activity: Activity private lateinit var activity: Activity
private var viewList = ArrayList<LinearLayout>() private var viewList = ArrayList<LinearLayout>()
private var couponListBean: AllCouponListBean? = null private var couponListBean: AllCouponListBean? = null
//选中的优惠券 //选中的优惠券
private var selectedCouponBean: CommonCouponBean? = null private var selectedCouponBean: CommonCouponBean? = null
private var payCouponView: PayCouponView? = null private var payCouponView: PayCouponView? = null
...@@ -49,14 +52,17 @@ class CommonPayDialog : Dialog { ...@@ -49,14 +52,17 @@ class CommonPayDialog : Dialog {
private var listener: OnPayResultListener? = null private var listener: OnPayResultListener? = null
private var payMoney: Float? = null private var payMoney: Float? = null
private var thankPayId: String? = null private var thankPayId: String? = null
//加载中弹窗 //加载中弹窗
private var dialog: AlertDialog? = null private var dialog: AlertDialog? = null
private var dialogContentView: View? = null private var dialogContentView: View? = null
/** /**
* 支付方式 * 支付方式
* 1024.微信支付 1025.支付宝支付 * 1024.微信支付 1025.支付宝支付
*/ */
private var payWay = 0 private var payWay = 0
/** /**
* 支付的业务类型 * 支付的业务类型
* [TYPE_COURSE] 课程支付 * [TYPE_COURSE] 课程支付
...@@ -72,18 +78,22 @@ class CommonPayDialog : Dialog { ...@@ -72,18 +78,22 @@ class CommonPayDialog : Dialog {
* 课程业务 * 课程业务
*/ */
const val TYPE_COURSE = 1 const val TYPE_COURSE = 1
/** /**
* 倾诉 * 倾诉
*/ */
const val TYPE_CONFIDE = 2 const val TYPE_CONFIDE = 2
/** /**
* 测评 * 测评
*/ */
const val TYPE_TEST = 3 const val TYPE_TEST = 3
/** /**
* 咨询 * 咨询
*/ */
const val TYPE_CONSULTANT = 4 const val TYPE_CONSULTANT = 4
/** /**
* 动态打赏 * 动态打赏
*/ */
...@@ -157,11 +167,14 @@ class CommonPayDialog : Dialog { ...@@ -157,11 +167,14 @@ class CommonPayDialog : Dialog {
PAY_WECHAT -> { PAY_WECHAT -> {
getWeiXinPayOrderId( getWeiXinPayOrderId(
thankPayId!!, thankPayId!!,
if (useMoneyType == 2) 1 else 0,bean.merchantType if (useMoneyType == 2) 1 else 0, bean.merchantType
) )
} }
else -> { else -> {
getAliPayOrderId(thankPayId!!, if (useMoneyType == 2) 1 else 0) getAliPayOrderId(
thankPayId!!,
if (useMoneyType == 2) 1 else 0
)
} }
} }
} else { } else {
...@@ -198,6 +211,7 @@ class CommonPayDialog : Dialog { ...@@ -198,6 +211,7 @@ class CommonPayDialog : Dialog {
private fun getOrderInfo() { private fun getOrderInfo() {
if (!NetUtils.isConnected(activity)) { if (!NetUtils.isConnected(activity)) {
ToastHelper.show(activity, activity.getString(R.string.net_error)) ToastHelper.show(activity, activity.getString(R.string.net_error))
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "获取下单信息,无网络")
// progress.visibility = View.GONE // progress.visibility = View.GONE
dismissProgressDialog() dismissProgressDialog()
return return
...@@ -216,12 +230,18 @@ class CommonPayDialog : Dialog { ...@@ -216,12 +230,18 @@ class CommonPayDialog : Dialog {
progress_layout.visibility = View.GONE progress_layout.visibility = View.GONE
view_pager.visibility = View.VISIBLE view_pager.visibility = View.VISIBLE
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "获取下单信息,成功")
updateDataOnView(it.data) updateDataOnView(it.data)
} else { } else {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.PAY, "获取下单信息data=null msg: ${it.msg}")
ToastHelper.show(activity, it.msg) ToastHelper.show(activity, it.msg)
// progress.visibility = View.GONE // progress.visibility = View.GONE
} }
} else { } else {
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.PAY, "获取下单信息code!=200 msg: ${it.msg}")
ToastHelper.show(activity, it.msg) ToastHelper.show(activity, it.msg)
// progress.visibility = View.GONE // progress.visibility = View.GONE
} }
...@@ -229,6 +249,9 @@ class CommonPayDialog : Dialog { ...@@ -229,6 +249,9 @@ class CommonPayDialog : Dialog {
dismissProgressDialog() dismissProgressDialog()
// progress.visibility = View.GONE // progress.visibility = View.GONE
ToastHelper.show(activity, e.message!!) ToastHelper.show(activity, e.message!!)
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.PAY, "获取下单信息error e:${e.message}")
}) })
} }
...@@ -413,6 +436,10 @@ class CommonPayDialog : Dialog { ...@@ -413,6 +436,10 @@ class CommonPayDialog : Dialog {
} }
bean.orderType = payBusinessType.toString() bean.orderType = payBusinessType.toString()
bean.payType = useMoneyType.toString() bean.payType = useMoneyType.toString()
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"创建订单,支付方式payWay:$payWay---payMoney:$payMoney----useMoneyType:$useMoneyType"
)
showProgressDialog() showProgressDialog()
HttpUtils.createOrder(bean) HttpUtils.createOrder(bean)
...@@ -422,6 +449,10 @@ class CommonPayDialog : Dialog { ...@@ -422,6 +449,10 @@ class CommonPayDialog : Dialog {
if (it.code == 200) { if (it.code == 200) {
if (it.data != null) { if (it.data != null) {
if (it.data.payStatus) { if (it.data.payStatus) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"创建订单,支付成功"
)
dismissProgressDialog() dismissProgressDialog()
ToastHelper.show(activity, "支付成功") ToastHelper.show(activity, "支付成功")
if (listener != null) { if (listener != null) {
...@@ -463,6 +494,10 @@ class CommonPayDialog : Dialog { ...@@ -463,6 +494,10 @@ class CommonPayDialog : Dialog {
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private fun getAliPayOrderId(payId: String, isThreePay: Int) { private fun getAliPayOrderId(payId: String, isThreePay: Int) {
if (!NetUtils.isConnected(activity)) { if (!NetUtils.isConnected(activity)) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"支付宝支付:无网络"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, activity.getString(R.string.net_error)) ToastHelper.show(activity, activity.getString(R.string.net_error))
} }
...@@ -474,14 +509,26 @@ class CommonPayDialog : Dialog { ...@@ -474,14 +509,26 @@ class CommonPayDialog : Dialog {
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.subscribe({ .subscribe({
if (it.data != null) { if (it.data != null) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"支付宝支付:无网络"
)
aliPay(it.data.aliSign) aliPay(it.data.aliSign)
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"支付宝支付:data = null msg: ${it.msg} "
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, it.msg) ToastHelper.show(activity, it.msg)
} }
dismissProgressDialog() dismissProgressDialog()
} }
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"支付宝支付:error message: ${it.message} localizedMessage: ${it.localizedMessage}"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, it.localizedMessage) ToastHelper.show(activity, it.localizedMessage)
} }
...@@ -494,6 +541,10 @@ class CommonPayDialog : Dialog { ...@@ -494,6 +541,10 @@ class CommonPayDialog : Dialog {
val result = alipay.payV2(aliSign, true) val result = alipay.payV2(aliSign, true)
val payResult = PayResult(result) val payResult = PayResult(result)
if ("9000" == payResult.resultStatus) { if ("9000" == payResult.resultStatus) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"支付宝支付:支付成功"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, "支付成功") ToastHelper.show(activity, "支付成功")
listener!!.onSuccesed() listener!!.onSuccesed()
...@@ -501,6 +552,10 @@ class CommonPayDialog : Dialog { ...@@ -501,6 +552,10 @@ class CommonPayDialog : Dialog {
} }
dismissProgressDialog() dismissProgressDialog()
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"支付宝支付:resultStatus != 9000 memo${payResult.memo} "
)
dismissProgressDialog() dismissProgressDialog()
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, payResult.memo) ToastHelper.show(activity, payResult.memo)
...@@ -512,27 +567,39 @@ class CommonPayDialog : Dialog { ...@@ -512,27 +567,39 @@ class CommonPayDialog : Dialog {
* 微信支付 * 微信支付
*/ */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private fun getWeiXinPayOrderId(payId: String, isThreePay: Int,merchantType:String) { private fun getWeiXinPayOrderId(payId: String, isThreePay: Int, merchantType: String) {
if (!NetUtils.isConnected(activity)) { if (!NetUtils.isConnected(activity)) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"微信支付,无网络"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, activity.getString(R.string.net_error)) ToastHelper.show(activity, activity.getString(R.string.net_error))
} }
return return
} }
var bean = WxPayParam(payId, isThreePay,merchantType) var bean = WxPayParam(payId, isThreePay, merchantType)
HttpUtils.wxPay(bean) HttpUtils.wxPay(bean)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.subscribe({ .subscribe({
if (it.data != null) { if (it.data != null) {
weixinPay(it.data.option) weixinPay(it.data.option)
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"微信支付data=null ${it.msg}"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, it.msg) ToastHelper.show(activity, it.msg)
} }
dismissProgressDialog() dismissProgressDialog()
} }
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"微信支付,异常:message:${it.message}----localizedMessage:${it.localizedMessage}"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, it.localizedMessage) ToastHelper.show(activity, it.localizedMessage)
} }
...@@ -566,16 +633,28 @@ class CommonPayDialog : Dialog { ...@@ -566,16 +633,28 @@ class CommonPayDialog : Dialog {
.subscribe({ .subscribe({
dismissProgressDialog() dismissProgressDialog()
if (it.data != null && it.code == 0) { if (it.data != null && it.code == 0) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"余额支付:成功"
)
activity.runOnUiThread { activity.runOnUiThread {
listener!!.onSuccesed() listener!!.onSuccesed()
dismiss() dismiss()
} }
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"余额支付:失败 msg:${it.msg}"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, it.msg) ToastHelper.show(activity, it.msg)
} }
} }
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"余额支付:ERROR message:${it.message} localizedMessage: ${it.localizedMessage}"
)
activity.runOnUiThread { activity.runOnUiThread {
ToastHelper.show(activity, it.localizedMessage) ToastHelper.show(activity, it.localizedMessage)
} }
...@@ -587,10 +666,18 @@ class CommonPayDialog : Dialog { ...@@ -587,10 +666,18 @@ class CommonPayDialog : Dialog {
fun onEvent(event: WeiXinPayStatusEvent) { fun onEvent(event: WeiXinPayStatusEvent) {
dismissProgressDialog() dismissProgressDialog()
if (event.success) { if (event.success) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"微信支付成功"
)
ToastHelper.show(activity, "支付成功") ToastHelper.show(activity, "支付成功")
listener!!.onSuccesed() listener!!.onSuccesed()
dismiss() dismiss()
} else { } else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.PAY,
"微信支付:失败 msg:${event.msg}"
)
if (!TextUtils.isEmpty(event.msg)) { if (!TextUtils.isEmpty(event.msg)) {
ToastHelper.show(activity, event.msg!!) ToastHelper.show(activity, event.msg!!)
} }
...@@ -673,6 +760,7 @@ class CommonPayDialog : Dialog { ...@@ -673,6 +760,7 @@ class CommonPayDialog : Dialog {
private lateinit var ffrom: String private lateinit var ffrom: String
internal lateinit var listener: OnPayResultListener internal lateinit var listener: OnPayResultListener
private var isTestEnvironment = true private var isTestEnvironment = true
/** /**
* 支付的业务类型[CommonPayDialog.payBusinessType] * 支付的业务类型[CommonPayDialog.payBusinessType]
*/ */
......
...@@ -18,6 +18,8 @@ import com.ydl.ydlcommon.data.PlatformDataManager ...@@ -18,6 +18,8 @@ import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.ThrowableConsumer import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
...@@ -65,6 +67,7 @@ class PayActivity : BaseActivity() { ...@@ -65,6 +67,7 @@ class PayActivity : BaseActivity() {
*/ */
private const val PARAMS = "params" private const val PARAMS = "params"
private const val PARAMS_RED = "params_redPacket" private const val PARAMS_RED = "params_redPacket"
/** /**
* 支付类型 * 支付类型
* 1.微信支付 2.支付宝支付 * 1.微信支付 2.支付宝支付
...@@ -91,29 +94,41 @@ class PayActivity : BaseActivity() { ...@@ -91,29 +94,41 @@ class PayActivity : BaseActivity() {
//订单信息数据 //订单信息数据
private var payParams: PayParams? = null private var payParams: PayParams? = null
//红包列表数据+支付金额 //红包列表数据+支付金额
private var redPacketPayBean: RedPacketPayBean? = null private var redPacketPayBean: RedPacketPayBean? = null
//入口 //入口
private var inlet = PayParams.INLET_NORMAL private var inlet = PayParams.INLET_NORMAL
//红包列表弹窗 //红包列表弹窗
private var redPacketPopWindow: RedPacketPopWindow? = null private var redPacketPopWindow: RedPacketPopWindow? = null
//加载中弹窗 //加载中弹窗
private var dialog: AlertDialog? = null private var dialog: AlertDialog? = null
private var dialogContentView: View? = null private var dialogContentView: View? = null
//红包id 默认为0 //红包id 默认为0
private var redPacketId: String? = "0" private var redPacketId: String? = "0"
//使用红包金额 //使用红包金额
private var redPacketMoney: Float = 0f private var redPacketMoney: Float = 0f
//使用红包文案 //使用红包文案
private var redPacketMoneyContent: String = "" private var redPacketMoneyContent: String = ""
//账户余额 //账户余额
private var balanceMoney: Float = 0f private var balanceMoney: Float = 0f
//支付金额 //支付金额
private var payMoney: Float = 0F private var payMoney: Float = 0F
//可使用余额 //可使用余额
private var canBalanceMoney = 0F private var canBalanceMoney = 0F
//支付类型 //支付类型
private var payType = PAY_ALI private var payType = PAY_ALI
//测评下单数据bean //测评下单数据bean
private var testAddOrderBean: TestAddOrderBean? = null private var testAddOrderBean: TestAddOrderBean? = null
...@@ -538,6 +553,7 @@ class PayActivity : BaseActivity() { ...@@ -538,6 +553,7 @@ class PayActivity : BaseActivity() {
* 点击支付 * 点击支付
*/ */
private fun onClickPay() { private fun onClickPay() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "点击支付")
when (inlet) { when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
...@@ -603,6 +619,7 @@ class PayActivity : BaseActivity() { ...@@ -603,6 +619,7 @@ class PayActivity : BaseActivity() {
if (null == payParams) { if (null == payParams) {
return return
} }
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "进入充值, 0微信充值,其他支付宝充值:$select")
HttpUtils.recharge(RechargeParam(payParams!!.needPay.toInt().toString())) HttpUtils.recharge(RechargeParam(payParams!!.needPay.toInt().toString()))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -622,6 +639,8 @@ class PayActivity : BaseActivity() { ...@@ -622,6 +639,8 @@ class PayActivity : BaseActivity() {
.doOnSubscribe { showProgressDialog("") } .doOnSubscribe { showProgressDialog("") }
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付成功")
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
ToastUtil.toastShort("支付成功") ToastUtil.toastShort("支付成功")
var intent = Intent() var intent = Intent()
...@@ -633,6 +652,8 @@ class PayActivity : BaseActivity() { ...@@ -633,6 +652,8 @@ class PayActivity : BaseActivity() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastUtil.toastShort(msg) ToastUtil.toastShort(msg)
LogHelper.getInstance().writeLogSync("支付失败$msg") LogHelper.getInstance().writeLogSync("支付失败$msg")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付失败$msg")
} }
}) })
...@@ -644,13 +665,19 @@ class PayActivity : BaseActivity() { ...@@ -644,13 +665,19 @@ class PayActivity : BaseActivity() {
when (inlet) { when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付 正常入口")
balancePayById(payParams!!.payId) balancePayById(payParams!!.payId)
} }
INLET_TEST -> { INLET_TEST -> {
//测评入口 //测评入口
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付 测评入口")
balancePayById(testAddOrderBean!!.payId!!) balancePayById(testAddOrderBean!!.payId!!)
} }
else -> { else -> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付")
balancePayById(payParams!!.payId) balancePayById(payParams!!.payId)
} }
} }
...@@ -673,6 +700,7 @@ class PayActivity : BaseActivity() { ...@@ -673,6 +700,7 @@ class PayActivity : BaseActivity() {
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付:支付成功")
ToastUtil.toastShort("支付成功") ToastUtil.toastShort("支付成功")
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()
...@@ -680,6 +708,8 @@ class PayActivity : BaseActivity() { ...@@ -680,6 +708,8 @@ class PayActivity : BaseActivity() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastUtil.toastShort(msg) ToastUtil.toastShort(msg)
LogHelper.getInstance().writeLogSync("支付失败:$msg") LogHelper.getInstance().writeLogSync("支付失败:$msg")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "余额支付:支付失败:$msg")
} }
}) })
} }
...@@ -689,6 +719,7 @@ class PayActivity : BaseActivity() { ...@@ -689,6 +719,7 @@ class PayActivity : BaseActivity() {
*/ */
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private fun appPay() { private fun appPay() {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "微信支付 0 其他支付宝支付 select:${select}")
Observable.just(select) Observable.just(select)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
...@@ -706,6 +737,7 @@ class PayActivity : BaseActivity() { ...@@ -706,6 +737,7 @@ class PayActivity : BaseActivity() {
.doOnSubscribe { showProgressDialog("") } .doOnSubscribe { showProgressDialog("") }
.doAfterTerminate { dismissProgressDialog() } .doAfterTerminate { dismissProgressDialog() }
.subscribe(Consumer { .subscribe(Consumer {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付成功")
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()
...@@ -713,6 +745,8 @@ class PayActivity : BaseActivity() { ...@@ -713,6 +745,8 @@ class PayActivity : BaseActivity() {
override fun accept(msg: String) { override fun accept(msg: String) {
ToastUtil.toastShort(msg) ToastUtil.toastShort(msg)
LogHelper.getInstance().writeLogSync("支付失败:$msg") LogHelper.getInstance().writeLogSync("支付失败:$msg")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付失败:$msg")
} }
}) })
} }
...@@ -724,18 +758,21 @@ class PayActivity : BaseActivity() { ...@@ -724,18 +758,21 @@ class PayActivity : BaseActivity() {
return when (inlet) { return when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
wxPayById(payParams!!.payId,payParams?.merchantType.toString()) AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "微信支付:正常入口")
wxPayById(payParams!!.payId, payParams?.merchantType.toString())
} }
INLET_TEST -> { INLET_TEST -> {
//测评入口 //测评入口
if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) { if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) {
wxPayById(testAddOrderBean!!.payId!!,payParams?.merchantType.toString()) AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "微信支付:测评入口")
wxPayById(testAddOrderBean!!.payId!!, payParams?.merchantType.toString())
} else { } else {
null null
} }
} }
else -> { else -> {
wxPayById(payParams!!.payId,payParams?.merchantType.toString()) AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "微信支付")
wxPayById(payParams!!.payId, payParams?.merchantType.toString())
} }
} }
} }
...@@ -744,8 +781,8 @@ class PayActivity : BaseActivity() { ...@@ -744,8 +781,8 @@ class PayActivity : BaseActivity() {
* 微信支付 * 微信支付
* @param payId 支付id * @param payId 支付id
*/ */
private fun wxPayById(payId: String,merchantType:String): Observable<PayStatus> { private fun wxPayById(payId: String, merchantType: String): Observable<PayStatus> {
val bean = WxPayParam(payId, 1,merchantType) val bean = WxPayParam(payId, 1, merchantType)
return HttpUtils.wxPay(bean) return HttpUtils.wxPay(bean)
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -760,17 +797,23 @@ class PayActivity : BaseActivity() { ...@@ -760,17 +797,23 @@ class PayActivity : BaseActivity() {
return when (inlet) { return when (inlet) {
INLET_NORMAL -> { INLET_NORMAL -> {
//正常入口 //正常入口
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付:正常入口")
aliPayById(payParams!!.payId) aliPayById(payParams!!.payId)
} }
INLET_TEST -> { INLET_TEST -> {
//测评入口 //测评入口
if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) { if (null != testAddOrderBean && !TextUtils.isEmpty(testAddOrderBean!!.payId!!)) {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付:测评入口")
aliPayById(testAddOrderBean!!.payId!!) aliPayById(testAddOrderBean!!.payId!!)
} else { } else {
null null
} }
} }
else -> { else -> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付")
aliPayById(payParams!!.payId) aliPayById(payParams!!.payId)
} }
} }
...@@ -811,7 +854,8 @@ class PayActivity : BaseActivity() { ...@@ -811,7 +854,8 @@ class PayActivity : BaseActivity() {
.create() .create()
} }
if (dialogContentView == null) { if (dialogContentView == null) {
dialogContentView = LayoutInflater.from(this).inflate(R.layout.pay_fragment_loading_dialog, null) dialogContentView =
LayoutInflater.from(this).inflate(R.layout.pay_fragment_loading_dialog, null)
dialogContentView?.tvMsg?.visibility = View.GONE dialogContentView?.tvMsg?.visibility = View.GONE
} }
dialog?.show() dialog?.show()
......
...@@ -3,14 +3,16 @@ package com.yidianling.ydl_pay.pay ...@@ -3,14 +3,16 @@ package com.yidianling.ydl_pay.pay
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import com.alipay.sdk.app.PayTask import com.alipay.sdk.app.PayTask
import com.yidianling.ydl_pay.pay.bean.PayStatus
import com.tencent.mm.opensdk.constants.Build import com.tencent.mm.opensdk.constants.Build
import com.tencent.mm.opensdk.modelpay.PayReq import com.tencent.mm.opensdk.modelpay.PayReq
import com.tencent.mm.opensdk.openapi.WXAPIFactory import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.yidianling.ydl_pay.pay.bean.WXPayEvent
import com.ydl.ydlcommon.data.http.CustomThrowable import com.ydl.ydlcommon.data.http.CustomThrowable
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.yidianling.ydl_pay.common.bean.CommonWXPayBean import com.yidianling.ydl_pay.common.bean.CommonWXPayBean
import com.yidianling.ydl_pay.common.bean.PayResult import com.yidianling.ydl_pay.common.bean.PayResult
import com.yidianling.ydl_pay.pay.bean.PayStatus
import com.yidianling.ydl_pay.pay.bean.WXPayEvent
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import io.reactivex.Emitter import io.reactivex.Emitter
import io.reactivex.Observable import io.reactivex.Observable
...@@ -59,8 +61,18 @@ object RxPay { ...@@ -59,8 +61,18 @@ object RxPay {
val result = alipay.payV2(aliSign, true) val result = alipay.payV2(aliSign, true)
val payResult = PayResult(result) val payResult = PayResult(result)
when { when {
"9000" == payResult.resultStatus -> it.onNext(PayStatus(true))
else -> it.onError(CustomThrowable(payResult.memo)) "9000" == payResult.resultStatus -> {
it.onNext(PayStatus(true))
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY, "支付宝支付成功")
}
else -> {
it.onError(CustomThrowable(payResult.memo))
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.PAY, "支付宝支付失败 memo:${payResult.memo}")
}
} }
it.onComplete() it.onComplete()
} }
......
...@@ -9,6 +9,8 @@ import android.support.v7.app.AlertDialog ...@@ -9,6 +9,8 @@ import android.support.v7.app.AlertDialog
import android.view.* import android.view.*
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.utils.StringUtils import com.ydl.ydlcommon.utils.StringUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.ydl_pay.R import com.yidianling.ydl_pay.R
...@@ -160,6 +162,7 @@ class PayDialog : Dialog { ...@@ -160,6 +162,7 @@ class PayDialog : Dialog {
if (data?.payId == null) { if (data?.payId == null) {
ToastHelper.show("支付id有误,请返回重试") ToastHelper.show("支付id有误,请返回重试")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付id有误,请返回重试")
return return
} }
...@@ -187,9 +190,12 @@ class PayDialog : Dialog { ...@@ -187,9 +190,12 @@ class PayDialog : Dialog {
this.callBack?.onSuccess() this.callBack?.onSuccess()
} }
LogHelper.getInstance().writeLogSync("支付成功") LogHelper.getInstance().writeLogSync("支付成功")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付成功")
this.callBack?.onSuccess() this.callBack?.onSuccess()
dismiss() dismiss()
}, { }, {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付失败:${it.message}")
ToastHelper.show(it.message ?: "支付失败") ToastHelper.show(it.message ?: "支付失败")
LogHelper.getInstance().writeLogSync("支付失败:${it.message}") LogHelper.getInstance().writeLogSync("支付失败:${it.message}")
}) })
...@@ -200,6 +206,7 @@ class PayDialog : Dialog { ...@@ -200,6 +206,7 @@ class PayDialog : Dialog {
* @param payId 支付id * @param payId 支付id
*/ */
private fun wxPayById(payId: String,merchantType:String): Observable<PayStatus> { private fun wxPayById(payId: String,merchantType:String): Observable<PayStatus> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"微信支付")
val bean = WxPayParam(payId, 1,merchantType) val bean = WxPayParam(payId, 1,merchantType)
return HttpUtils.wxPay(bean) return HttpUtils.wxPay(bean)
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
...@@ -212,6 +219,8 @@ class PayDialog : Dialog { ...@@ -212,6 +219,8 @@ class PayDialog : Dialog {
* @param payId 支付Id * @param payId 支付Id
*/ */
private fun aliPayById(payId: String): Observable<PayStatus> { private fun aliPayById(payId: String): Observable<PayStatus> {
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.PAY,"支付宝支付")
var bean = AliPayParam(payId, 1) var bean = AliPayParam(payId, 1)
return HttpUtils.getAliPayOrderId(bean) return HttpUtils.getAliPayOrderId(bean)
.compose(RxUtils.resultData()) .compose(RxUtils.resultData())
......
...@@ -72,10 +72,11 @@ dependencies { ...@@ -72,10 +72,11 @@ dependencies {
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
//====================YDL Repository==================== //====================YDL Repository====================
// api rootProject.ext.dependencies["ydl-pushagent"] // api rootProject.ext.dependencies["ydl-pushagent"]
// api rootProject.ext.dependencies["ydl-hnet"] // api rootProject.ext.dependencies["ydl-hnet"]
api (rootProject.ext.dependencies["ydl-notracepoint"]){ api(rootProject.ext.dependencies["ydl-notracepoint"]) {
transitive = true transitive = true
exclude group: 'com.google.code.gson', module: 'gson' exclude group: 'com.google.code.gson', module: 'gson'
exclude group: 'com.squareup.okhttp3', module: 'okhttp3' exclude group: 'com.squareup.okhttp3', module: 'okhttp3'
......
...@@ -16,9 +16,13 @@ import com.ydl.ydlcommon.data.http.RxUtils ...@@ -16,9 +16,13 @@ import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.api.ApiRequestUtil import com.ydl.ydlcommon.data.http.api.ApiRequestUtil
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper
import com.ydl.ydlnet.builder.config.OkHttpConfig import com.ydl.ydlnet.builder.config.OkHttpConfig
import com.ydl.ydlnet.builder.factory.ApiFactory import com.ydl.ydlnet.builder.factory.ApiFactory
import com.ydl.ydlnet.builder.interceptor.log.RequestHandler import com.ydl.ydlnet.builder.interceptor.log.RequestHandler
import com.ydl.ydlnet.builder.interceptor.log.RequestLogInterceptor
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.RxAppTool import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool import com.yidianling.common.tools.RxDeviceTool
...@@ -118,6 +122,7 @@ class HttpConfig { ...@@ -118,6 +122,7 @@ class HttpConfig {
var ENCRYPTION_APP_KEY = "" // 接口加密appKey var ENCRYPTION_APP_KEY = "" // 接口加密appKey
var ENCRYPTION_APP_SECRET = "" // 接口加密appSecret var ENCRYPTION_APP_SECRET = "" // 接口加密appSecret
var isEncryption = false var isEncryption = false
var appDebug:Boolean=false
fun getInstance(): HttpConfig { fun getInstance(): HttpConfig {
return Holder.INSTANCE return Holder.INSTANCE
...@@ -127,7 +132,7 @@ class HttpConfig { ...@@ -127,7 +132,7 @@ class HttpConfig {
fun createOkHttp(): OkHttpClient { fun createOkHttp(): OkHttpClient {
val globalConfig = BaseApp.instance.getGlobalConfig() val globalConfig = BaseApp.instance.getGlobalConfig()
val context = BaseApp.getApp() val context = BaseApp.getApp()
val appDebug = globalConfig.appDebug appDebug = globalConfig.appDebug
val appName = globalConfig.appName val appName = globalConfig.appName
//获取证书 //获取证书
...@@ -144,7 +149,8 @@ class HttpConfig { ...@@ -144,7 +149,8 @@ class HttpConfig {
.setInterceptor( .setInterceptor(
commonParams(), commonParams(),
requestHead(appName), requestHead(appName),
addEncryptionHeaderParamsInterceptor() addEncryptionHeaderParamsInterceptor(),
responseErrorInterceptor()
) )
.setRequestHandler(getRequestHandler()) .setRequestHandler(getRequestHandler())
.setReadTimeout(15) .setReadTimeout(15)
...@@ -170,7 +176,7 @@ class HttpConfig { ...@@ -170,7 +176,7 @@ class HttpConfig {
path += it.request().url().encodedPath().substring(5) path += it.request().url().encodedPath().substring(5)
} }
else -> { else -> {
path+it.request().url().encodedPath() path + it.request().url().encodedPath()
} }
} }
val sign = EncryptionParams.getSign(path, timestamp) val sign = EncryptionParams.getSign(path, timestamp)
...@@ -180,12 +186,39 @@ class HttpConfig { ...@@ -180,12 +186,39 @@ class HttpConfig {
.addHeader("timestamp", timestamp) .addHeader("timestamp", timestamp)
.build() .build()
it.proceed(request) it.proceed(request)
}else{ } else {
it.proceed(it.request()) it.proceed(it.request())
} }
} }
} }
/**
* 接口返回错误日志埋点
*/
private fun responseErrorInterceptor(): Interceptor {
return Interceptor {
val request: Request = it.request()
val originalResponse: Response = it.proceed(request)
if (!appDebug){
val code = originalResponse.code()
// 接口返回错误的情况下,埋点告诉服务器原因
if (code != 200) {
var params = ""
if (request.method() == "GET") {
params = request.url().query().toString()
} else if (request.method() == "POST") {
params = RequestLogInterceptor.parseParams(request)
}
val message = originalResponse.message()
val api = request.url().encodedPath()
ActionCountUtils.baiDuCount("ydl_user_error_business","error_log",api,params,message)
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.API, "error_log---api:$api---params:$params ---- message:$message")
}
}
originalResponse
}
}
private fun getRequestHandler(): RequestHandler { private fun getRequestHandler(): RequestHandler {
return object : RequestHandler { return object : RequestHandler {
override fun onHttpResultResponse( override fun onHttpResultResponse(
......
...@@ -134,10 +134,10 @@ class ActionCountUtils { ...@@ -134,10 +134,10 @@ class ActionCountUtils {
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp())) actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
actionDataParams.appId(appId) actionDataParams.appId(appId)
actionDataParams.api(api) actionDataParams.api(api)
actionDataParams.manufacturer(android.os.Build.BRAND.trim().toUpperCase()) actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(android.os.Build.MODEL) actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS) actionDataParams.os(BIConstants.OS)
actionDataParams.osVersion(android.os.Build.VERSION.RELEASE) actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1) actionDataParams.wifi(if (isWifi()) 0 else 1)
var deviceId = "" var deviceId = ""
/* /*
...@@ -243,10 +243,10 @@ class ActionCountUtils { ...@@ -243,10 +243,10 @@ class ActionCountUtils {
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp())) actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
actionDataParams.appId(appId) actionDataParams.appId(appId)
actionDataParams.api(api) actionDataParams.api(api)
actionDataParams.manufacturer(android.os.Build.BRAND.trim().toUpperCase()) actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(android.os.Build.MODEL) actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS) actionDataParams.os(BIConstants.OS)
actionDataParams.osVersion(android.os.Build.VERSION.RELEASE) actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1) actionDataParams.wifi(if (isWifi()) 0 else 1)
actionDataParams.screenWidth(RxDeviceTool.getScreenWidth(RxTool.getContext()!!)) actionDataParams.screenWidth(RxDeviceTool.getScreenWidth(RxTool.getContext()!!))
actionDataParams.screenHeight(RxDeviceTool.getScreenHeight(RxTool.getContext()!!)) actionDataParams.screenHeight(RxDeviceTool.getScreenHeight(RxTool.getContext()!!))
...@@ -287,7 +287,7 @@ class ActionCountUtils { ...@@ -287,7 +287,7 @@ class ActionCountUtils {
baiduActionDataParams.androidId(DeviceTool.getAndroidID())//MD5加密的androidId baiduActionDataParams.androidId(DeviceTool.getAndroidID())//MD5加密的androidId
baiduActionDataParams.ip("") baiduActionDataParams.ip("")
baiduActionDataParams.ipv6("")//给服务端传IPV6地址DeviceTool.getLocalIpV6() baiduActionDataParams.ipv6("")//给服务端传IPV6地址DeviceTool.getLocalIpV6()
baiduActionDataParams.tp(android.os.Build.MODEL) baiduActionDataParams.tp(Build.MODEL)
baiduActionDataParams.network(DeviceTool.getNetworkState(RxTool.getContext())) baiduActionDataParams.network(DeviceTool.getNetworkState(RxTool.getContext()))
baiduActionDataParams.convertParam("") baiduActionDataParams.convertParam("")
baiduActionDataParams.uid(uid) baiduActionDataParams.uid(uid)
...@@ -316,8 +316,52 @@ class ActionCountUtils { ...@@ -316,8 +316,52 @@ class ActionCountUtils {
} }
/** /**
* 接口返回错误埋点调用该方法
* @param partId pardId-ydl_user_error_business
* @param position error_log
* @param sign1 访问接口对应的参数
* @param sign2 接口返回的错误信息
*/
fun baiDuCount(
partId: String,
position: String,
api: String,
sign1: String,
sign2: String
) {
val actionDataParams = ActionDataBean.Builder()
actionDataParams.partId = partId
actionDataParams.position = position
actionDataParams.sign1 = sign1
actionDataParams.sign2 = sign2
actionDataParams.api = api
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
val deviceId = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
val topTaskActivity = ActivityManager.getInstance().getTopTaskActivity()
//获取imei
Utils.getIMEI(topTaskActivity)
} else {
//android Q及以上取oaid
DeviceIDHelper.getInstance().deviceId
}
actionDataParams.deviceId=deviceId
actionDataParams.time(System.currentTimeMillis())
actionDataParams.appId(appId)
actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS)
actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1)
actionDataParams.uid = ModularServiceManager.getPlatformUserService()!!.getUser()?.userId
//请求
request(actionDataParams.build())
}
/**
* 传入ActionDataParams参数,访问接口 * 传入ActionDataParams参数,访问接口
*/ */
@SuppressLint("CheckResult")
fun request(actionDataBean: ActionDataBean) { fun request(actionDataBean: ActionDataBean) {
try { try {
ApiRequestUtil.actionDataCount(actionDataBean) ApiRequestUtil.actionDataCount(actionDataBean)
......
package com.ydl.ydlcommon.utils.log
object AliYunLogConfig {
/**接口*/
const val API = "API"
/**声网*/
const val AGORA = "Agora"
/**登录*/
const val LOGIN = "Login"
/**WebView*/
const val WEB = "Web"
/**支付*/
const val PAY = "Pay"
/**云信*/
const val YUNXIN = "YunXin"
/**RTM*/
const val RTM = "Rtm"
/**网络状态*/
const val NETSTATUS = "NetStatus"
/**其他*/
const val OTHER = "Other"
}
\ No newline at end of file
package com.ydl.ydlcommon.utils.log
import com.aliyun.sls.android.producer.*
import com.ydl.ydlcommon.base.BaseApp.Companion.getApp
import com.ydl.ydlcommon.data.PlatformDataManager.getRam
import com.ydl.ydlcommon.modular.ModularServiceManager.getPlatformUserService
import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool
/**
* @author liupeng
*
* 阿里云埋点,携带基本参数,方便后续排查问题定位
* */
class AliYunRichLogsHelper {
companion object {
var mConfig: LogProducerConfig? = null
var mClient: LogProducerClient? = null
fun getInstance(): AliYunRichLogsHelper {
return Holder.INSTANCE
}
}
constructor() {
val endpoint = "cn-hangzhou.log.aliyuncs.com"
val project = "ydl-app-log"
val logstore = "ydl-app-log"
val accesskeyid = "LTAI5tH6WGqWUqzo4u5GfrCS"
val accesskeysecret = "uzccm79mr9d4rIsABu3xwfbdUdaeWT"
try {
mConfig = LogProducerConfig(endpoint, project, logstore, accesskeyid, accesskeysecret)
mClient = LogProducerClient(mConfig)
} catch (e: LogProducerException) {
e.printStackTrace()
}
}
private object Holder {
val INSTANCE = AliYunRichLogsHelper()
}
/**
*
* @param key AliYunLogConfig 接口、登录、声网、WebView、支付、其他
* @param value 具体的状态值
* */
fun sendRichLog(key: String, value: String) {
val log = Log()
val userInfo = getPlatformUserService()!!.getUser()
log.putContent(key, value)
log.putContent("ffrom", getRam().getChannelName())
log.putContent("isFromApp", "1")
log.putContent("osBuild", RxDeviceTool.getBuildBrandModel())
log.putContent(RxDeviceTool.getSDKVersionName(), RxAppTool.getAppVersionName(getApp()))
log.putContent("version", RxAppTool.getAppVersionName(getApp()))
if (null != userInfo) {
log.putContent("uid", userInfo.userId)
log.putContent("accessToken", userInfo.token)
}
if (mClient != null) {
val res: LogProducerResult = mClient!!.addLog(log)
}
}
/**
*
* @param key AliYunLogConfig 接口、登录、声网、WebView、支付、其他
* @param value 具体的状态值
* */
fun sendLog(key: String, value: String) {
val log = Log()
log.putContent(key, value)
if (mClient != null) {
val res: LogProducerResult = mClient!!.addLog(log)
}
}
}
\ No newline at end of file
...@@ -48,6 +48,8 @@ import com.ydl.ydlcommon.utils.LogUtil; ...@@ -48,6 +48,8 @@ import com.ydl.ydlcommon.utils.LogUtil;
import com.ydl.ydlcommon.utils.NetWorkSpeedUtils; import com.ydl.ydlcommon.utils.NetWorkSpeedUtils;
import com.ydl.ydlcommon.utils.StatusBarUtils; import com.ydl.ydlcommon.utils.StatusBarUtils;
import com.ydl.ydlcommon.utils.URLUtils; import com.ydl.ydlcommon.utils.URLUtils;
import com.ydl.ydlcommon.utils.log.AliYunLogConfig;
import com.ydl.ydlcommon.utils.log.AliYunRichLogsHelper;
import com.ydl.ydlcommon.view.TitleBar; import com.ydl.ydlcommon.view.TitleBar;
import com.ydl.ydlcommon.view.dialog.YDLCommonDialog; import com.ydl.ydlcommon.view.dialog.YDLCommonDialog;
import com.ydl.ydlcommon.view.dialog.YDLShareDialog; import com.ydl.ydlcommon.view.dialog.YDLShareDialog;
...@@ -81,24 +83,21 @@ import static android.view.View.VISIBLE; ...@@ -81,24 +83,21 @@ import static android.view.View.VISIBLE;
/** /**
* 通用h5显示页面 * 通用h5显示页面
* <p>
* 跳转此h5页面,请使用唯一参数 H5ParamsBaseActivity * 跳转此h5页面,请使用唯一参数 H5ParamsBaseActivity
*/ */
@Route(path = "/new_h5/h5") @Route(path = "/new_h5/h5")
public class NewH5Activity extends BaseActivity implements PtrHandler { public class NewH5Activity extends BaseActivity implements PtrHandler {
public static final String PARAMS = "h5Params"; public static final String PARAMS = "h5Params";
/** /*** 路由传递过来的参数*/
* 路由传递过来的参数
*/
public static final String ROUTER_PARAMS = "routerParam"; public static final String ROUTER_PARAMS = "routerParam";
//下单选择时间请求吗 /***下单选择时间请求吗*/
public static final int ORDER_TIME_REQUEST_CODE = 110; public static final int ORDER_TIME_REQUEST_CODE = 110;
//启动类型 /***启动类型 0正常模式 1从下至上打开页面*/
private int startType = 0;//0正常模式 1从下至上打开页面 private int startType = 0;
//右侧按钮文字 /***右侧按钮文字*/
private String rightText = ""; private String rightText = "";
protected TitleBar tb_title; protected TitleBar tb_title;
...@@ -107,10 +106,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -107,10 +106,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
protected ProgressWebView wv_content; protected ProgressWebView wv_content;
protected PtrFrameLayout store_house_ptr_frame; protected PtrFrameLayout store_house_ptr_frame;
protected SafeTipView safeTipView; protected SafeTipView safeTipView;
//接收参数 /***接收参数*/
private H5Params h5Params; private H5Params h5Params;
/***分享到发布需要的url*/
protected String purl;//分享到发布需要的url protected String purl;
protected String shareUrl; protected String shareUrl;
protected String shareTitle; protected String shareTitle;
protected String shareDesc; protected String shareDesc;
...@@ -121,11 +120,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -121,11 +120,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
protected ValueCallback<Uri> uploadMessage; protected ValueCallback<Uri> uploadMessage;
protected ValueCallback<Uri[]> uploadMessageAboveL; protected ValueCallback<Uri[]> uploadMessageAboveL;
private boolean shouldClearHistory = false; private boolean shouldClearHistory = false;
//要分享出去的url /***要分享出去的url*/
private String shareToUrl; private String shareToUrl;
/** /*** 拍照/选择文件请求码*/
* 拍照/选择文件请求码
*/
protected final static int FILE_CHOOSER_RESULT_CODE = 10000; protected final static int FILE_CHOOSER_RESULT_CODE = 10000;
protected IJavascriptHandler jtoJHandle; protected IJavascriptHandler jtoJHandle;
...@@ -133,37 +130,46 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -133,37 +130,46 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
private LinearLayout llWebView; private LinearLayout llWebView;
/***加载url开始的时间*/
private long loadStartTime = 0;//加载url开始的时间 private long loadStartTime = 0;
private long initStartTime = 0;//webview初始化开始的时间 /***webview初始化开始的时间*/
private long initStartTime = 0;
private long initDuration = 0;//webview初始化耗时 /***webview初始化耗时*/
private long loadDuration = 0;//加载url耗时 private long initDuration = 0;
/***加载url耗时*/
private long loadDuration = 0;
private NetWorkSpeedUtils workSpeedUtils; private NetWorkSpeedUtils workSpeedUtils;
private boolean hasLoad = false;//部分机型中webview加载完成回调方法会调用多次,增加本地标识符 /***部分机型中webview加载完成回调方法会调用多次,增加本地标识符*/
//是否跳转到动态 private boolean hasLoad = false;
/***是否跳转到动态*/
private boolean isToTrend = false; private boolean isToTrend = false;
private LogoLoadingView v_loading; private LogoLoadingView v_loading;
/***是否超时*/
private boolean isTimeOut = false; //是否超时 private boolean isTimeOut = false;
private Handler mTimeOutHandler = null; //超时处理handler /***超时处理handler*/
private int timeOutLong = 15000; //超时限定时间 private Handler mTimeOutHandler = null;
private int TIME_OUT_TYPE = 0x1000; //超时消息 /***超时限定时间*/
// 设置微信 H5 支付调用 loadDataWithBaseURL 的标记位,避免循环调用, private int timeOutLong = 15000;
// 再次进入微信 H5 支付流程时记得重置此标记位状态 /***超时消息*/
private int TIME_OUT_TYPE = 0x1000;
/**
* 设置微信 H5 支付调用 loadDataWithBaseURL 的标记位,避免循环调用,
* 再次进入微信 H5 支付流程时记得重置此标记位状态
*/
boolean firstVisitWXH5PayUrl = true; boolean firstVisitWXH5PayUrl = true;
private String WX_H5_PAY_HOST = "http://testnewm.ydl.com"; private String WX_H5_PAY_HOST = "http://testnewm.ydl.com";
/** /*** 当前页面类型*/
* 当前页面类型
*/
private int selfPageType = -1; private int selfPageType = -1;
private int TEST_QUESTIONS_PAGE_TYPE = 1000001; //测评题页面 /***测评题页面*/
private int TEST_QUESTIONS_PAGE_TYPE = 1000001;
private YDLCommonDialog testQuestionsPageReturnDialog = null; private YDLCommonDialog testQuestionsPageReturnDialog = null;
private boolean isTitleBarCover = false; // 标题栏是否被覆盖隐藏 /*** 标题栏是否被覆盖隐藏*/
private static IWebRightClickListener webRightClickListener= null; private boolean isTitleBarCover = false;
private static IWebRightClickListener webRightClickListener = null;
/** /**
* 设置当前h5页面类型 * 设置当前h5页面类型
* *
...@@ -202,7 +208,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -202,7 +208,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
context.startActivity(intent); context.startActivity(intent);
} }
public static void start(Context context, H5Params h5Params1,String rightText,IWebRightClickListener listener) { public static void start(Context context, H5Params h5Params1, String rightText, IWebRightClickListener listener) {
if (null == context) { if (null == context) {
return; return;
} }
...@@ -238,9 +244,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -238,9 +244,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
intent.putExtra(PARAMS, h5Params1); intent.putExtra(PARAMS, h5Params1);
context.startActivity(intent); context.startActivity(intent);
// if (startType == 1) {
// context.overridePendingTransition(R.anim.activity_open_up, 0);
// }
} }
public static void startForResult(Activity context, H5Params h5Params1, int requestCode) { public static void startForResult(Activity context, H5Params h5Params1, int requestCode) {
...@@ -299,9 +302,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -299,9 +302,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
* 15秒后发送一条消息通知展示无网络页面 * 15秒后发送一条消息通知展示无网络页面
*/ */
private void sendNetLossMessage() { private void sendNetLossMessage() {
if (null != mTimeOutHandler) if (null != mTimeOutHandler) {
mTimeOutHandler.sendEmptyMessageDelayed(TIME_OUT_TYPE, timeOutLong); mTimeOutHandler.sendEmptyMessageDelayed(TIME_OUT_TYPE, timeOutLong);
} }
}
/** /**
* 取消预定15秒后发送的消息 * 取消预定15秒后发送的消息
...@@ -372,6 +376,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -372,6 +376,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
rightText = getIntent().getStringExtra("rightText"); rightText = getIntent().getStringExtra("rightText");
if (h5Params == null) { if (h5Params == null) {
ToastUtil.toastShort("参数错误"); ToastUtil.toastShort("参数错误");
AliYunRichLogsHelper.Companion.getInstance().sendRichLog(AliYunLogConfig.WEB, "参数错误 Params == null");
finish(); finish();
return; return;
} }
...@@ -387,7 +392,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -387,7 +392,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
tb_title.setOnRightTextClick((view, isActive) -> { tb_title.setOnRightTextClick((view, isActive) -> {
finish(); finish();
}); });
}else if(!TextUtils.isEmpty(rightText)&&webRightClickListener!=null) { } else if (!TextUtils.isEmpty(rightText) && webRightClickListener != null) {
tb_title.setmRightText(rightText); tb_title.setmRightText(rightText);
tb_title.setOnRightTextClick((view, isActive) -> { tb_title.setOnRightTextClick((view, isActive) -> {
webRightClickListener.onCLick(view); webRightClickListener.onCLick(view);
...@@ -438,7 +443,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -438,7 +443,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if (null != uri && !TextUtils.isEmpty(host) && host.contains("nodeapi.ydl")) { if (null != uri && !TextUtils.isEmpty(host) && host.contains("nodeapi.ydl")) {
//马亮的需求,在nodeapi.ydl.com 地址后面拼上公共参数,用于判断是否为app //马亮的需求,在nodeapi.ydl.com 地址后面拼上公共参数,用于判断是否为app
String uriAppendSuffix = jtoJHandle.getUriAppendSuffix(); String uriAppendSuffix = jtoJHandle.getUriAppendSuffix();
resultUrl = WebUrlParamsUtils.getSuffix(url,uriAppendSuffix); resultUrl = WebUrlParamsUtils.getSuffix(url, uriAppendSuffix);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -479,7 +484,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -479,7 +484,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
hideJavaTitleBar(); hideJavaTitleBar();
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
e.printStackTrace();
} }
} }
} }
...@@ -616,15 +621,18 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -616,15 +621,18 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
tb_title.setImage(getResources().getDrawable(R.drawable.web_common_back)); tb_title.setImage(getResources().getDrawable(R.drawable.web_common_back));
WebSettings setting = wv_content.getSettings(); WebSettings setting = wv_content.getSettings();
setting.setJavaScriptEnabled(true);//支持js //支持js
setting.setDefaultTextEncodingName("GBK");//设置字符编码 setting.setJavaScriptEnabled(true);
//设置字符编码
setting.setDefaultTextEncodingName("GBK");
setting.setDomStorageEnabled(true); setting.setDomStorageEnabled(true);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
setting.setAppCachePath(appCachePath); setting.setAppCachePath(appCachePath);
setting.setAllowFileAccessFromFileURLs(true); setting.setAllowFileAccessFromFileURLs(true);
setting.setAppCacheEnabled(true); setting.setAppCacheEnabled(true);
setting.setAllowFileAccess(true); setting.setAllowFileAccess(true);
setting.setBlockNetworkImage(false); // 解决图片不显示 // 解决图片不显示
setting.setBlockNetworkImage(false);
//设置自动缩放 degmi的测试题不能设置 不然界面展示有问题 //设置自动缩放 degmi的测试题不能设置 不然界面展示有问题
if (h5Params.getUrl().contains("l.yidianling.com") || h5Params.getUrl().contains("l.ydl.com")) { if (h5Params.getUrl().contains("l.yidianling.com") || h5Params.getUrl().contains("l.ydl.com")) {
//l.yidianling.com 这个域名 只有云凤蝶使用 这个平台需要设置自适应 不然显示有问题 //l.yidianling.com 这个域名 只有云凤蝶使用 这个平台需要设置自适应 不然显示有问题
...@@ -641,8 +649,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -641,8 +649,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
WebModularServiceUtils.Companion.startMain(NewH5Activity.this); WebModularServiceUtils.Companion.startMain(NewH5Activity.this);
finish(); finish();
} } else {
else {
if (ActivityManager.Companion.getInstance().getActivitys().size() == 1) { if (ActivityManager.Companion.getInstance().getActivitys().size() == 1) {
WebModularServiceUtils.Companion.startMain(NewH5Activity.this); WebModularServiceUtils.Companion.startMain(NewH5Activity.this);
} }
...@@ -666,8 +673,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -666,8 +673,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if (newProgress == 100) { if (newProgress == 100) {
wv_content.getProgressbar().setVisibility(GONE); wv_content.getProgressbar().setVisibility(GONE);
} else { } else {
if (wv_content.getProgressbar().getVisibility() == GONE) if (wv_content.getProgressbar().getVisibility() == GONE) {
wv_content.getProgressbar().setVisibility(VISIBLE); wv_content.getProgressbar().setVisibility(VISIBLE);
}
wv_content.getProgressbar().setProgress(newProgress); wv_content.getProgressbar().setProgress(newProgress);
} }
super.onProgressChanged(view, newProgress); super.onProgressChanged(view, newProgress);
...@@ -682,6 +690,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -682,6 +690,10 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
safeTipView.updateVisibility(); safeTipView.updateVisibility();
safeTipView.setLocation("orderList"); safeTipView.setLocation("orderList");
} }
if (title.contains("404") || title.contains("500") || title.contains("Error")) {
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.WEB, "页面错误 : url:" + view.getUrl() + "title:" + title);
}
} }
// For Android < 3.0 // For Android < 3.0
...@@ -697,12 +709,14 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -697,12 +709,14 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
} }
//For Android >= 4.1 //For Android >= 4.1
@Override
public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) { public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {
uploadMessage = valueCallback; uploadMessage = valueCallback;
openImageChooserActivity(); openImageChooserActivity();
} }
// For Android >= 5.0 // For Android >= 5.0
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
uploadMessageAboveL = filePathCallback; uploadMessageAboveL = filePathCallback;
openImageChooserActivity(); openImageChooserActivity();
...@@ -721,15 +735,13 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -721,15 +735,13 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
return overridePayUrl; return overridePayUrl;
} }
if (!TextUtils.isEmpty(url)&&url.endsWith(".apk")){ if (!TextUtils.isEmpty(url) && url.endsWith(".apk")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent); startActivity(intent);
} else if (!TextUtils.isEmpty(url) && url.startsWith("http")) { } else if (!TextUtils.isEmpty(url) && url.startsWith("http")) {
loadUrl(setUrlHeightParams(url)); loadUrl(setUrlHeightParams(url));
} else { } else {
if (YDLRouterManager.Companion.router(url)) { if (!YDLRouterManager.Companion.router(url)) {
} else {
loadUrl(setUrlHeightParams(url)); loadUrl(setUrlHeightParams(url));
} }
} }
...@@ -772,6 +784,8 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -772,6 +784,8 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
@Override @Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl); super.onReceivedError(view, errorCode, description, failingUrl);
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.WEB, "onReceivedError---- errorCode: " + errorCode + "----failingUrl:" + failingUrl);
loadFailed = true; loadFailed = true;
tb_title.setTitle("加载中"); tb_title.setTitle("加载中");
if (wv_content != null) { if (wv_content != null) {
...@@ -803,20 +817,16 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -803,20 +817,16 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
return overridePayUrl; return overridePayUrl;
} }
if (!TextUtils.isEmpty(url)&&url.endsWith(".apk")){ if (!TextUtils.isEmpty(url) && url.endsWith(".apk")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent); startActivity(intent);
} else if (!TextUtils.isEmpty(url) && url.startsWith("http")) { } else if (!TextUtils.isEmpty(url) && url.startsWith("http")) {
loadUrl(setUrlHeightParams(url)); loadUrl(setUrlHeightParams(url));
} else { } else {
if (YDLRouterManager.Companion.router(url)) { if (!YDLRouterManager.Companion.router(url)) {
} else {
loadUrl(setUrlHeightParams(url)); loadUrl(setUrlHeightParams(url));
} }
} }
return true; return true;
} }
...@@ -844,8 +854,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -844,8 +854,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
tb_title.setImageListener(v -> { tb_title.setImageListener(v -> {
if (wv_content.canGoBack()) { if (wv_content.canGoBack()) {
wv_content.goBack(); wv_content.goBack();
} } else {
else {
finish(); finish();
} }
}); });
...@@ -859,8 +868,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -859,8 +868,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if (h5Params.getShowUrlTitle()) { if (h5Params.getShowUrlTitle()) {
WebModularServiceUtils.Companion.startMain(NewH5Activity.this); WebModularServiceUtils.Companion.startMain(NewH5Activity.this);
finish(); finish();
} } else {
else {
if (ActivityManager.Companion.getInstance().getActivitys().size() == 1) { if (ActivityManager.Companion.getInstance().getActivitys().size() == 1) {
WebModularServiceUtils.Companion.startMain(NewH5Activity.this); WebModularServiceUtils.Companion.startMain(NewH5Activity.this);
} }
...@@ -887,6 +895,8 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -887,6 +895,8 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
@Override @Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl); super.onReceivedError(view, errorCode, description, failingUrl);
AliYunRichLogsHelper.Companion.getInstance()
.sendRichLog(AliYunLogConfig.WEB, "onReceivedError---- errorCode: " + errorCode + "----failingUrl:" + failingUrl);
tb_title.setTitle("加载中"); tb_title.setTitle("加载中");
loadFailed = true; loadFailed = true;
if (wv_content != null) { if (wv_content != null) {
...@@ -909,8 +919,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -909,8 +919,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
}); });
} }
wv_content.setDownloadListener((url, userAgent, contentDisposition, mimetype, contentLength) -> { wv_content.setDownloadListener((url, userAgent, contentDisposition, mimetype, contentLength) -> {
if (url != null && url.startsWith("http://")) if (url != null && url.startsWith("http://")) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
}); });
initDuration = System.currentTimeMillis() - initStartTime; initDuration = System.currentTimeMillis() - initStartTime;
workSpeedUtils = new NetWorkSpeedUtils(this); workSpeedUtils = new NetWorkSpeedUtils(this);
...@@ -1079,7 +1090,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1079,7 +1090,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
return; return;
} }
String resultUrl = h5Params.getSuffix() ? WebUrlParamsUtils.getSuffix(url,jtoJHandle.getUriAppendSuffix()) : url; String resultUrl = h5Params.getSuffix() ? WebUrlParamsUtils.getSuffix(url, jtoJHandle.getUriAppendSuffix()) : url;
Log.e("AAAA", resultUrl); Log.e("AAAA", resultUrl);
wv_content.loadUrl(resultUrl); wv_content.loadUrl(resultUrl);
pointBI(resultUrl); pointBI(resultUrl);
...@@ -1097,7 +1108,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1097,7 +1108,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
private void initHead() { private void initHead() {
// header // header
final MaterialHeader header = new MaterialHeader(this); final MaterialHeader header = new MaterialHeader(this);
int[] colors = new int[]{getResources().getColor(R.color.platform_main_theme )}; int[] colors = new int[]{getResources().getColor(R.color.platform_main_theme)};
header.setColorSchemeColors(colors); header.setColorSchemeColors(colors);
header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2)); header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
int padding = (int) getResources().getDimension(R.dimen.platform_default_dis_size); int padding = (int) getResources().getDimension(R.dimen.platform_default_dis_size);
...@@ -1155,8 +1166,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1155,8 +1166,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if (h5Params.isSplash()) { if (h5Params.isSplash()) {
WebModularServiceUtils.Companion.startMain(NewH5Activity.this); WebModularServiceUtils.Companion.startMain(NewH5Activity.this);
finish(); finish();
} } else {
else {
if (ActivityManager.Companion.getInstance().getActivitys().size() == 1) { if (ActivityManager.Companion.getInstance().getActivitys().size() == 1) {
WebModularServiceUtils.Companion.startMain(NewH5Activity.this); WebModularServiceUtils.Companion.startMain(NewH5Activity.this);
} }
...@@ -1213,10 +1223,15 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1213,10 +1223,15 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE); startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE);
} }
//最后在OnActivityResult中接受返回的结果 /**
* 最后在OnActivityResult中接受返回的结果
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FILE_CHOOSER_RESULT_CODE) { if (requestCode == FILE_CHOOSER_RESULT_CODE) {
if (null == uploadMessage && null == uploadMessageAboveL) return; if (null == uploadMessage && null == uploadMessageAboveL) {
return;
}
Uri result = data == null || resultCode != RESULT_OK ? null : data.getData(); Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
if (uploadMessageAboveL != null) { if (uploadMessageAboveL != null) {
onActivityResultAboveL(requestCode, resultCode, data); onActivityResultAboveL(requestCode, resultCode, data);
...@@ -1250,8 +1265,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1250,8 +1265,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) { private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) {
if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) {
return; return;
}
Uri[] results = null; Uri[] results = null;
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
if (intent != null) { if (intent != null) {
...@@ -1264,10 +1280,11 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1264,10 +1280,11 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
results[i] = item.getUri(); results[i] = item.getUri();
} }
} }
if (dataString != null) if (dataString != null) {
results = new Uri[]{Uri.parse(dataString)}; results = new Uri[]{Uri.parse(dataString)};
} }
} }
}
uploadMessageAboveL.onReceiveValue(results); uploadMessageAboveL.onReceiveValue(results);
uploadMessageAboveL = null; uploadMessageAboveL = null;
} }
...@@ -1278,8 +1295,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1278,8 +1295,6 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
/** /**
* 判断是否是测评题页面,如果是,则走测评题页面的返回逻辑 * 判断是否是测评题页面,如果是,则走测评题页面的返回逻辑
*/ */
if (keyCode == KeyEvent.KEYCODE_BACK) { if (keyCode == KeyEvent.KEYCODE_BACK) {
/** /**
* 是否是测评题目页面 * 是否是测评题目页面
...@@ -1358,7 +1373,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1358,7 +1373,9 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
} else { } else {
tb_title.setImage_right(getResources().getDrawable(R.drawable.web_common_notice_more_un)); tb_title.setImage_right(getResources().getDrawable(R.drawable.web_common_notice_more_un));
} }
} catch (Exception e) {} } catch (Exception e) {
e.printStackTrace();
}
} }
if (backgroundView.getVisibility() == View.VISIBLE) { if (backgroundView.getVisibility() == View.VISIBLE) {
backgroundView.setVisibility(View.GONE); backgroundView.setVisibility(View.GONE);
...@@ -1387,19 +1404,18 @@ public class NewH5Activity extends BaseActivity implements PtrHandler { ...@@ -1387,19 +1404,18 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
if (params != null && !TextUtils.isEmpty(params.getCourse_id())) { if (params != null && !TextUtils.isEmpty(params.getCourse_id())) {
dialog = YDLShareDialog.Companion.style5(this, shareTitle, shareUrl, shareDesc, cover); dialog = YDLShareDialog.Companion.style5(this, shareTitle, shareUrl, shareDesc, cover);
} else { } else {
if(!H5RouterUtils.INSTANCE.isDependByClz(IDynamicService.class)) { if (!H5RouterUtils.INSTANCE.isDependByClz(IDynamicService.class)) {
//如果未引入动态模块的话,隐藏分享至动态按钮 //如果未引入动态模块的话,隐藏分享至动态按钮
dialog = YDLShareDialog.Companion.style4(this, shareTitle, shareUrl, shareDesc, cover); dialog = YDLShareDialog.Companion.style4(this, shareTitle, shareUrl, shareDesc, cover);
}else { } else {
dialog = YDLShareDialog.Companion.style1(this, shareTitle, shareUrl, shareDesc, cover, minPath, minId); dialog = YDLShareDialog.Companion.style1(this, shareTitle, shareUrl, shareDesc, cover, minPath, minId);
} }
} }
dialog.setCallBack(type -> { dialog.setCallBack(type -> {
if (1 == type) { if (1 == type) {
if (!WebModularServiceUtils.Companion.getUserService().loginByOneKeyLogin(NewH5Activity.this,true)) { if (!WebModularServiceUtils.Companion.getUserService().loginByOneKeyLogin(NewH5Activity.this, true)) {
isToTrend = true; isToTrend = true;
} else { } else {
//分享到心事动态 //分享到心事动态
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment