feat(servicing): 添加客户语音通知功能
- 新增 CustomerSpeechManager 对象,用于处理文本转语音功能 - 添加 AppForegroundListener 接口和 BaseActivityLifecycleCallbacks 类,用于监听应用前后台切换- 更新 BaseActivity,使其支持推送消息 - 新增 ServicePeopleConfirmActivity 活动 - 优化订单处理逻辑,过滤掉已接受的订单 - 更新版本号至 1.0.1.9.9.12
This commit is contained in:
@ -10,6 +10,7 @@ import androidx.core.app.NotificationCompat
|
||||
import cn.jiguang.api.utils.JCollectionAuth
|
||||
import cn.jpush.android.api.JPushInterface
|
||||
import com.google.gson.Gson
|
||||
import com.za.base.PushMessageLiveData
|
||||
import com.za.bean.JpushBean
|
||||
import com.za.common.GlobalData
|
||||
import com.za.common.log.LogUtil
|
||||
@ -17,19 +18,9 @@ import com.za.common.util.DeviceUtil
|
||||
import com.za.service.mqtt.MyMqttClient
|
||||
import com.za.servicing.R
|
||||
|
||||
interface PushListener {
|
||||
fun newOrderMsg(jpushBean : JpushBean)
|
||||
fun giveUpOrder(jpushBean : JpushBean)
|
||||
fun revokeOrder(jpushBean : JpushBean)
|
||||
fun reDispatchOrder(jpushBean : JpushBean)
|
||||
fun broadcast(string : String)
|
||||
fun importantTip(jpushBean : JpushBean)
|
||||
}
|
||||
|
||||
data class LastJPushBean(val msg : Int, val time : Long = System.nanoTime())
|
||||
|
||||
object ServiceManager {
|
||||
private var pushListener : PushListener? = null
|
||||
private var lastJPushBean : LastJPushBean? = null
|
||||
private const val DUPLICATE_MSG_THRESHOLD = 3000L // 3秒
|
||||
|
||||
@ -53,13 +44,6 @@ object ServiceManager {
|
||||
}
|
||||
}
|
||||
|
||||
// Register push listener
|
||||
fun registerPushListener(listener : PushListener?) {
|
||||
this.pushListener = listener
|
||||
LogUtil.print("ServiceManager",
|
||||
"Registered push listener: ${pushListener?.javaClass?.simpleName}")
|
||||
}
|
||||
|
||||
// Handle incoming push messages
|
||||
@Synchronized
|
||||
fun handlerPushMsg(msg : String) {
|
||||
@ -75,93 +59,22 @@ object ServiceManager {
|
||||
|
||||
if (msg.startsWith("broadcast:")) {
|
||||
lastJPushBean = LastJPushBean(msg = msg.hashCode())
|
||||
handleBroadcast(msg)
|
||||
PushMessageLiveData.postPushMessage(msg)
|
||||
return
|
||||
}
|
||||
try {
|
||||
lastJPushBean = LastJPushBean(msg = msg.hashCode())
|
||||
val jpushOrderInfoBean = Gson().fromJson(msg, JpushBean::class.java)
|
||||
sendSystemNotificationFromMessage(jpushOrderInfoBean)
|
||||
when (jpushOrderInfoBean.pushType) {
|
||||
0 -> newOrderMsg(jpushOrderInfoBean)
|
||||
1 -> handleTypeOneMessage(jpushOrderInfoBean)
|
||||
3 -> importantTip(jpushOrderInfoBean)
|
||||
else -> LogUtil.print("JpushMessage",
|
||||
"Unknown push type: ${jpushOrderInfoBean.pushType}")
|
||||
}
|
||||
PushMessageLiveData.postPushMessage(msg)
|
||||
} catch (e : Exception) {
|
||||
if (msg.startsWith("broadcast:")) {
|
||||
handleBroadcast(msg)
|
||||
PushMessageLiveData.postPushMessage(msg)
|
||||
}
|
||||
LogUtil.print("JpushMessage", "Error handling message: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
// Handle broadcast messages
|
||||
private fun handleBroadcast(msg : String) {
|
||||
try {
|
||||
val content = msg.substring(10)
|
||||
pushListener?.broadcast(content)
|
||||
sendNotification(GlobalData.application, content)
|
||||
LogUtil.print("JpushMessage", "Broadcast content: $content")
|
||||
} catch (e : Exception) {
|
||||
LogUtil.print("JpushMessage", "Broadcast failed: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
// Handle type one messages
|
||||
private fun handleTypeOneMessage(jpushOrderBean : JpushBean) {
|
||||
when (jpushOrderBean.typeDesc) {
|
||||
"giveUp" -> giveUpOrder(jpushOrderBean)
|
||||
"revoke" -> revokeOrder(jpushOrderBean)
|
||||
"reDispatch" -> reDispatchOrder(jpushOrderBean)
|
||||
else -> LogUtil.print("JpushMessage", "Unknown typeDesc: ${jpushOrderBean.typeDesc}")
|
||||
}
|
||||
}
|
||||
|
||||
// Handle new order messages
|
||||
private fun newOrderMsg(jpushOrderBean : JpushBean) {
|
||||
try {
|
||||
LogUtil.print("JpushMessage",
|
||||
"Handling new order message: $pushListener ${pushListener?.javaClass?.simpleName}")
|
||||
pushListener?.newOrderMsg(jpushOrderBean)
|
||||
} catch (e : Exception) {
|
||||
LogUtil.print("JpushMessage", "Failed to handle new order message: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
// Handle give up order messages
|
||||
private fun giveUpOrder(jpushOrderBean : JpushBean) {
|
||||
pushListener?.giveUpOrder(jpushOrderBean)
|
||||
}
|
||||
|
||||
// Handle revoke order messages
|
||||
private fun revokeOrder(jpushOrderBean : JpushBean) {
|
||||
pushListener?.revokeOrder(jpushOrderBean)
|
||||
}
|
||||
|
||||
// Handle re-dispatch order messages
|
||||
private fun reDispatchOrder(jpushOrderBean : JpushBean) {
|
||||
pushListener?.reDispatchOrder(jpushOrderBean)
|
||||
}
|
||||
|
||||
// Handle important tip messages
|
||||
private fun importantTip(jpushOrderBean : JpushBean) {
|
||||
pushListener?.importantTip(jpushOrderBean)
|
||||
}
|
||||
|
||||
// Disconnect from JPush and MQTT
|
||||
fun disconnect(context : Context) {
|
||||
try {
|
||||
JPushInterface.stopPush(context) // Stop JPush
|
||||
MyMqttClient.disconnect() // Disconnect MQTT
|
||||
LogUtil.print("ServiceManager", "Disconnected from JPush and MQTT successfully")
|
||||
} catch (e : Exception) {
|
||||
LogUtil.print("ServiceManager", "Error during disconnection: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private const val CHANNEL_ID = "ImportantMessagesChannel"
|
||||
private const val NOTIFICATION_ID = 1003
|
||||
|
||||
@ -224,5 +137,15 @@ object ServiceManager {
|
||||
notificationManager.notify(NOTIFICATION_ID, notification)
|
||||
}
|
||||
|
||||
// Disconnect from JPush and MQTT
|
||||
fun disconnect(context : Context) {
|
||||
try {
|
||||
JPushInterface.stopPush(context) // Stop JPush
|
||||
MyMqttClient.disconnect() // Disconnect MQTT
|
||||
LogUtil.print("ServiceManager", "Disconnected from JPush and MQTT successfully")
|
||||
} catch (e : Exception) {
|
||||
LogUtil.print("ServiceManager", "Error during disconnection: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user