diff --git a/app/build.gradle b/app/build.gradle
index fa37ab5..d9c15c0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -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')
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a7a8aec..1dd5584 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -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">
@@ -27,6 +27,9 @@
android:name="android.app.lib_name"
android:value="" />
+
\ No newline at end of file
diff --git a/app/src/main/java/cn/org/bjca/trust/Myapplication.kt b/app/src/main/java/cn/org/bjca/trust/Myapplication.kt
index a907991..49daea0 100644
--- a/app/src/main/java/cn/org/bjca/trust/Myapplication.kt
+++ b/app/src/main/java/cn/org/bjca/trust/Myapplication.kt
@@ -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)
+ }
+ })
+
}
}
\ No newline at end of file
diff --git a/app/src/main/java/cn/org/bjca/trust/pushdemo/LoginActivity.kt b/app/src/main/java/cn/org/bjca/trust/pushdemo/LoginActivity.kt
new file mode 100644
index 0000000..e03d12a
--- /dev/null
+++ b/app/src/main/java/cn/org/bjca/trust/pushdemo/LoginActivity.kt
@@ -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() {
+ 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()
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt b/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt
index f695435..80585d4 100644
--- a/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt
+++ b/app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt
@@ -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() {
@@ -15,10 +23,26 @@ class MainActivity : BaseActivity() {
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/*")
}
}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..ea97f41
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a01010d..a452152 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -29,6 +29,15 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.188" />
+
\ No newline at end of file
diff --git a/push/src/main/java/cn/org/bjca/trust/push/common/CommonHelper.kt b/push/src/main/java/cn/org/bjca/trust/push/common/CommonHelper.kt
index 026c166..f61386e 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/common/CommonHelper.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/common/CommonHelper.kt
@@ -19,4 +19,6 @@ object CommonHelper {
}
@JvmStatic
fun generateMessageId(): String = UUID.randomUUID().toString()
+
+
}
\ No newline at end of file
diff --git a/push/src/main/java/cn/org/bjca/trust/push/common/FileHelper.kt b/push/src/main/java/cn/org/bjca/trust/push/common/FileHelper.kt
index bb25a61..367ae8c 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/common/FileHelper.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/common/FileHelper.kt
@@ -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
+ }
+ }
}
\ No newline at end of file
diff --git a/push/src/main/java/cn/org/bjca/trust/push/common/GraphicHelper.kt b/push/src/main/java/cn/org/bjca/trust/push/common/GraphicHelper.kt
new file mode 100644
index 0000000..9f13ad5
--- /dev/null
+++ b/push/src/main/java/cn/org/bjca/trust/push/common/GraphicHelper.kt
@@ -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)
+ }
+}
\ No newline at end of file
diff --git a/push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt b/push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt
index 44a6891..65ef5ac 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt
@@ -11,6 +11,15 @@ import org.json.JSONException
object MessageHelper {
@JvmStatic
+ fun getMessage(): List = DbHelper.getDataBase().messageDao().getAll()
+
+ @JvmStatic
+ fun getMessageForPage(start: Int, limit: Int): List =
+ DbHelper.getDataBase().messageDao().getMessageForPage(start, limit).map {
+ parseMessage(it)?:UnknownMessage()
+ }
+
+ @JvmStatic
fun parseMessage(sendMessage: SendMessage): Message? {
val msgType = MsgType.getMsgType(sendMessage.messageType)
diff --git a/push/src/main/java/cn/org/bjca/trust/push/common/SendMessageHelper.kt b/push/src/main/java/cn/org/bjca/trust/push/common/SendMessageHelper.kt
index ddd0074..c52bbb7 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/common/SendMessageHelper.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/common/SendMessageHelper.kt
@@ -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
diff --git a/push/src/main/java/cn/org/bjca/trust/push/db/message/MessageDao.kt b/push/src/main/java/cn/org/bjca/trust/push/db/message/MessageDao.kt
index b376a27..6281c6e 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/db/message/MessageDao.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/db/message/MessageDao.kt
@@ -7,6 +7,9 @@ interface MessageDao {
@Query("SELECT * FROM message")
fun getAll(): List
+ @Query("SELECT * FROM message ORDER BY p_id DESC LIMIT (:start-1)*:limit,:limit")
+ fun getMessageForPage(start:Int, limit:Int): List
+
@Query("SELECT * FROM message WHERE message_id = :msgId")
fun getMessage(msgId: String): List
diff --git a/push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt b/push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt
index b080cf2..0449fe8 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt
@@ -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
*/
diff --git a/push/src/main/java/cn/org/bjca/trust/push/extensions/PushExt.kt b/push/src/main/java/cn/org/bjca/trust/push/extensions/PushExt.kt
index 38f719d..cbbd44d 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/extensions/PushExt.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/extensions/PushExt.kt
@@ -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
diff --git a/push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt b/push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt
index 6ceb46d..22c7964 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt
@@ -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
}
}
\ No newline at end of file
diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/bean/PictureMessage.kt b/push/src/main/java/cn/org/bjca/trust/push/message/bean/PictureMessage.kt
index 4adb98f..d2be802 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/message/bean/PictureMessage.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/message/bean/PictureMessage.kt
@@ -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)
diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt b/push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt
index 48f9cb7..ee48b1e 100644
--- a/push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt
+++ b/push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt
@@ -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