Explorar el Código

图片消息

master
xuqm hace 1 año
padre
commit
537dce4e58
Se han modificado 18 ficheros con 389 adiciones y 50 borrados
  1. +1
    -1
      app/build.gradle
  2. +5
    -2
      app/src/main/AndroidManifest.xml
  3. +38
    -0
      app/src/main/java/cn/org/bjca/trust/Myapplication.kt
  4. +35
    -0
      app/src/main/java/cn/org/bjca/trust/pushdemo/LoginActivity.kt
  5. +25
    -1
      app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt
  6. +43
    -0
      app/src/main/res/layout/activity_login.xml
  7. +9
    -0
      app/src/main/res/layout/activity_main.xml
  8. +2
    -0
      push/src/main/java/cn/org/bjca/trust/push/common/CommonHelper.kt
  9. +17
    -0
      push/src/main/java/cn/org/bjca/trust/push/common/FileHelper.kt
  10. +108
    -0
      push/src/main/java/cn/org/bjca/trust/push/common/GraphicHelper.kt
  11. +9
    -0
      push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt
  12. +41
    -5
      push/src/main/java/cn/org/bjca/trust/push/common/SendMessageHelper.kt
  13. +3
    -0
      push/src/main/java/cn/org/bjca/trust/push/db/message/MessageDao.kt
  14. +2
    -2
      push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt
  15. +1
    -2
      push/src/main/java/cn/org/bjca/trust/push/extensions/PushExt.kt
  16. +5
    -2
      push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt
  17. +5
    -5
      push/src/main/java/cn/org/bjca/trust/push/message/bean/PictureMessage.kt
  18. +40
    -30
      push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt

+ 1
- 1
app/build.gradle Ver fichero

@@ -65,7 +65,7 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

implementation 'com.xuqm.android:base:0.0.2'
implementation 'com.xuqm.android:base:0.0.5'
// implementation 'cn.org.bjca.trus:push:0.0.1.011'
implementation project(path: ':push')
}

+ 5
- 2
app/src/main/AndroidManifest.xml Ver fichero

@@ -9,13 +9,13 @@
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:usesCleartextTraffic="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.PushDemo"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:name=".LoginActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -27,6 +27,9 @@
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".MainActivity"
android:exported="true"/>
</application>

</manifest>

+ 38
- 0
app/src/main/java/cn/org/bjca/trust/Myapplication.kt Ver fichero

@@ -1,6 +1,10 @@
package cn.org.bjca.trust

import cn.org.bjca.trust.push.PushSdk
import cn.org.bjca.trust.push.common.LogHelper
import cn.org.bjca.trust.push.enums.OsType
import cn.org.bjca.trust.push.message.callback.CallbackListener
import cn.org.bjca.trust.push.message.msg.Message
import com.xuqm.base.App
import com.xuqm.base.di.manager.HttpManager

@@ -9,5 +13,39 @@ class Myapplication : App() {
super.onCreate()
LogHelper.e("+++++++++++++++Application")
appComponent = HttpManager.getAppComponent("");

PushSdk.instance.setMsgCallback(object : CallbackListener {
override fun sendComplete(msg: Message) {
LogHelper.d("------发送消息完成------")
}

override fun sendError(code: String, msg: Message) {
LogHelper.d("消息发送失败::${code}")
}

override fun messageArrived(msg: Message) {
}

override fun connected() {
LogHelper.d("------im连接成功------")
}

override fun connectionKicked(var1: OsType) {
LogHelper.d("------其它设备登录::${var1}------")
}

override fun connectError(code: String) {
LogHelper.d("im连接失败")
}

override fun connectionLost() {
LogHelper.d("------im连接丢失,正在重连...------")
}

override fun exceptionCause(var1: Throwable) {
LogHelper.e("------im出现错误------", var1)
}
})

}
}

+ 35
- 0
app/src/main/java/cn/org/bjca/trust/pushdemo/LoginActivity.kt Ver fichero

@@ -0,0 +1,35 @@
package cn.org.bjca.trust.pushdemo

import android.content.Intent
import android.os.Bundle
import cn.org.bjca.trust.push.PushSdk
import cn.org.bjca.trust.pushdemo.databinding.ActivityLoginBinding
import com.xuqm.base.dialog.loading.LoadingDialog
import com.xuqm.base.extensions.showMessage
import com.xuqm.base.ui.BaseActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

