tongmengxiao 1 рік тому
батько
коміт
1151ae937b

+ 21 - 1
app/src/main/java/com/swago/app/SwagoApp.kt

@@ -12,9 +12,11 @@ import com.google.firebase.crashlytics.ktx.crashlytics
 import com.google.firebase.ktx.Firebase
 import com.swago.baseswago.constant.UrlConstant
 import com.swago.baseswago.dialog.ForceOfflineDialog
+import com.swago.baseswago.inter.ApiManager
 import com.swago.baseswago.util.ActivityManagerUtil
 import com.swago.baseswago.util.AppContext
 import com.swago.baseswago.util.LogUtil
+import com.swago.baseswago.util.SwagoInfo
 import com.swago.baseswago.util.UserInfo
 import com.swago.lib_beauty.FuBeautyManager
 import com.swago.lib_beauty.IOperateCallback
@@ -24,6 +26,8 @@ import com.tencent.qcloud.tim.uikit.base.IMEventListener
 import com.tencent.qcloud.tim.uikit.config.TUIKitConfigs
 import com.zy.multistatepage.MultiStateConfig
 import com.zy.multistatepage.MultiStatePage
+import kotlinx.coroutines.runBlocking
+import org.json.JSONObject
 import java.io.File
 
 /**
@@ -45,7 +49,7 @@ class SwagoApp : Application() {
             Firebase.crashlytics.setUserId(it.user_account)
         }
         Firebase.crashlytics.setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)
-        CrashHandler.getInstance().init(this)
+        pushCrash()
         ActivityManagerUtil.get().init(this)
         ARouter.init(this)
         //svga缓存
@@ -88,4 +92,20 @@ class SwagoApp : Application() {
         super.attachBaseContext(base)
         MultiDex.install(this)
     }
+
+    private fun pushCrash() {
+        Thread.setDefaultUncaughtExceptionHandler { t, ex ->
+            runBlocking {
+                val jsonObject = JSONObject()
+                UserInfo.getUserInfo()?.let {
+                    jsonObject.put("id" , it.id)
+                }
+                jsonObject.put("version", SwagoInfo.getVersionCode())
+                jsonObject.put("device" , SwagoInfo.getDeviceInfo())
+                jsonObject.put("message","${ex.message}")
+                jsonObject.put("detail", ex.stackTraceToString())
+                ApiManager.configApi.pushCrash(jsonObject.toString())
+            }
+        }
+    }
 }

+ 6 - 0
baseswago/src/main/java/com/swago/baseswago/inter/ConfigApi.kt

@@ -2,6 +2,8 @@ package com.swago.baseswago.inter
 
 import com.swago.baseswago.model.ConfigModel
 import com.swago.baseswago.model.DomainConfig
+import retrofit2.http.Field
+import retrofit2.http.FormUrlEncoded
 import retrofit2.http.GET
 import retrofit2.http.Headers
 import retrofit2.http.POST
@@ -25,4 +27,8 @@ interface ConfigApi {
     @GET("/domain/domain.json")
     suspend fun getApiDomain(): DomainConfig
 
+    @FormUrlEncoded
+    @POST("android/error/push")
+    suspend fun pushCrash(@Field("message") message:String):Any
+
 }