Преглед на файлове

1.添加在首页自动登录IM功能

王鹏鹏 преди 2 години
родител
ревизия
46d6608454

+ 1 - 0
baselib/build.gradle

@@ -86,6 +86,7 @@ dependencies {
 
     api fileTree(exclude: '*.bak', dir: 'libs')
     api project(path: ':imageselector')
+    api project(path: ':tuichat')
     implementation(rootProject.ext.androidx.kotlin_lib)
     implementation(rootProject.ext.androidx.kotlin_core)
     implementation(rootProject.ext.androidx.appcompat)

+ 5 - 17
healthconsultation/src/main/java/com/yingyang/healthconsultation/activity/HealthConsultationActivity.kt

@@ -5,14 +5,15 @@ import android.annotation.SuppressLint
 import android.content.Context
 import android.os.Bundle
 import android.text.TextUtils
-import android.util.Log
 import android.view.MotionEvent
 import android.view.View
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.hjq.permissions.OnPermissionCallback
 import com.hjq.permissions.XXPermissions
-import com.tencent.bugly.crashreport.CrashReport
-import com.tencent.imsdk.v2.*
+import com.tencent.imsdk.v2.V2TIMConversation
+import com.tencent.imsdk.v2.V2TIMManager
+import com.tencent.imsdk.v2.V2TIMSimpleMsgListener
+import com.tencent.imsdk.v2.V2TIMUserInfo
 import com.tencent.qcloud.tuicore.TUIConstants
 import com.tencent.qcloud.tuicore.TUICore
 import com.tencent.qcloud.tuicore.TUILogin
@@ -45,7 +46,7 @@ class HealthConsultationActivity :
     View.OnTouchListener {
 
     // 添加存储权限的原因是 以防启动页面没有授权存储权限 相机权限,摄像头权限
-    private val cameraPermission = Arrays.asList(
+    private val cameraPermission = listOf(
         Manifest.permission.WRITE_EXTERNAL_STORAGE,
         Manifest.permission.READ_EXTERNAL_STORAGE,
         Manifest.permission.CAMERA,
@@ -270,19 +271,6 @@ class HealthConsultationActivity :
     override fun onDestroy() {
         runOnUiThread {
             V2TIMManager.getInstance().removeSimpleMsgListener(simpleMsgListener)
-            val stastus = V2TIMManager.getInstance().loginStatus
-            if (V2TIMManager.V2TIM_STATUS_LOGINED == stastus) {
-                V2TIMManager.getInstance().logout(object : V2TIMCallback {
-                    override fun onError(p0: Int, p1: String?) {
-                        //用户登录IM失败
-                        CrashReport.postCatchedException(Throwable(User.getName() + "用户退出IM失败,错误码:" + p0 + " ,错误信息:" + p1))
-                    }
-
-                    override fun onSuccess() {
-                        Log.e("wpp", "IM退出成功")
-                    }
-                })
-            }
         }
         super.onDestroy()
     }

+ 35 - 0
home/src/main/java/com/yingyangfly/home/activity/HomeActivity.kt

@@ -7,6 +7,8 @@ import android.view.View
 import androidx.recyclerview.widget.GridLayoutManager
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.bumptech.glide.Glide
+import com.tencent.imsdk.v2.V2TIMCallback
+import com.tencent.imsdk.v2.V2TIMManager
 import com.yingyang.home.R
 import com.yingyang.home.databinding.ActivityHomeBinding
 import com.yingyangfly.baselib.db.VoicePlayerBean
@@ -128,6 +130,11 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>(),
 
     override fun onResume() {
         super.onResume()
+        val stastus = V2TIMManager.getInstance().loginStatus
+        if (V2TIMManager.V2TIM_STATUS_LOGINED != stastus) {
+            //IM未登录
+            getUserSign()
+        }
         //获取app升级信息
         selectNewVersion()
         //获取脑力值和训练时长接口
@@ -145,6 +152,34 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>(),
         }
     }
 
+    /**
+     * 获取腾讯IM密钥
+     */
+    private fun getUserSign() {
+        viewModel.getUserSign(User.getUserId(), fail = {
+        }, success = {
+            if (TextUtils.isEmpty(it).not()) {
+                loginIM(it!!)
+            }
+        })
+    }
+
+    /**
+     * 登录腾讯IM
+     */
+    private fun loginIM(sign: String) {
+        runOnUiThread {
+            V2TIMManager.getInstance().login(User.getUserId(), sign, object : V2TIMCallback {
+                override fun onSuccess() {
+                }
+
+                override fun onError(p0: Int, p1: String?) {
+                    getUserSign()
+                }
+            })
+        }
+    }
+
     /**
      * 获取app升级信息
      */

+ 14 - 0
home/src/main/java/com/yingyangfly/home/activity/HomeViewModel.kt

@@ -118,4 +118,18 @@ class HomeViewModel : BaseViewModel() {
         fail
     )
 
+    /**
+     * 获取腾讯IM密钥
+     */
+    fun getUserSign(
+        id: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: String?) -> Unit)? = null,
+    ) = launchFlow(false) {
+        HOME_API.getUserSign(id)
+    }.runUI(
+        success,
+        fail
+    )
+
 }

+ 6 - 0
home/src/main/java/com/yingyangfly/home/net/HomeApiService.kt

@@ -84,4 +84,10 @@ interface HomeApiService {
     @POST("app/user/info")
     suspend fun getUserInfo(): BaseResp<UserInfoBean>
 
+    /**
+     * 获取腾讯IM密钥
+     */
+    @POST("im/user_sign")
+    suspend fun getUserSign(@Query("userId") userId: String): BaseResp<String>
+
 }