@@ -0,0 +1 @@ | |||
PushDemo |
@@ -2,6 +2,9 @@ | |||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:tools="http://schemas.android.com/tools"> | |||
<queries> | |||
<package android:name="com.tencent.mm" /> | |||
</queries> | |||
<application | |||
android:name="cn.org.bjca.trust.Myapplication" | |||
android:allowBackup="true" | |||
@@ -14,6 +17,7 @@ | |||
android:theme="@style/Theme.PushDemo" | |||
android:usesCleartextTraffic="true" | |||
tools:targetApi="31"> | |||
<activity | |||
android:name=".LoginActivity" | |||
android:exported="true"> | |||
@@ -29,7 +33,7 @@ | |||
</activity> | |||
<activity | |||
android:name=".MainActivity" | |||
android:exported="true"/> | |||
android:exported="true" /> | |||
</application> | |||
</manifest> |
@@ -1,17 +1,16 @@ | |||
package cn.org.bjca.trust.pushdemo | |||
import android.annotation.SuppressLint | |||
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.push.enums.OsType | |||
import cn.org.bjca.trust.push.message.bean.TextMessage | |||
import cn.org.bjca.trust.push.message.callback.CallbackListener | |||
import cn.org.bjca.trust.push.message.msg.Message | |||
import cn.org.bjca.trust.pushdemo.databinding.ActivityMainBinding | |||
import com.xuqm.base.extensions.loge | |||
import com.xuqm.base.ui.BaseActivity | |||
class MainActivity : BaseActivity<ActivityMainBinding>() { | |||
@@ -21,32 +20,63 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { | |||
override fun initView(savedInstanceState: Bundle?) { | |||
super.initView(savedInstanceState) | |||
PushSdk.instance.register("xuqinmin") | |||
PushSdk.instance.setMsgCallback(object : CallbackListener { | |||
override fun sendComplete(msg: Message) { | |||
} | |||
override fun sendError(code: String, msg: Message) { | |||
} | |||
val r = registerForActivityResult(ActivityResultContracts.GetContent()) { | |||
it.loge() | |||
SendMessageHelper.sendImageMessage( | |||
"xuqinmin", MediaStore.Images.Media.getBitmap( | |||
contentResolver, it | |||
) | |||
) | |||
} | |||
@SuppressLint("SetTextI18n") | |||
override fun messageArrived(msg: Message) { | |||
if (msg.msgType == MsgType.Text) { | |||
binding.register.text = | |||
"收到来自${msg.fromClientId}的消息:${(msg as TextMessage).text}" | |||
} | |||
} | |||
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)) | |||
override fun connected() { | |||
} | |||
} | |||
override fun connectionKicked(var1: OsType) { | |||
} | |||
override fun connectError(code: String) { | |||
LogHelper.e(code) | |||
} | |||
override fun connectionLost() { | |||
} | |||
override fun exceptionCause(var1: Throwable) { | |||
} | |||
}) | |||
binding.send.setOnClickListener { | |||
SendMessageHelper.sendTextMessage("xuqm", "hello${System.currentTimeMillis()}") | |||
// r.launch("image/*") | |||
// val i = Intent(Intent.ACTION_VIEW); | |||
// val guanzhu_URL = "http://weixin.qq.com/r/STn7497EyYO2rZqA92xb"; | |||
//// val guanzhu_URL = "http://weixin.qq.com/q/02XqFpkZY9c-C1uvxyxAco"; | |||
// i.data = Uri.parse(guanzhu_URL); | |||
// i.setPackage("com.tencent.mm"); | |||
// i.putExtra(Intent.EXTRA_SUBJECT, "Share"); | |||
// i.flags = Intent.FLAG_ACTIVITY_NEW_TASK; | |||
// startActivity(i); | |||
// | |||
// | |||
SendMessageHelper.sendTextMessage( | |||
if (binding.user.text.isNullOrEmpty()) "xuqm" else binding.user.text.toString(), | |||
"hello${System.currentTimeMillis()}" | |||
) | |||
} | |||
binding.sendG.setOnClickListener { | |||
SendMessageHelper.sendTextMessage("G_hfisoahfisaohdisa", "hello,Group_${System.currentTimeMillis()}") | |||
// r.launch("image/*") | |||
SendMessageHelper.sendTextMessage( | |||
"G_hfisoahfisaohdisa", | |||
"hello,Group_${System.currentTimeMillis()}" | |||
) | |||
} | |||
} | |||
@@ -10,16 +10,26 @@ | |||
<TextView | |||
android:id="@+id/register" | |||
android:layout_width="wrap_content" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="注册im服务" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
android:text="新消息" | |||
android:layout_marginTop="15dp" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.08" /> | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
<TextView | |||
<EditText | |||
android:id="@+id/user" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
android:layout_marginBottom="10dp" | |||
android:text="xuqm" | |||
android:hint="请输入消息接收人" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintBottom_toTopOf="@+id/send" | |||
/> | |||
<Button | |||
android:id="@+id/send" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
@@ -29,7 +39,7 @@ | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.188" /> | |||
<TextView | |||
<Button | |||
android:id="@+id/sendG" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
@@ -38,15 +48,6 @@ | |||
android:layout_marginTop="10dp" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toBottomOf="@+id/send" /> | |||
<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> |
@@ -5,5 +5,5 @@ import retrofit2.http.Path | |||
interface PushService { | |||
@GET("hello/{id}") | |||
suspend fun getArticle(@Path("id") id: Int): HttpResult<String> | |||
suspend fun getArticle(@Path("id") id: String): HttpResult<String> | |||
} |
@@ -2,13 +2,17 @@ package cn.org.bjca.trust.push.manager | |||
import android.content.Context | |||
import cn.org.bjca.trust.push.BuildConfig | |||
import cn.org.bjca.trust.push.api.PushService | |||
import cn.org.bjca.trust.push.common.DeviceHelper | |||
import cn.org.bjca.trust.push.common.LogHelper | |||
import cn.org.bjca.trust.push.di.manager.HttpManager | |||
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.callback.CallbackListener | |||
import cn.org.bjca.trust.push.message.client.ImConnectOptions | |||
import kotlinx.coroutines.runBlocking | |||
class PushSdkManager : SdkInterface { | |||
@@ -23,15 +27,15 @@ class PushSdkManager : SdkInterface { | |||
private fun registerPush(userId: String) {} | |||
private fun registerIm(userId: String) { | |||
// runBlocking { | |||
// HttpManager.getApi( | |||
// HttpManager.getAppComponent("http://192.168.115.137:8080"), | |||
// PushService::class.java | |||
// ) | |||
// .getArticle(42) | |||
// }.also { | |||
// LogHelper.e(it, "初始化登录") | |||
// } | |||
runBlocking { | |||
HttpManager.getApi( | |||
HttpManager.getAppComponent("https://xuqinmin.com"), | |||
PushService::class.java | |||
) | |||
.getArticle(userId) | |||
}.also { | |||
LogHelper.e(it, "初始化登录") | |||
} | |||
//先关闭已有连接 | |||
if (ImManager.instance.isConnect() || ImManager.instance.isConnecting()) { | |||
@@ -40,7 +44,7 @@ class PushSdkManager : SdkInterface { | |||
if (::imConnectOptions.isInitialized) { | |||
imConnectOptions.clientId = userId | |||
imConnectOptions.host = "192.168.115.137" | |||
imConnectOptions.host = "114.115.203.60" | |||
imConnectOptions.port = 18883 | |||
imConnectOptions.deviceId = DeviceHelper.getDeviceId() | |||
imConnectOptions.token = "token" | |||
@@ -48,7 +52,7 @@ class PushSdkManager : SdkInterface { | |||
imConnectOptions.sdkVersion = BuildConfig.versionName | |||
} else { | |||
imConnectOptions = ImConnectOptions( | |||
"192.168.115.137", | |||
"114.115.203.60", | |||
18883, | |||
userId, | |||
DeviceHelper.getDeviceId(), | |||
@@ -53,8 +53,9 @@ class ImClient : ImClientInterface { | |||
} catch (e: MqttException) { | |||
LogHelper.e("--------", e) | |||
connectOptions.callback?.connectError(ERROR_CONNECTED) | |||
} finally{ | |||
isConnecting = false | |||
} | |||
isConnecting = false | |||
}.start() | |||
} | |||
@@ -68,7 +69,7 @@ class ImClient : ImClientInterface { | |||
options = MqttConnectOptions() | |||
options.isCleanSession = true | |||
options.userName = connectOptions.clientId | |||
options.password = "xuqinmin".toCharArray() | |||
options.password = connectOptions.clientId.toCharArray() | |||
options.connectionTimeout = connectOptions.connectTimeOutSecond | |||
options.keepAliveInterval = connectOptions.pingInterval | |||
options.isAutomaticReconnect = true | |||
@@ -7,6 +7,7 @@ abstract class Message { | |||
var messageId: String? = null | |||
var timestamp: Long = 0 | |||
var fromClientId: String? = null | |||
var describe: String? = null | |||
var toClientId: String? = null | |||
var target: String? = null | |||
var msgType: MsgType = MsgType.UNKNOWN | |||
@@ -19,6 +20,7 @@ abstract class Message { | |||
this.messageId = sendMessage.messageId | |||
this.timestamp = sendMessage.timestamp | |||
this.fromClientId = sendMessage.fromClientId | |||
this.describe = sendMessage.fromClientId | |||
this.toClientId = sendMessage.toClientId | |||
this.target = sendMessage.target | |||
this.tenantNo = sendMessage.tenantNo | |||
@@ -32,6 +34,7 @@ abstract class Message { | |||
val sb = StringBuffer() | |||
sb.append("id: $messageId\n") | |||
sb.append("from: $fromClientId\n") | |||
sb.append("describe: $describe\n") | |||
sb.append("to: $toClientId\n") | |||
sb.append("type: $msgType\n") | |||
sb.append("timestamp: $timestamp\n") | |||