class LoginActivity : BaseActivity<ActivityLoginBinding>() {
override fun showStatus(): Int = R.color.purple_700
override fun getLayoutId(): Int = R.layout.activity_login
override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState)
binding.button.setOnClickListener {

if (binding.username.text.isNotEmpty()) {
LoadingDialog.showDialog("正在登录,请稍候···")
CoroutineScope(Dispatchers.IO).launch {
delay(2000L)
LoadingDialog.dismissDialog()
PushSdk.instance.register(binding.username.text.toString())
startActivity(Intent(mContext, MainActivity::class.java))
}
}
else "请输入用户名".showMessage()

}
}
}

+ 25
- 1
app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt Ver fichero

@@ -1,9 +1,17 @@
package cn.org.bjca.trust.pushdemo

import android.os.Bundle
import android.provider.MediaStore
import androidx.activity.result.contract.ActivityResultContracts
import cn.org.bjca.trust.push.PushSdk
import cn.org.bjca.trust.push.common.GraphicHelper
import cn.org.bjca.trust.push.common.LogHelper
import cn.org.bjca.trust.push.common.MessageHelper
import cn.org.bjca.trust.push.common.SendMessageHelper
import cn.org.bjca.trust.push.enums.MsgType
import cn.org.bjca.trust.push.message.bean.PictureMessage
import cn.org.bjca.trust.pushdemo.databinding.ActivityMainBinding
import com.xuqm.base.extensions.loge
import com.xuqm.base.ui.BaseActivity

class MainActivity : BaseActivity<ActivityMainBinding>() {
@@ -15,10 +23,26 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
super.initView(savedInstanceState)
PushSdk.instance.register("xuqinmin")


val r = registerForActivityResult(ActivityResultContracts.GetContent()) {
it.loge()
SendMessageHelper.sendImageMessage(
"xuqinmin", MediaStore.Images.Media.getBitmap(
contentResolver, it
)
)
}

binding.register.setOnClickListener {
val m = MessageHelper.getMessageForPage(1, 10)
LogHelper.e(m[0])
if (m[0].msgType == MsgType.Image) {
binding.iv.setImageBitmap(GraphicHelper.base64ToBitmap((m[0] as PictureMessage).thumbnail))
}
}
binding.send.setOnClickListener {
SendMessageHelper.sendTextMessage("xuqinmin", "你好啊${System.currentTimeMillis()}")
// SendMessageHelper.sendTextMessage("xuqinmin", "hello${System.currentTimeMillis()}")
r.launch("image/*")
}

}


+ 43
- 0
app/src/main/res/layout/activity_login.xml Ver fichero

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="25dp"
tools:context=".LoginActivity">

<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="68dp"
android:text="xuqinmin"
android:layout_marginBottom="25dp"
android:hint="请输入用户名"
app:layout_constraintBottom_toTopOf="@+id/pwd"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

<EditText
android:id="@+id/pwd"
android:layout_width="match_parent"
android:layout_height="68dp"
android:hint="请输入密码"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginTop="35dp"
android:text="登录"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pwd" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

+ 9
- 0
app/src/main/res/layout/activity_main.xml Ver fichero

@@ -29,6 +29,15 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.188" />
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/iv"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/send"
/>

</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

+ 2
- 0
push/src/main/java/cn/org/bjca/trust/push/common/CommonHelper.kt Ver fichero

@@ -19,4 +19,6 @@ object CommonHelper {
}
@JvmStatic
fun generateMessageId(): String = UUID.randomUUID().toString()


}

+ 17
- 0
push/src/main/java/cn/org/bjca/trust/push/common/FileHelper.kt Ver fichero

@@ -1,5 +1,8 @@
package cn.org.bjca.trust.push.common

import android.graphics.BitmapFactory
import java.io.File

/**
* 文件相关工具类
*/
@@ -8,4 +11,18 @@ object FileHelper {
fun openFile() {
throw Throwable("************************")
}

@JvmStatic
fun isPicture(file: File): Boolean {
if (!file.exists()) {
return false
}
val options = BitmapFactory.Options()
BitmapFactory.decodeFile(file.toString(), options)
options.inJustDecodeBounds = true
return when {
options.outWidth != -1 && options.outHeight != -1 -> true
else -> false
}
}
}

+ 108
- 0
push/src/main/java/cn/org/bjca/trust/push/common/GraphicHelper.kt Ver fichero

@@ -0,0 +1,108 @@
package cn.org.bjca.trust.push.common

import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Matrix
import android.util.Base64
import java.io.ByteArrayOutputStream
import java.io.IOException
import kotlin.math.sqrt

