Commit 8a6e6deb authored by wanglei's avatar wanglei

[AI重构]AI重构FCMManager

parent cbbc7a61
......@@ -5,68 +5,71 @@ import android.util.Log
import com.simplecleaner.app.SpConstObject.fcmToken
import com.simplecleaner.app.business.helper.EventUtils.event
import com.simplecleaner.app.utils.LogEx
import com.google.android.gms.tasks.OnCompleteListener
import com.google.android.gms.tasks.Task
import com.google.firebase.FirebaseApp
import com.google.firebase.messaging.FirebaseMessaging
import org.json.JSONObject
object FCMManager {
/**
* 初始化Firebase并获取Token
*/
fun initFirebase(context: Context?) {
FirebaseApp.initializeApp(context!!)
LogEx.logDebug("initFirebase", "initFirebase")
getToken()
LogEx.logDebug("FCM", "FirebaseApp initialized")
fetchAndReportToken()
}
/**
* 订阅Topic并处理回调
*/
fun subscribeToTopic(topic: String) {
Log.e("FCMUtil", "subscribeToTopic")
LogEx.logDebug("FCM", "subscribeToTopic: $topic")
FirebaseMessaging.getInstance().subscribeToTopic(topic)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
getToken()
Log.e("FCMUtil", "isSuccessful")
fetchAndReportToken()
LogEx.logDebug("FCM", "subscribeToTopic success: $topic")
event("FCM_Topic_$topic", null, null)
} else {
LogEx.logDebug("FCM", "subscribeToTopic failed: $topic, exception=${task.exception}")
event("FCM_Error", "subscribeToTopic task.isSuccessful=${task.isSuccessful} ", null)
}
}
}
/**
* 退订Topic并处理回调(仅日志,无event)
*/
fun unsubscribeFromTopic(topic: String?) {
FirebaseMessaging.getInstance().unsubscribeFromTopic(topic!!)
if (topic.isNullOrEmpty()) return
LogEx.logDebug("FCM", "unsubscribeFromTopic: $topic")
FirebaseMessaging.getInstance().unsubscribeFromTopic(topic)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
LogEx.logDebug("FCM", "unsubscribeFromTopic success: $topic")
} else {
LogEx.logDebug("FCM", "unsubscribeFromTopic failed: $topic, exception=${task.exception}")
}
}
}
/**
* 有vpn有google商店才能获取
* 获取并上报FCM Token(只在成功时上报event)
*/
private fun getToken() {
private fun fetchAndReportToken() {
FirebaseMessaging.getInstance().token
.addOnCompleteListener(object : OnCompleteListener<String> {
override fun onComplete(task: Task<String>) {
LogEx.logDebug("FCM", "onComplete ${task.isSuccessful}")
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.e("FCM", "Fetching FCM registration token failed", task.exception)
return
LogEx.logDebug("FCM", "Fetching FCM registration token failed: ${task.exception}")
return@addOnCompleteListener
}
// Get new FCM registration token
val token: String = task.result
LogEx.logDebug("FCM", "token=$token")
val json = JSONObject()
json.put("token", token)
event("fcm_message_received", ext = json)
val token = task.result
fcmToken = token
// Handle new token
val json = JSONObject().apply { put("token", token) }
event("fcm_message_received", ext = json)
LogEx.logDebug("FCM", "FCM Registration Token: $token")
}
})
}
}
......
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