Browse Source

外网访问

master
xuqm 1 year ago
parent
commit
5147deb599
8 changed files with 100 additions and 56 deletions
  1. +1
    -0
      .idea/.name
  2. +5
    -1
      app/src/main/AndroidManifest.xml
  3. +55
    -25
      app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt
  4. +17
    -16
      app/src/main/res/layout/activity_main.xml
  5. +1
    -1
      push/src/main/java/cn/org/bjca/trust/push/api/PushService.kt
  6. +15
    -11
      push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt
  7. +3
    -2
      push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt
  8. +3
    -0
      push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt

+ 1
- 0
.idea/.name View File

@@ -0,0 +1 @@
PushDemo

+ 5
- 1
app/src/main/AndroidManifest.xml View File

@@ -2,6 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">


<queries>
<package android:name="com.tencent.mm" />
</queries>
<application <application
android:name="cn.org.bjca.trust.Myapplication" android:name="cn.org.bjca.trust.Myapplication"
android:allowBackup="true" android:allowBackup="true"
@@ -14,6 +17,7 @@
android:theme="@style/Theme.PushDemo" android:theme="@style/Theme.PushDemo"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:targetApi="31"> tools:targetApi="31">

<activity <activity
android:name=".LoginActivity" android:name=".LoginActivity"
android:exported="true"> android:exported="true">
@@ -29,7 +33,7 @@
</activity> </activity>
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"/>
android:exported="true" />
</application> </application>


</manifest> </manifest>

+ 55
- 25
app/src/main/java/cn/org/bjca/trust/pushdemo/MainActivity.kt View File

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


import android.annotation.SuppressLint
import android.os.Bundle 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.PushSdk
import cn.org.bjca.trust.push.common.GraphicHelper
import cn.org.bjca.trust.push.common.LogHelper 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.common.SendMessageHelper
import cn.org.bjca.trust.push.enums.MsgType 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 cn.org.bjca.trust.pushdemo.databinding.ActivityMainBinding
import com.xuqm.base.extensions.loge
import com.xuqm.base.ui.BaseActivity import com.xuqm.base.ui.BaseActivity