object GraphicHelper {


/**
* 缩放图片到固定文件大小
*
* @param bm 需要缩放的图片
* @param maxSize 目标文件大小,单位:KB
* @return
*/
@JvmStatic
fun imageZoom(bgimage: Bitmap, maxSize: Double): Bitmap {
// 图片允许最大空间 单位:KB
// 将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大)
var bm = bgimage
val baos = ByteArrayOutputStream()
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos)
val b = baos.toByteArray()
// 将字节换成KB
val mid = (b.size / 1024).toDouble()
// 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩
if (mid > maxSize) {
// 获取bitmap大小 是允许最大大小的多少倍
val i = mid / maxSize
// 开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍
// 保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小
bm = zoomImage(bm, bm.width / sqrt(i), bm.height / sqrt(i))
}
return bm
}

/***
* 图片的缩放方法
*
* @param bgimage :源图片资源
* @param newWidth :缩放后宽度
* @param newHeight :缩放后高度
* @return
*/
@JvmStatic
fun zoomImage(bgimage: Bitmap, newWidth: Double, newHeight: Double): Bitmap {
// 获取这个图片的宽和高
val width = bgimage.width.toFloat()
val height = bgimage.height.toFloat()
// 创建操作图片用的matrix对象
val matrix = Matrix()
// 计算宽高缩放率
val scaleWidth = newWidth.toFloat() / width
val scaleHeight = newHeight.toFloat() / height
// 缩放图片动作
matrix.postScale(scaleWidth, scaleHeight)
return Bitmap.createBitmap(bgimage, 0, 0, width.toInt(), height.toInt(), matrix, true)
}

/**
* bitmap转为base64
*
* @param bitmap
* @return
*/
@JvmStatic
fun bitmapToBase64(bitmap: Bitmap): String? {
var result: String? = null
var baos: ByteArrayOutputStream? = null
try {
baos = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos)
baos.flush()
baos.close()
val bitmapBytes = baos.toByteArray()
result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT)
} catch (e: IOException) {
e.printStackTrace()
} finally {
try {
if (baos != null) {
baos.flush()
baos.close()
}
} catch (e: IOException) {
e.printStackTrace()
}
}
return result
}

/**
* base64转为bitmap
*
* @param base64Data
* @return
*/
@JvmStatic
fun base64ToBitmap(base64Data: String?): Bitmap? {
val bytes = Base64.decode(base64Data, Base64.DEFAULT)
return BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
}
}

+ 9
- 0
push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt Ver fichero

