@@ -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' | |||
@@ -9,8 +9,11 @@ class MainActivity : AppCompatActivity() { | |||
override fun onCreate(savedInstanceState: Bundle?) { | |||
super.onCreate(savedInstanceState) | |||
setContentView(R.layout.activity_main) | |||
findViewById<TextView>(R.id.tv).setOnClickListener { | |||
PushSdk.instance.register(this, "xuqm") | |||
findViewById<TextView>(R.id.register).setOnClickListener { | |||
PushSdk.instance.register(this, "xuqinmin") | |||
} | |||
findViewById<TextView>(R.id.send).setOnClickListener { | |||
PushSdk.instance.sendTextMessage("xuqinmin", "你好啊") | |||
} | |||
} | |||
@@ -7,13 +7,25 @@ | |||
tools:context=".MainActivity"> | |||
<TextView | |||
android:id="@+id/tv" | |||
android:id="@+id/register" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="Hello World!" | |||
android:text="注册im服务" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.08" /> | |||
<TextView | |||
android:id="@+id/send" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="发送消息" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.188" /> | |||
</androidx.constraintlayout.widget.ConstraintLayout> |
@@ -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 | |||
} | |||
} | |||
// 添加仓库地址 | |||
@@ -1,5 +1,8 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> | |||
<!-- 网络相关权限 --> | |||
<uses-permission android:name="android.permission.INTERNET" /> | |||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |||
<application> | |||
<provider | |||
@@ -1,5 +1,7 @@ | |||
package cn.org.bjca.trust.push.common | |||
import java.util.* | |||
object CommonHelper { | |||
@JvmStatic | |||
fun anyToString(value: Any?): String { | |||
@@ -15,4 +17,6 @@ object CommonHelper { | |||
} | |||
} | |||
} | |||
@JvmStatic | |||
fun generateMessageId(): String = UUID.randomUUID().toString() | |||
} |
@@ -0,0 +1,22 @@ | |||
package cn.org.bjca.trust.push.common | |||
import cn.org.bjca.trust.push.db.DbHelper | |||
object DeviceHelper { | |||
@JvmStatic | |||
fun getDeviceId(): String { | |||
val device = DbHelper.getDataBase().deviceDao().getAll() | |||
if (device.isEmpty()) { | |||
throw Throwable("获取设备信息失败") | |||
} | |||
return device[0].device | |||
} | |||
@JvmStatic | |||
fun getManufacturer(): String { | |||
val device = DbHelper.getDataBase().deviceDao().getAll() | |||
if (device.isEmpty()) { | |||
throw Throwable("获取设备信息失败") | |||
} | |||
return device[0].manufacturer | |||
} | |||
} |
@@ -0,0 +1,54 @@ | |||
package cn.org.bjca.trust.push.common.json; | |||
import com.google.gson.Gson; | |||
import com.google.gson.JsonArray; | |||
import com.google.gson.JsonElement; | |||
import com.google.gson.JsonParser; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
/** | |||
* Created by xuqm on 2016/6/3. | |||
*/ | |||
public class GsonImplHelp extends Json { | |||
private final Gson gson = new Gson(); | |||
@Override | |||
public String toJson(Object src) { | |||
return gson.toJson(src); | |||
} | |||
@Override | |||
public <T> T toObject(String json, Class<T> claxx) { | |||
return gson.fromJson(json, claxx); | |||
} | |||
@Override | |||
public <T> T toObject(byte[] bytes, Class<T> claxx) { | |||
return gson.fromJson(new String(bytes), claxx); | |||
} | |||
public <T> List<T> toList(String json, Class<T> clazz) { | |||
JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray(); | |||
List<T> list = new ArrayList<>(); | |||
for (JsonElement jsonElement : jsonArray) { | |||
list.add(gson.fromJson(jsonElement, clazz)); //cls | |||
} | |||
return list; | |||
} | |||
public static <T> List<T> stringToArray(String s, Class<T[]> cls) { | |||
T[] array = new Gson().fromJson(s, cls); | |||
return Arrays.asList(array); | |||
} | |||
} |
@@ -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> T toObject(String json, Class<T> claxx); | |||
public abstract <T> T toObject(byte[] bytes, Class<T> claxx); | |||
public abstract <T> List<T> toList(String json, Class<T> claxx); | |||
} |
@@ -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); | |||
} |
@@ -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 | |||
} | |||
} | |||
} |
@@ -0,0 +1,6 @@ | |||
package cn.org.bjca.trust.push.enums | |||
enum class MsgType(val value:Int) { | |||
UNKNOWN(-1), | |||
Text(1) | |||
} |
@@ -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 | |||
} | |||
} | |||
} |
@@ -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); | |||
} |
@@ -0,0 +1,7 @@ | |||
package cn.org.bjca.trust.push.enums | |||
enum class QRCodeType { | |||
WINDOWS, | |||
WEB, | |||
MAC; | |||
} |
@@ -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) | |||
} |
@@ -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) | |||
} |
@@ -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) | |||
} | |||
} |
@@ -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<SendMessage>) { | |||
TODO("Not yet implemented") | |||
} | |||
override fun sendError(msg: SendMessage) { | |||
TODO("Not yet implemented") | |||
} | |||
override fun messageArrived(var1: List<SendMessage>) { | |||
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") | |||
} | |||
} |
@@ -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 | |||
} | |||
} |
@@ -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() | |||
} | |||
} |
@@ -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<SendMessage>) | |||
// 发送消息失败 | |||
fun sendError(msg: SendMessage) | |||
// 消息到达 | |||
fun messageArrived(msg: List<SendMessage>) | |||
// 连接成功 | |||
fun connected() | |||
// 踢出消息 | |||
fun connectionKicked(var1: OsType) | |||
// im连接失败 | |||
fun connectError(var1: ConnAckReturnCode) | |||
// im连接丢失 | |||
fun connectionLost() | |||
// 其它异常 | |||
fun exceptionCause(var1: Throwable) | |||
} |
@@ -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() | |||
} | |||
} |
@@ -0,0 +1,5 @@ | |||
package cn.org.bjca.trust.push.message.callback | |||
interface PingService { | |||
fun ping() | |||
} |
@@ -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) | |||
} | |||
} | |||
} |
@@ -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 | |||
} |
@@ -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("协议类型不正确!") | |||
} | |||
} | |||
} |
@@ -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 | |||
} |
@@ -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 | |||
} |
@@ -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 | |||
} |
@@ -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 | |||
} |
@@ -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 { | |||