47 lines
1.7 KiB
Kotlin
47 lines
1.7 KiB
Kotlin
package com.gh.common.util
|
|
|
|
import android.content.Context
|
|
import com.gh.gamecenter.receiver.UmengMessageReceiver
|
|
import com.gh.gamecenter.retrofit.BiResponse
|
|
import com.gh.gamecenter.retrofit.RetrofitManager
|
|
import io.reactivex.schedulers.Schedulers
|
|
import okhttp3.MediaType
|
|
import okhttp3.RequestBody
|
|
import okhttp3.ResponseBody
|
|
|
|
object PushHelper {
|
|
|
|
/**
|
|
* 提交推送点击事件,会尝试从 SP 读取之前失败的一并提交
|
|
*/
|
|
@JvmStatic
|
|
fun postPushClickAction(context: Context, clickEvent: UmengMessageReceiver.ClickEvent? = null) {
|
|
val clickEventList = arrayListOf<UmengMessageReceiver.ClickEvent>()
|
|
|
|
clickEvent?.let { clickEventList.add(it) }
|
|
|
|
val failedClickEventList = SPUtils.getString(UmengMessageReceiver.SP_CLICK_EVENT)
|
|
.toObject<ArrayList<UmengMessageReceiver.ClickEvent>>()
|
|
|
|
failedClickEventList?.let { clickEventList.addAll(it) }
|
|
|
|
// 没有要提交的事件
|
|
if (clickEventList.size == 0) return
|
|
|
|
val body = RequestBody.create(MediaType.parse("application/json"), clickEventList.toJson())
|
|
|
|
RetrofitManager.getInstance(context)
|
|
.api
|
|
.postUmengReceiveInfo(body)
|
|
.subscribeOn(Schedulers.io())
|
|
.subscribe(object : BiResponse<ResponseBody>() {
|
|
override fun onSuccess(data: ResponseBody) {
|
|
SPUtils.setString(UmengMessageReceiver.SP_CLICK_EVENT, "")
|
|
}
|
|
|
|
override fun onFailure(exception: Exception) {
|
|
SPUtils.setString(UmengMessageReceiver.SP_CLICK_EVENT, clickEventList.toJson())
|
|
}
|
|
})
|
|
}
|
|
} |