diff --git a/app/build.gradle b/app/build.gradle index 0c88bb1..9612300 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,14 +46,15 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '11' } } dependencies { + implementation fileTree(dir: 'libs',includes: ['*.jar','*.aar']) implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' 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 3dbf747..2ca453e 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 @@ -9,8 +9,11 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - findViewById(R.id.tv).setOnClickListener { - PushSdk.instance.register(this, "xuqm") + findViewById(R.id.register).setOnClickListener { + PushSdk.instance.register(this, "xuqinmin") + } + findViewById(R.id.send).setOnClickListener { + PushSdk.instance.sendTextMessage("xuqinmin", "你好啊") } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5d9785d..920d42e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,13 +7,25 @@ tools:context=".MainActivity"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.08" /> + + \ No newline at end of file diff --git a/push/build.gradle b/push/build.gradle index 396c3e8..127655d 100644 --- a/push/build.gradle +++ b/push/build.gradle @@ -42,26 +42,22 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '11' } - -} -repositories{ - flatDir { - dirs 'libs' - } -} -repositories { - flatDir { - dirs 'libs' + publishing { + multipleVariants { + withSourcesJar() + withJavadocJar() + allVariants() + } } } dependencies { - implementation fileTree(dir: 'libs',includes: ['*.jar','*.aar']) + compileOnly fileTree(dir: 'libs',includes: ['*.jar','*.aar']) implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' @@ -74,6 +70,13 @@ dependencies { kapt("androidx.room:room-compiler:2.5.0") // implementation("androidx.room:room-ktx:2.5.0") + //添加mqtt 2个包 + implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' + implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' + + //gson + implementation 'com.google.code.gson:gson:2.9.0' + // 小米推送 // implementation (name: 'MiPush_SDK_Client_5_3_0-C_3rd', ext: 'aar') @@ -81,6 +84,8 @@ dependencies { implementation 'com.huawei.hms:push:6.9.0.300' + + } // 这个是把源码打入aar包中的任务 task sourceJar(type: Jar) { @@ -101,7 +106,7 @@ afterEvaluate { // 这里除了有debug 还有release from components.release // 运行任务,把源码打进去 - artifact sourceJar +// artifact sourceJar } } // 添加仓库地址 diff --git a/push/src/main/AndroidManifest.xml b/push/src/main/AndroidManifest.xml index f101c6c..7910ea0 100644 --- a/push/src/main/AndroidManifest.xml +++ b/push/src/main/AndroidManifest.xml @@ -1,5 +1,8 @@ + + + T toObject(String json, Class claxx) { + return gson.fromJson(json, claxx); + + } + + @Override + public T toObject(byte[] bytes, Class claxx) { + return gson.fromJson(new String(bytes), claxx); + + } + + public List toList(String json, Class clazz) { + JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray(); + + List list = new ArrayList<>(); + for (JsonElement jsonElement : jsonArray) { + list.add(gson.fromJson(jsonElement, clazz)); //cls + } + + return list; + + + } + + public static List stringToArray(String s, Class cls) { + T[] array = new Gson().fromJson(s, cls); + return Arrays.asList(array); + } + +} diff --git a/push/src/main/java/cn/org/bjca/trust/push/common/json/Json.java b/push/src/main/java/cn/org/bjca/trust/push/common/json/Json.java new file mode 100644 index 0000000..749039f --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/common/json/Json.java @@ -0,0 +1,29 @@ +package cn.org.bjca.trust.push.common.json; + +import java.util.List; + +/** + * Created by xuqm on 2016/6/3. + */ +public abstract class Json { + private static Json json; + + Json() { + } + + public static Json get() { + if (json == null) { + json = new GsonImplHelp(); + } + return json; + } + + public abstract String toJson(Object src); + + public abstract T toObject(String json, Class claxx); + + public abstract T toObject(byte[] bytes, Class claxx); + + public abstract List toList(String json, Class claxx); + +} diff --git a/push/src/main/java/cn/org/bjca/trust/push/enums/ConnAckReturnCode.kt b/push/src/main/java/cn/org/bjca/trust/push/enums/ConnAckReturnCode.kt new file mode 100644 index 0000000..5ced4bd --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/enums/ConnAckReturnCode.kt @@ -0,0 +1,15 @@ +package cn.org.bjca.trust.push.enums + +enum class ConnAckReturnCode(value: Int) { + CONNECTED(1), + VERSION_ERROR(2), + SESSION_KEY_ERROR(3), + OS_ERROR(4), + OS_VER_ERROR(5), + CLIENT_ID_ERROR(6), + DEVICE_ID_ERROR(7), + NOT_AUTHENTICATED(8), + CLIENT_NOT_ALLOCATION_TO_THIS_SERVER(9), + UNKNOWN(-1), + CAN_NOT_CONNECT_TO_SERVER(-2); +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/enums/DeviceType.kt b/push/src/main/java/cn/org/bjca/trust/push/enums/DeviceType.kt new file mode 100644 index 0000000..30f5e74 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/enums/DeviceType.kt @@ -0,0 +1,16 @@ +package cn.org.bjca.trust.push.enums + +enum class DeviceType(val value: Int) { + PHONE(1), PAD(2), PC(3), UNKNOWN(-1); + + companion object { + fun getDeviceType(value: Int): DeviceType { + for (item in values()) { + if (item.value == value) { + return item + } + } + return UNKNOWN + } + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..178770a --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt @@ -0,0 +1,6 @@ +package cn.org.bjca.trust.push.enums + +enum class MsgType(val value:Int) { + UNKNOWN(-1), + Text(1) +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/enums/OsType.kt b/push/src/main/java/cn/org/bjca/trust/push/enums/OsType.kt new file mode 100644 index 0000000..ae8e7c8 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/enums/OsType.kt @@ -0,0 +1,17 @@ +package cn.org.bjca.trust.push.enums + + +enum class OsType(val value: Int) { + IOS(1), ANDROID(2), WEB(3), WINDOWS(4), MAC(5), UNKNOWN(-1); + + companion object { + fun getOsType(value: Int): OsType { + for (item in values()) { + if (item.value == value) { + return item + } + } + return UNKNOWN + } + } +} diff --git a/push/src/main/java/cn/org/bjca/trust/push/enums/PacketType.kt b/push/src/main/java/cn/org/bjca/trust/push/enums/PacketType.kt new file mode 100644 index 0000000..8a15ce0 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/enums/PacketType.kt @@ -0,0 +1,12 @@ +package cn.org.bjca.trust.push.enums + +enum class PacketType(value: Int) { + CONNECT(10), +// CONNACK(11), + SEND(20), +// SENDACK(21), +// PINGREQ(30), +// PINGRESP(31), + DISCONNECT(40), + UNKNOWN(-1); +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/enums/QRCodeType.kt b/push/src/main/java/cn/org/bjca/trust/push/enums/QRCodeType.kt new file mode 100644 index 0000000..0e5b0f1 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/enums/QRCodeType.kt @@ -0,0 +1,7 @@ +package cn.org.bjca.trust.push.enums + +enum class QRCodeType { + WINDOWS, + WEB, + MAC; +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/kit/ImClientInterface.kt b/push/src/main/java/cn/org/bjca/trust/push/kit/ImClientInterface.kt new file mode 100644 index 0000000..1b2ef96 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/kit/ImClientInterface.kt @@ -0,0 +1,13 @@ +package cn.org.bjca.trust.push.kit + +import cn.org.bjca.trust.push.message.client.ImConnectOptions +import cn.org.bjca.trust.push.message.msg.SendMessage + +interface ImClientInterface { + fun connect(mImConnectOptions: ImConnectOptions) + fun reConnect() + fun disConnect() + fun isConnect(): Boolean + fun isConnecting(): Boolean + fun sendMessage(msg: SendMessage) +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/kit/SdkInterface.kt b/push/src/main/java/cn/org/bjca/trust/push/kit/SdkInterface.kt index 198e0bd..d68f8b2 100644 --- a/push/src/main/java/cn/org/bjca/trust/push/kit/SdkInterface.kt +++ b/push/src/main/java/cn/org/bjca/trust/push/kit/SdkInterface.kt @@ -1,6 +1,7 @@ package cn.org.bjca.trust.push.kit import android.content.Context +import cn.org.bjca.trust.push.message.msg.Message interface SdkInterface { /** @@ -8,4 +9,10 @@ interface SdkInterface { */ fun register(context: Context, userId: String) fun unregister(context: Context, userId: String) + + /** + * 消息相关 + */ + fun sendMessage(message: Message) + fun sendTextMessage(toUserId:String, msg: String) } \ No newline at end of file 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 7a9af85..aebc150 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 @@ -1,15 +1,77 @@ package cn.org.bjca.trust.push.manager import android.content.Context +import cn.org.bjca.trust.push.BuildConfig +import cn.org.bjca.trust.push.common.CommonHelper +import cn.org.bjca.trust.push.common.DeviceHelper +import cn.org.bjca.trust.push.common.LogHelper +import cn.org.bjca.trust.push.enums.OsType import cn.org.bjca.trust.push.kit.SdkInterface +import cn.org.bjca.trust.push.message.ImCallback +import cn.org.bjca.trust.push.message.ImManager +import cn.org.bjca.trust.push.message.bean.TextMessage +import cn.org.bjca.trust.push.message.msg.Message +import cn.org.bjca.trust.push.message.msg.SendMessage +import cn.org.bjca.trust.push.message.client.ImConnectOptions +import kotlin.random.Random class PushSdkManager : SdkInterface { + lateinit var imConnectOptions: ImConnectOptions + override fun register(context: Context, userId: String) { + //先关闭已有连接 + if (ImManager.instance.isConnect() || ImManager.instance.isConnecting()) { + ImManager.instance.disConnect() + } + if (::imConnectOptions.isInitialized) { + imConnectOptions.clientId = userId + imConnectOptions.host = "192.168.115.173" + imConnectOptions.port = 1883 + imConnectOptions.deviceId = DeviceHelper.getDeviceId() + imConnectOptions.token = "token" + imConnectOptions.osType = OsType.ANDROID + imConnectOptions.sdkVersion = BuildConfig.versionName + } else { + imConnectOptions = ImConnectOptions( + "192.168.115.173", + 1883, + userId, + DeviceHelper.getDeviceId(), + "token", + OsType.ANDROID, + BuildConfig.versionName + ) + } + imConnectOptions.callback = ImCallback() + ImManager.instance.connect(imConnectOptions) } override fun unregister(context: Context, userId: String) { TODO("Not yet implemented") } + + + override fun sendTextMessage(toUserId:String, msg: String) { + + sendMessage(TextMessage().apply { + toClientId = toUserId + text = msg + }) + } + override fun sendMessage(message: Message) { + LogHelper.d("------app端调用发送消息-----") + val sendMessage = SendMessage() + sendMessage.messageId = message.messageId?: CommonHelper.generateMessageId() + sendMessage.timestamp = System.currentTimeMillis() + sendMessage.fromClientId = imConnectOptions.clientId + sendMessage.toClientId = message.toClientId + sendMessage.target = imConnectOptions.clientId + sendMessage.messageType = message.msgType.value + sendMessage.message = message.createContentJsonStr() + + + ImManager.instance.sendMessage(sendMessage) + } } \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/ImCallback.kt b/push/src/main/java/cn/org/bjca/trust/push/message/ImCallback.kt new file mode 100644 index 0000000..9bd9ab3 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/ImCallback.kt @@ -0,0 +1,41 @@ +package cn.org.bjca.trust.push.message + +import cn.org.bjca.trust.push.common.LogHelper +import cn.org.bjca.trust.push.enums.ConnAckReturnCode +import cn.org.bjca.trust.push.enums.OsType +import cn.org.bjca.trust.push.message.msg.SendMessage +import cn.org.bjca.trust.push.message.callback.CallbackListener + +class ImCallback : CallbackListener { + override fun sendComplete(var1: List) { + TODO("Not yet implemented") + } + + override fun sendError(msg: SendMessage) { + TODO("Not yet implemented") + } + + override fun messageArrived(var1: List) { + TODO("Not yet implemented") + } + + override fun connected() { + LogHelper.d("------im连接成功------") + } + + override fun connectionKicked(var1: OsType) { + TODO("Not yet implemented") + } + + override fun connectError(var1: ConnAckReturnCode) { + TODO("Not yet implemented") + } + + override fun connectionLost() { + TODO("Not yet implemented") + } + + override fun exceptionCause(var1: Throwable) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/ImManager.kt b/push/src/main/java/cn/org/bjca/trust/push/message/ImManager.kt new file mode 100644 index 0000000..9fad796 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/ImManager.kt @@ -0,0 +1,15 @@ +package cn.org.bjca.trust.push.message + +import cn.org.bjca.trust.push.kit.ImClientInterface +import cn.org.bjca.trust.push.message.client.ImClient + +object ImManager { + private lateinit var imClientInterface: ImClientInterface + val instance: ImClientInterface + get() { + if (!::imClientInterface.isInitialized) { + imClientInterface = ImClient() + } + return imClientInterface + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/bean/TextMessage.kt b/push/src/main/java/cn/org/bjca/trust/push/message/bean/TextMessage.kt new file mode 100644 index 0000000..7eeac33 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/bean/TextMessage.kt @@ -0,0 +1,42 @@ +package cn.org.bjca.trust.push.message.bean + +import cn.org.bjca.trust.push.common.LogHelper +import cn.org.bjca.trust.push.enums.MsgType +import cn.org.bjca.trust.push.message.msg.Message +import cn.org.bjca.trust.push.message.msg.SendMessage +import org.json.JSONException +import org.json.JSONObject + +class TextMessage : Message() { + var text: String? = null + + init { + this.msgType = MsgType.Text + } + + override fun parse(type: MsgType, sendMessage: SendMessage) { + super.parse(type, sendMessage) + +// if (!(jsonStr instanceof String)) +// return; + try { + val json = sendMessage.message?.let { JSONObject(it) } + if (json != null) { + this.text = json.getString("text") + } + } catch (e: Exception) { + LogHelper.e("消息组装失败", e) + } + } + + override fun createContentJsonStr(): String { + + val json = JSONObject() + try { + json.put("text", this.text) + } catch (e: JSONException) { + LogHelper.e("消息组装失败", e) + } + return json.toString() + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/callback/CallbackListener.kt b/push/src/main/java/cn/org/bjca/trust/push/message/callback/CallbackListener.kt new file mode 100644 index 0000000..a22bc4c --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/callback/CallbackListener.kt @@ -0,0 +1,31 @@ +package cn.org.bjca.trust.push.message.callback + +import cn.org.bjca.trust.push.enums.ConnAckReturnCode +import cn.org.bjca.trust.push.enums.OsType +import cn.org.bjca.trust.push.message.msg.SendMessage + +interface CallbackListener { + // 发送消息完成 + fun sendComplete(msg: List) + + // 发送消息失败 + fun sendError(msg: SendMessage) + + // 消息到达 + fun messageArrived(msg: List) + + // 连接成功 + fun connected() + + // 踢出消息 + fun connectionKicked(var1: OsType) + + // im连接失败 + fun connectError(var1: ConnAckReturnCode) + + // im连接丢失 + fun connectionLost() + + // 其它异常 + fun exceptionCause(var1: Throwable) +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/callback/MqttCallback.kt b/push/src/main/java/cn/org/bjca/trust/push/message/callback/MqttCallback.kt new file mode 100644 index 0000000..f685674 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/callback/MqttCallback.kt @@ -0,0 +1,35 @@ +package cn.org.bjca.trust.push.message.callback + +import cn.org.bjca.trust.push.common.LogHelper +import cn.org.bjca.trust.push.common.json.GsonImplHelp +import cn.org.bjca.trust.push.message.ImManager +import com.xiaomi.push.service.bj.G +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken +import org.eclipse.paho.client.mqttv3.MqttCallback +import org.eclipse.paho.client.mqttv3.MqttMessage +import java.nio.charset.Charset + +class MqttCallback(val callback: CallbackListener?) : MqttCallback { + override fun connectionLost(cause: Throwable?) { + callback?.connectionLost() + LogHelper.e("----------IM断开-------------") + LogHelper.e("----------IM开始重连-------------") + ImManager.instance.reConnect() + } + + override fun messageArrived(topic: String, message: MqttMessage) { + LogHelper.e( + "----------IM收到消息-------------${topic}::${ + String( + message.payload, + Charset.forName("GB2312") + ) + }" + ) + } + + override fun deliveryComplete(token: IMqttDeliveryToken?) { + LogHelper.d("----------IM发送完成-------------${GsonImplHelp.get().toJson(token)}") +// callback?.sendComplete() + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/callback/PingService.kt b/push/src/main/java/cn/org/bjca/trust/push/message/callback/PingService.kt new file mode 100644 index 0000000..7514046 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/callback/PingService.kt @@ -0,0 +1,5 @@ +package cn.org.bjca.trust.push.message.callback + +interface PingService { + fun ping() +} \ No newline at end of file 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 new file mode 100644 index 0000000..cef977f --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt @@ -0,0 +1,83 @@ +package cn.org.bjca.trust.push.message.client + +import cn.org.bjca.trust.push.common.LogHelper +import cn.org.bjca.trust.push.common.json.GsonImplHelp +import cn.org.bjca.trust.push.enums.ConnAckReturnCode +import cn.org.bjca.trust.push.kit.ImClientInterface +import cn.org.bjca.trust.push.message.callback.MqttCallback +import cn.org.bjca.trust.push.message.msg.SendMessage +import org.eclipse.paho.client.mqttv3.MqttClient +import org.eclipse.paho.client.mqttv3.MqttConnectOptions +import org.eclipse.paho.client.mqttv3.MqttException +import org.eclipse.paho.client.mqttv3.MqttMessage +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence + +class ImClient : ImClientInterface { + private lateinit var connectOptions: ImConnectOptions + private lateinit var mqttClient: MqttClient + private lateinit var options: MqttConnectOptions + override fun connect(mImConnectOptions: ImConnectOptions) { + connectOptions = mImConnectOptions + init() + mConnect() + } + + private fun mConnect() { + if (isConnect()) return + try { + mqttClient.connect(options) + mqttClient.subscribe(connectOptions.clientId, 2) + connectOptions.callback?.connected() + } catch (e: java.lang.Exception) { + connectOptions.callback?.connectError(ConnAckReturnCode.CONNECTED) + } + } + + private fun init() { + if (!::mqttClient.isInitialized) { + mqttClient = MqttClient( + "tcp://${connectOptions.host}:${connectOptions.port}", + connectOptions.clientId, + MemoryPersistence() + ) + options = MqttConnectOptions() + options.isCleanSession = true + options.userName = connectOptions.clientId + options.password = "xuqinmin1022".toCharArray() + options.connectionTimeout = connectOptions.connectTimeOutSecond + options.keepAliveInterval = connectOptions.pingInterval + mqttClient.setCallback(MqttCallback(connectOptions.callback)) + } + } + + override fun reConnect() { + init() + mConnect() + } + + override fun disConnect() { + init() + mqttClient.disconnect() + } + + override fun isConnect(): Boolean { + return if (::mqttClient.isInitialized) { + mqttClient.isConnected + } else { + false + } + } + + override fun isConnecting(): Boolean { + return false + } + + override fun sendMessage(msg: SendMessage) { + try { + mqttClient.publish("server", MqttMessage(GsonImplHelp.get().toJson(msg).toByteArray())) + } catch (e: MqttException) { + LogHelper.e("发送消息失败", e) + connectOptions.callback?.sendError(msg) + } + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/client/ImConnectOptions.kt b/push/src/main/java/cn/org/bjca/trust/push/message/client/ImConnectOptions.kt new file mode 100644 index 0000000..9711395 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/client/ImConnectOptions.kt @@ -0,0 +1,25 @@ +package cn.org.bjca.trust.push.message.client + +import cn.org.bjca.trust.push.enums.DeviceType +import cn.org.bjca.trust.push.enums.OsType +import cn.org.bjca.trust.push.enums.QRCodeType +import cn.org.bjca.trust.push.message.callback.CallbackListener +import cn.org.bjca.trust.push.message.callback.PingService + + +class ImConnectOptions( + var host: String, + var port: Int, + var clientId: String, + var deviceId: String, + var token: String, + var osType: OsType, + var sdkVersion: String +) { + var pingInterval = 20 + var timeOut = 60 + var connectTimeOutSecond = 30 + var callback: CallbackListener? = null + var qrCodeType: QRCodeType? = null + var pingService: PingService? = null +} diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/msg/BaseMessage.kt b/push/src/main/java/cn/org/bjca/trust/push/message/msg/BaseMessage.kt new file mode 100644 index 0000000..c92d5f4 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/msg/BaseMessage.kt @@ -0,0 +1,33 @@ +package cn.org.bjca.trust.push.message.msg + +import cn.org.bjca.trust.push.enums.PacketType + + +open class BaseMessage protected constructor(packetType: PacketType) { + private val packetType: PacketType + + init { + this.packetType = packetType + } + + fun getPacketType(): PacketType { + return packetType + } + + open fun getClassz(): Class<*> { + return getClassz(packetType) + } + + open fun getClassz(packetType: PacketType): Class<*> { + return when (packetType) { + PacketType.CONNECT -> ConnectMessage::class.java +// PacketType.CONNACK -> ConnAckMessage::class.java + PacketType.SEND -> SendMessage::class.java +// PacketType.SENDACK -> SendAckMessage::class.java +// PacketType.PINGREQ -> PingReqMessage::class.java +// PacketType.PINGRESP -> PingRespMessage::class.java + PacketType.DISCONNECT -> DisconnectMessage::class.java + else -> throw IllegalStateException("协议类型不正确!") + } + } +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/msg/ConnectMessage.kt b/push/src/main/java/cn/org/bjca/trust/push/message/msg/ConnectMessage.kt new file mode 100644 index 0000000..4be4228 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/msg/ConnectMessage.kt @@ -0,0 +1,19 @@ +package cn.org.bjca.trust.push.message.msg + +import cn.org.bjca.trust.push.enums.DeviceType +import cn.org.bjca.trust.push.enums.OsType +import cn.org.bjca.trust.push.enums.PacketType +import cn.org.bjca.trust.push.enums.QRCodeType +import cn.org.bjca.trust.push.message.msg.BaseMessage + + +class ConnectMessage : BaseMessage(PacketType.CONNECT) { + var sessionKey: String? = null + var osType: OsType? = null + var osVer: String? = null + var deviceType: DeviceType? = null + var token: String? = null + var clientId: String? = null + var deviceId: String? = null + var qrCodeType: QRCodeType? = null +} diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/msg/DisconnectMessage.kt b/push/src/main/java/cn/org/bjca/trust/push/message/msg/DisconnectMessage.kt new file mode 100644 index 0000000..cacf46b --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/msg/DisconnectMessage.kt @@ -0,0 +1,8 @@ +package cn.org.bjca.trust.push.message.msg + +import cn.org.bjca.trust.push.enums.PacketType +import cn.org.bjca.trust.push.message.msg.BaseMessage + +class DisconnectMessage : BaseMessage(PacketType.DISCONNECT) { + var requestCode: Int? = -1 +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt b/push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt new file mode 100644 index 0000000..eabc785 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt @@ -0,0 +1,27 @@ +package cn.org.bjca.trust.push.message.msg + +import cn.org.bjca.trust.push.enums.MsgType +import org.json.JSONException + +abstract class Message { + var messageId: String? = null + var timestamp: Long = 0 + var fromClientId: String? = null + var toClientId: String? = null + var target: String? = null + var msgType: MsgType = MsgType.UNKNOWN + var message: String? = null + var tenantNo: String? = null + + @Throws(JSONException::class) + open fun parse(type: MsgType, sendMessage: SendMessage) { + this.msgType = type + this.messageId = sendMessage.messageId + this.timestamp = sendMessage.timestamp + this.fromClientId = sendMessage.fromClientId + this.toClientId = sendMessage.toClientId + this.target = sendMessage.target + this.tenantNo = sendMessage.tenantNo + } + abstract fun createContentJsonStr(): String +} \ No newline at end of file diff --git a/push/src/main/java/cn/org/bjca/trust/push/message/msg/SendMessage.kt b/push/src/main/java/cn/org/bjca/trust/push/message/msg/SendMessage.kt new file mode 100644 index 0000000..70add10 --- /dev/null +++ b/push/src/main/java/cn/org/bjca/trust/push/message/msg/SendMessage.kt @@ -0,0 +1,16 @@ +package cn.org.bjca.trust.push.message.msg + +import cn.org.bjca.trust.push.enums.PacketType +import cn.org.bjca.trust.push.message.msg.BaseMessage + +class SendMessage : BaseMessage(PacketType.SEND) { + var messageId: String? = null + var timestamp: Long = 0 + var fromClientId: String? = null + var toClientId: String? = null + var target: String? = null + var messageType = 0 + var message: String? = null + var tenantNo: String? = null + +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index e0cb222..e854207 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,6 +10,9 @@ pluginManagement { url 'http://nexus.51trust.net/repository/maven-public/' allowInsecureProtocol true } + maven { + url "https://repo.eclipse.org/content/repositories/paho-releases/" + } } } dependencyResolutionManagement {