class MainActivity : BaseActivity<ActivityMainBinding>() { class MainActivity : BaseActivity<ActivityMainBinding>() {
@@ -21,32 +20,63 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {


override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState) 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 { 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 { binding.sendG.setOnClickListener {
SendMessageHelper.sendTextMessage("G_hfisoahfisaohdisa", "hello,Group_${System.currentTimeMillis()}")
// r.launch("image/*")
SendMessageHelper.sendTextMessage(
"G_hfisoahfisaohdisa",
"hello,Group_${System.currentTimeMillis()}"
)
} }


} }


+ 17
- 16
app/src/main/res/layout/activity_main.xml View File

@@ -10,16 +10,26 @@


<TextView <TextView
android:id="@+id/register" android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" 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_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="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:id="@+id/send"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -29,7 +39,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.188" /> app:layout_constraintVertical_bias="0.188" />
<TextView
<Button
android:id="@+id/sendG" android:id="@+id/sendG"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -38,15 +48,6 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/send" /> 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> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

+ 1
- 1
push/src/main/java/cn/org/bjca/trust/push/api/PushService.kt View File

@@ -5,5 +5,5 @@ import retrofit2.http.Path


interface PushService { interface PushService {
@GET("hello/{id}") @GET("hello/{id}")
suspend fun getArticle(@Path("id") id: Int): HttpResult<String>
suspend fun getArticle(@Path("id") id: String): HttpResult<String>
} }

+ 15
- 11
push/src/main/java/cn/org/bjca/trust/push/manager/PushSdkManager.kt View File

@@ -2,13 +2,17 @@ package cn.org.bjca.trust.push.manager


import android.content.Context import android.content.Context
import cn.org.bjca.trust.push.BuildConfig 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.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.enums.OsType
import cn.org.bjca.trust.push.kit.SdkInterface import cn.org.bjca.trust.push.kit.SdkInterface
import cn.org.bjca.trust.push.message.ImCallback import cn.org.bjca.trust.push.message.ImCallback
import cn.org.bjca.trust.push.message.ImManager import cn.org.bjca.trust.push.message.ImManager
import cn.org.bjca.trust.push.message.callback.CallbackListener import cn.org.bjca.trust.push.message.callback.CallbackListener
import cn.org.bjca.trust.push.message.client.ImConnectOptions import cn.org.bjca.trust.push.message.client.ImConnectOptions
import kotlinx.coroutines.runBlocking


class PushSdkManager : SdkInterface { class PushSdkManager : SdkInterface {


@@ -23,15 +27,15 @@ class PushSdkManager : SdkInterface {
private fun registerPush(userId: String) {} private fun registerPush(userId: String) {}
private fun registerIm(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()) { if (ImManager.instance.isConnect() || ImManager.instance.isConnecting()) {
@@ -40,7 +44,7 @@ class PushSdkManager : SdkInterface {


if (::imConnectOptions.isInitialized) { if (::imConnectOptions.isInitialized) {
imConnectOptions.clientId = userId imConnectOptions.clientId = userId
imConnectOptions.host = "192.168.115.137"
imConnectOptions.host = "114.115.203.60"
imConnectOptions.port = 18883 imConnectOptions.port = 18883
imConnectOptions.deviceId = DeviceHelper.getDeviceId() imConnectOptions.deviceId = DeviceHelper.getDeviceId()
imConnectOptions.token = "token" imConnectOptions.token = "token"
@@ -48,7 +52,7 @@ class PushSdkManager : SdkInterface {
imConnectOptions.sdkVersion = BuildConfig.versionName imConnectOptions.sdkVersion = BuildConfig.versionName
} else { } else {
imConnectOptions = ImConnectOptions( imConnectOptions = ImConnectOptions(
"192.168.115.137",
"114.115.203.60",
18883, 18883,
userId, userId,
DeviceHelper.getDeviceId(), DeviceHelper.getDeviceId(),


+ 3
- 2
push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt View File

@@ -53,8 +53,9 @@ class ImClient : ImClientInterface {
} catch (e: MqttException) { } catch (e: MqttException) {
LogHelper.e("--------", e) LogHelper.e("--------", e)
connectOptions.callback?.connectError(ERROR_CONNECTED) connectOptions.callback?.connectError(ERROR_CONNECTED)
} finally{
isConnecting = false
} }
isConnecting = false
}.start() }.start()
} }


@@ -68,7 +69,7 @@ class ImClient : ImClientInterface {
options = MqttConnectOptions() options = MqttConnectOptions()
options.isCleanSession = true options.isCleanSession = true
options.userName = connectOptions.clientId options.userName = connectOptions.clientId
options.password = "xuqinmin".toCharArray()
options.password = connectOptions.clientId.toCharArray()
options.connectionTimeout = connectOptions.connectTimeOutSecond options.connectionTimeout = connectOptions.connectTimeOutSecond
options.keepAliveInterval = connectOptions.pingInterval options.keepAliveInterval = connectOptions.pingInterval
options.isAutomaticReconnect = true options.isAutomaticReconnect = true


+ 3
- 0
push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt View File

@@ -7,6 +7,7 @@ abstract class Message {
var messageId: String? = null var messageId: String? = null
var timestamp: Long = 0 var timestamp: Long = 0
var fromClientId: String? = null var fromClientId: String? = null
var describe: String? = null
var toClientId: String? = null var toClientId: String? = null
var target: String? = null var target: String? = null
var msgType: MsgType = MsgType.UNKNOWN var msgType: MsgType = MsgType.UNKNOWN
@@ -19,6 +20,7 @@ abstract class Message {
this.messageId = sendMessage.messageId this.messageId = sendMessage.messageId
this.timestamp = sendMessage.timestamp this.timestamp = sendMessage.timestamp
this.fromClientId = sendMessage.fromClientId this.fromClientId = sendMessage.fromClientId
this.describe = sendMessage.fromClientId
this.toClientId = sendMessage.toClientId this.toClientId = sendMessage.toClientId
this.target = sendMessage.target this.target = sendMessage.target
this.tenantNo = sendMessage.tenantNo this.tenantNo = sendMessage.tenantNo
@@ -32,6 +34,7 @@ abstract class Message {
val sb = StringBuffer() val sb = StringBuffer()
sb.append("id: $messageId\n") sb.append("id: $messageId\n")
sb.append("from: $fromClientId\n") sb.append("from: $fromClientId\n")
sb.append("describe: $describe\n")
sb.append("to: $toClientId\n") sb.append("to: $toClientId\n")
sb.append("type: $msgType\n") sb.append("type: $msgType\n")
sb.append("timestamp: $timestamp\n") sb.append("timestamp: $timestamp\n")


Loading…
Cancel
Save