@@ -11,6 +11,15 @@ import org.json.JSONException
object MessageHelper {

@JvmStatic
fun getMessage(): List<SzyxMessage> = DbHelper.getDataBase().messageDao().getAll()

@JvmStatic
fun getMessageForPage(start: Int, limit: Int): List<Message> =
DbHelper.getDataBase().messageDao().getMessageForPage(start, limit).map {
parseMessage(it)?:UnknownMessage()
}

@JvmStatic
fun parseMessage(sendMessage: SendMessage): Message? {
val msgType = MsgType.getMsgType(sendMessage.messageType)



+ 41
- 5
push/src/main/java/cn/org/bjca/trust/push/common/SendMessageHelper.kt Ver fichero

@@ -1,5 +1,7 @@
package cn.org.bjca.trust.push.common

import android.graphics.Bitmap
import android.graphics.BitmapFactory
import cn.org.bjca.trust.push.BuildConfig
import cn.org.bjca.trust.push.db.DbHelper
import cn.org.bjca.trust.push.message.ImManager
@@ -7,10 +9,10 @@ import cn.org.bjca.trust.push.message.bean.*
import cn.org.bjca.trust.push.message.msg.Message
import cn.org.bjca.trust.push.message.msg.SendMessage
import java.io.File
import java.net.URI

object SendMessageHelper {
private fun sendMessage(message: Message) {
LogHelper.d("------app端调用发送消息-----")
val sendMessage = SendMessage()
sendMessage.messageId = message.messageId ?: CommonHelper.generateMessageId()
sendMessage.timestamp = System.currentTimeMillis()
@@ -31,8 +33,43 @@ object SendMessageHelper {
@JvmStatic
fun sendImageMessage(
toUserId: String,
uri: URI
) {
sendImageMessage(toUserId, File(uri))
}

@JvmStatic
fun sendImageMessage(
toUserId: String,
file: File
) {
if (!FileHelper.isPicture(file)) throw Throwable("不是图片文件")
val img = GraphicHelper.imageZoom(BitmapFactory.decodeFile(file.absolutePath), 2048.0)
GraphicHelper.bitmapToBase64(img)?.let {
sendImageMessage(
toUserId,
"dsadsasdsa",
it,
img.width.toDouble(),
img.height.toDouble()
)
}
}
@JvmStatic
fun sendImageMessage(
toUserId: String,
bitmap: Bitmap
) {
val img = GraphicHelper.imageZoom(bitmap, 200.0)
GraphicHelper.bitmapToBase64(img)?.let {
sendImageMessage(
toUserId,
"dsadsasdsa",
it,
img.width.toDouble(),
img.height.toDouble()
)
}
}

@JvmStatic
@@ -40,12 +77,11 @@ object SendMessageHelper {
toUserId: String,
imageStorageId: String,
thumbnail: String,
thumbnailWidth: Int,
thumbnailHeight: Int
thumbnailWidth: Double,
thumbnailHeight: Double
) {
sendMessage(
PictureMessage(
).apply {
PictureMessage().apply {
toClientId = toUserId
this.imageStorageId = imageStorageId
this.thumbnail = thumbnail


+ 3
- 0
push/src/main/java/cn/org/bjca/trust/push/db/message/MessageDao.kt Ver fichero

@@ -7,6 +7,9 @@ interface MessageDao {
@Query("SELECT * FROM message")
fun getAll(): List<SzyxMessage>

@Query("SELECT * FROM message ORDER BY p_id DESC LIMIT (:start-1)*:limit,:limit")
fun getMessageForPage(start:Int, limit:Int): List<SzyxMessage>

@Query("SELECT * FROM message WHERE message_id = :msgId")
fun getMessage(msgId: String): List<SzyxMessage>



+ 2
- 2
push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt Ver fichero

@@ -9,8 +9,8 @@ enum class MsgType(val value: Int) {
Video(5) /* 视频 */,
File(6) /* 文件 */,
At(7) /* @我 */,
Log(8) /* 日志 */,
Other(10010), /* 自定义消息 */
Other(8) /* 自定义消息 */,
Log(10010), /* 日志 */
/**
* pc 登陆 end
*/


+ 1
- 2
push/src/main/java/cn/org/bjca/trust/push/extensions/PushExt.kt Ver fichero

@@ -1,5 +1,4 @@
package com.xuqm.base.extensions

package cn.org.bjca.trust.push.extensions
import android.app.Activity
import android.content.Context
import android.view.inputmethod.InputMethodManager


+ 5
- 2
push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt Ver fichero

@@ -13,6 +13,7 @@ import cn.org.bjca.trust.push.message.client.ImConnectOptions
class PushSdkManager : SdkInterface {

private lateinit var imConnectOptions: ImConnectOptions
private lateinit var callback: CallbackListener

override fun register(userId: String) {
registerIm(userId)
@@ -56,7 +57,8 @@ class PushSdkManager : SdkInterface {
BuildConfig.versionName
)
}
imConnectOptions.callback = ImCallback()
if (::callback.isInitialized) this.imConnectOptions.callback = callback
else imConnectOptions.callback = ImCallback()
ImManager.instance.connect(imConnectOptions)
}

@@ -66,6 +68,7 @@ class PushSdkManager : SdkInterface {


override fun setMsgCallback(callback: CallbackListener) {
imConnectOptions.callback = callback
this.callback = callback
if (::imConnectOptions.isInitialized) this.imConnectOptions.callback = callback
}
}

+ 5
- 5
push/src/main/java/cn/org/bjca/trust/push/message/bean/PictureMessage.kt Ver fichero

@@ -10,8 +10,8 @@ import org.json.JSONObject
class PictureMessage : Message() {
var imageStorageId: String? = null
var thumbnail: String? = null
var thumbnailWidth: Int? = null
var thumbnailHeight: Int? = null
var thumbnailWidth: Double? = null
var thumbnailHeight: Double? = null

init {
this.msgType = MsgType.Image
@@ -23,9 +23,9 @@ class PictureMessage : Message() {
val json = sendMessage.message?.let { JSONObject(it) }
if (json != null) {
this.imageStorageId = json.optString("imageStorageId")
this.thumbnail = json.optString("imageStorageId")
this.thumbnailWidth = json.optInt("imageStorageId")
this.thumbnailHeight = json.optInt("imageStorageId")
this.thumbnail = json.optString("thumbnail")
this.thumbnailWidth = json.optDouble("thumbnailWidth")
this.thumbnailHeight = json.optDouble("thumbnailHeight")
}
} catch (e: Exception) {
LogHelper.e("消息组装失败", e)


+ 40
- 30
push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt Ver fichero

@@ -35,6 +35,7 @@ class ImClient : ImClientInterface {
connectOptions = mImConnectOptions
init()
mConnect()
startReconnect()
}

private fun mConnect() {
@@ -46,7 +47,11 @@ class ImClient : ImClientInterface {
LogHelper.d("------------开始重连::mqttArrivedClient--------------")
mqttArrivedClient.connect(options)
}
} catch (e: Exception) {
} catch (e: MqttSecurityException) {
LogHelper.e("--------", e)
connectOptions.callback?.connectError(ERROR_CONNECTED)
} catch (e: MqttException) {
LogHelper.e("--------", e)
connectOptions.callback?.connectError(ERROR_CONNECTED)
}
isConnecting = false
@@ -82,7 +87,6 @@ class ImClient : ImClientInterface {
override fun connectComplete(reconnect: Boolean, serverURI: String) {
mqttArrivedClient.subscribe(connectOptions.clientId, 2)
sendConnectMessage()
startReconnect()
}
})
}
@@ -101,22 +105,25 @@ class ImClient : ImClientInterface {
LogHelper.d("------新消息------\n${str}")
val sendMessage = GsonImplHelp.get()
.toObject(String(payload, Charsets.UTF_8), SendMessage::class.java)
if (sendMessage.messageId.isNullOrEmpty()) return
sendMessage.messageId?.let { ackMessage(it) }
val his = DbHelper.getDataBase().messageDao().getMessage(sendMessage.messageId!!)
if (his.isNotEmpty()) return
// 存表
DbHelper.getDataBase().messageDao().insertAll(
SzyxMessage(
sendMessage.messageId,
sendMessage.timestamp,
sendMessage.fromClientId,
sendMessage.toClientId,
sendMessage.target,
sendMessage.messageType,
sendMessage.message,
sendMessage.tenantNo,
1
if (sendMessage.messageType < 100)
DbHelper.getDataBase().messageDao().insertAll(
SzyxMessage(
sendMessage.messageId,
sendMessage.timestamp,
sendMessage.fromClientId,
sendMessage.toClientId,
sendMessage.target,
sendMessage.messageType,
sendMessage.message,
sendMessage.tenantNo,
1
)
)
)
// 回复服务端收到
sendMessage.messageId?.let { ackMessage(it) }
// 通知app新消息到达
MessageHelper.parseMessage(sendMessage)?.also {
connectOptions.callback?.messageArrived(it)
@@ -159,7 +166,7 @@ class ImClient : ImClientInterface {
private lateinit var pingScheduler: ScheduledExecutorService

// ping和断线重连
fun startReconnect() {
private fun startReconnect() {
if (!::scheduler.isInitialized) {
scheduler = Executors.newSingleThreadScheduledExecutor()
scheduler.scheduleAtFixedRate({
@@ -207,19 +214,20 @@ class ImClient : ImClientInterface {
msg.fromClientId = connectOptions.clientId
msg.target = connectOptions.clientId

DbHelper.getDataBase().messageDao().insertAll(
SzyxMessage(
msg.messageId,
msg.timestamp,
msg.fromClientId,
msg.toClientId,
msg.target,
msg.messageType,
msg.message,
msg.tenantNo,
0
if (msg.messageType < 100)
DbHelper.getDataBase().messageDao().insertAll(
SzyxMessage(
msg.messageId,
msg.timestamp,
msg.fromClientId,
msg.toClientId,
msg.target,
msg.messageType,
msg.message,
msg.tenantNo,
0
)
)
)
if (!isConnect()) {
msg.messageId?.let { MessageHelper.changeStatus(it, false) }
MessageHelper.parseMessage(msg)?.let {
@@ -230,8 +238,10 @@ class ImClient : ImClientInterface {
return
}
try {
val m = GsonImplHelp.get().toJson(msg)
LogHelper.d("------app端调用发送消息-----\t${m}")
mqttArrivedClient.publish(
"server", GsonImplHelp.get().toJson(msg).toByteArray(Charsets.UTF_8), 2, true
"server", m.toByteArray(Charsets.UTF_8), 2, true
)
handler.sendMessageDelayed(Message().apply {
what = 10086


Cargando…
Cancelar
Guardar