Skip to main content

android

SDK татаж авах

  • Доор байрлах Github repository-н app/libs/libqrtm.aar file-г өөрийн төсөл дотор libs folder нээн хадгалах.

  • SDK-г build.gradle дээр нэмэх


dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar'])
}
  • SDK-г ашигласан жишээ код: Доор байрлах Github repository-н src/main/java/com/suhang/activity/

Github --> https://github.com/beegi22/PlatformRTM-Android

Шаардлагатай сангууд суулгах

1. libqrtm.aar file-г libs folder-т байршуулах
2. build.gradle дээр бусад нэмэх сан, тохиргоонууд

// Шинэ хувилбарыг (version) дэмжихгүй байх магадлалтай тул доорх хувилбарын дагуу суулгана уу
android {
compileSdkVersion 33

defaultConfig {
minSdkVersion 21
targetSdkVersion 33
versionCode 1
versionName "1.0"

ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

// build.gradle дээр нэмэгдэх сангууд
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar'])
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.recyclerview:recyclerview:1.3.1'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
implementation 'com.lovedise:permissiongen:0.0.6'
implementation 'com.nabinbhandari.android:permissions:3.8'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation("com.squareup.okhttp3:logging-interceptor:4.3.0")
implementation 'org.xutils:xutils:3.5.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'com.getkeepsafe.relinker:relinker:1.4.0'
}
3. AndroidManifest.xml дээр нэмэгдэх permission

<?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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

...

</manifest>

SDK-г үүсгэж, ашиглах

1. RtmClient class-н createInstance method-г ашиглан RtmClient-н шинэ объект үүсгэнэ

RtmClient mRtmClient = RtmClient.createInstance(mContext, appID, new RtmClientListener() {
@Override
public void onConnectionStateChanged(int state, int reason) {
for (RtmClientListener listener : mListenerList) {
listener.onConnectionStateChanged(state, reason);
}
}

@Override
public void onMessageReceived(RtmMessage rtmMessage, String peerId) {
if (mListenerList.isEmpty()) {
// If currently there is no callback to handle this
// message, this message is unread yet. Here we also
// take it as an offline message.
mMessagePool.insertOfflineMessage(rtmMessage, peerId);
} else {
for (RtmClientListener listener : mListenerList) {
listener.onMessageReceived(rtmMessage, peerId);
}
}
}

@Override
public void onTokenExpired() {

}

@Override
public void onTokenPrivilegeWillExpire() {

}

@Override
public void onPeersOnlineStatusChanged(Map<String, Integer> status) {

}
});
2. mRtmClientsetParameters method-г ашиглан серверийн хаягийг оруулна.

    mRtmClient.setParameters("{\"rtm.serverurl\": \"wss://serverUrl/\"}") // 0.0.0.0-н оронд зөв хаягийг оруулна
3. mRtmClient.login(String token, String userId, callback)
  • token: String - Rtm-д нэвтрэхэд ашиглагдах Token. Back-end дээр үүсгэнэ. (https://www.npmjs.com/package/rtc-token)

  • userId: String - Rtm-д бусад хэрэглэгчдэд харагдах хэрэглэгчийн ID

  • callback: login method хийгдэж дууссаны дараа хийгдэх функц ( ResultCallback-г ашиглах )


  new ResultCallback<Void>() {
@Override
public void onSuccess(Void responseInfo) {
// Амжилттай үед
}

@Override
public void onFailure(ErrorInfo errorInfo) {
// Амжилтгүй үед
}
}

Sdk-г rtm серверээc гаргах

mRtmClient.logout(callback)
  • callback: logout method хийгдэж дууссаны дараа хийгдэх функц ( ResultCallback-г ашиглах )

  new ResultCallback<Void>() {
@Override
public void onSuccess(Void responseInfo) {
// Амжилттай үед
}

@Override
public void onFailure(ErrorInfo errorInfo) {
// Амжилтгүй үед
}
}

Sdk-г идэвхгүй болгох

mRtmClient.release()

Бусад хэрэглэгч рүү мессеж илгээх

mRtmClient.sendMessageToPeer(String userId, RtmMessage message, callback)
  • userId: Мессеж илгээх хэрэглэгчийн ID

  • message: RtmMessage-н объект ( mRtmClient-н createMessage() method-г ашиглан үүсгэнэ. )

  • callback: sendMessage method хийгдэж дууссаны дараа хийгдэх функц ( ResultCallback-г ашиглах )


public abstract class RtmMessage {
public RtmMessage() {
}

public abstract void setText(String var1);
public abstract String getText();
public abstract void setRawMessage(byte[] var1);
public abstract void setRawMessage(byte[] var1, String var2);
public abstract byte[] getRawMessage();
public abstract int getMessageType();
public abstract long getServerReceivedTs();
public abstract boolean isOfflineMessage();
}
  • RtmMessage үүсгэх, мессеж оруулах

    RtmMessage message = mRtmClient.createMessage();
message.setText("Явуулах мессежээ оруулна");
  • sendMessage method хийгдэж дууссаны дараа хийгдэх функц

    new ResultCallback<Void>>() {
@Override
public void onSuccess(Void Void) {
// Амжилттай үед
}

@Override
public void onFailure(ErrorInfo errorInfo) {
// Амжилтгүй үед
}
}

Мессеж channel үүсгэх

mRtmClient createChannel( String name, RtmChannelListener listener ) method-г ашиглан RtmChannel-н шинэ объект үүсгэнэ
  • name: Channel-н нэр

  • listener: RtmChannelListener interface-с үүсгэсэн listener


RtmChannel mRtmChannel = mRtmClient.createChannel(mChannelName, new MyChannelListener());
class MyChannelListener implements RtmChannelListener {
@Override
public void onMemberCountUpdated(int i) {
// Хэрэглэгчийн тоо өөрчлөгдөх үед
}

@Override
public void onMessageReceived(final RtmMessage message, final RtmChannelMember fromMember) {
// Бусад хэрэглэгчээс мессеж ирэх үед
}

@Override
public void onMemberJoined(RtmChannelMember member) {
// Хэрэглэгч нэмэгдэх үед
}

@Override
public void onMemberLeft(RtmChannelMember member) {
// Хэрэглэгч гарах үед
}
}

Мессеж channel-д орох

mRtmChannel.join(callback)
  • callback: join method хийгдэж дууссаны дараа хийгдэх функц ( ResultCallback-г ашиглах )

  new ResultCallback<Void>() {
@Override
public void onSuccess(Void responseInfo) {
// Амжилттай үед
}

@Override
public void onFailure(ErrorInfo errorInfo) {
// Амжилтгүй үед
}
}

Channel-д байгаа хэрэглэгчийн жагсаалт авах

mRtmChannel.getMembers(callback)
  • callback: join method хийгдэж дууссаны дараа хийгдэх функц ( ResultCallback-г ашиглах )

    public abstract class RtmChannelMember {
public RtmChannelMember() {
}

public abstract String getUserId(); // Хэрэглэгчийн ID

public abstract String getChannelId(); // Channel-н ID
}
    new ResultCallback<List<RtmChannelMember>>() {
@Override
public void onSuccess(final List<RtmChannelMember> responseInfo) {
// Амжилттай үед
}

@Override
public void onFailure(ErrorInfo errorInfo) {
// Амжилтгүй үед
}
}

Channel руу мессеж илгээх

mRtmChannel.sendMessage(RtmMessage message, callback)
  • message: RtmMessage-н объект ( mRtmClient-н createMessage() method-г ашиглан үүсгэнэ. )

  • callback: sendMessage method хийгдэж дууссаны дараа хийгдэх функц ( ResultCallback-г ашиглах )


public abstract class RtmMessage {
public RtmMessage() {
}

public abstract void setText(String var1);
public abstract String getText();
public abstract void setRawMessage(byte[] var1);
public abstract void setRawMessage(byte[] var1, String var2);
public abstract byte[] getRawMessage();
public abstract int getMessageType();
public abstract long getServerReceivedTs();
public abstract boolean isOfflineMessage();
}
  • RtmMessage үүсгэх, мессеж оруулах

    RtmMessage message = mRtmClient.createMessage();
message.setText("Явуулах мессежээ оруулна");
  • sendMessage method хийгдэж дууссаны дараа хийгдэх функц

    new ResultCallback<Void>>() {
@Override
public void onSuccess(Void Void) {
// Амжилттай үед
}

@Override
public void onFailure(ErrorInfo errorInfo) {
// Амжилтгүй үед
}
}

Listener (RtmClientListener)

Sdk-н төлөв өөрчлөгдөх үед

onConnectionStateChanged(int state, int reason)
  • state: Серверийн холбоосыг илэрхийлсэн тоо

  • reason: Солигдсон шалтгааныг илэрхийлсэн тоо


    // state
CONNECTION_STATE_DISCONNECTED = 1
CONNECTION_STATE_CONNECTING = 2
CONNECTION_STATE_CONNECTED = 3
CONNECTION_STATE_RECONNECTING = 4
CONNECTION_STATE_ABORTED = 5

// reason
CONNECTION_CHANGE_REASON_LOGIN = 1
CONNECTION_CHANGE_REASON_LOGIN_SUCCESS = 2
CONNECTION_CHANGE_REASON_LOGIN_FAILURE = 3
CONNECTION_CHANGE_REASON_LOGIN_TIMEOUT = 4
CONNECTION_CHANGE_REASON_INTERRUPTED = 5
CONNECTION_CHANGE_REASON_LOGOUT = 6
CONNECTION_CHANGE_REASON_BANNED_BY_SERVER = 7
CONNECTION_CHANGE_REASON_REMOTE_LOGIN = 8
CONNECTION_CHANGE_REASON_TOKEN_EXPIRED = 9

Бусад хэрэглэгчдээс мессеж ирэх үед

onMessageReceived(RtmMessage rtmMessage, String peerId)
  • message: Бусад хэрэглэгчдээс ирсэн мессеж RtmMessage-н объект

public abstract class RtmMessage {
public RtmMessage() {
}

public abstract void setText(String var1);
public abstract String getText();
public abstract void setRawMessage(byte[] var1);
public abstract void setRawMessage(byte[] var1, String var2);
public abstract byte[] getRawMessage();
public abstract int getMessageType();
public abstract long getServerReceivedTs();
public abstract boolean isOfflineMessage();
}

Бусад хэрэглэгчдийн төлөв өөрчлөгдөх үед

onPeersOnlineStatusChanged(Map status)
  • status: Хэрэглэгчдийн төлөвийг агуулсан Map

  • key: String - Хэрэглэгчийн ID

  • value: int - Хэрэглэгчийн төлөвийг илэрхийлсэн тоо


    ONLINE = 0
UNREACHABLE = 1
OFFLINE = 2

Listener (RtmChannelListener)

Channel-д байгаа хэрэглэгчдийн тоо өөрчлөгдөх үед

onMemberCountUpdated(int userCount)
  • userCount: Хэрэглэгчдийн тоо

Channel-д бусад хэрэглэгчдээс мессеж ирэх үед

onMessageReceived(RtmMessage message, RtmChannelMember fromMember)
  • message: Бусад хэрэглэгчдээс ирсэн мессеж RtmMessage-н объект

  • fromMember: Мессеж илгээсэн хэрэглэгчийн мэдээлэл RtmChannelMember-н объект


public abstract class RtmChannelMember {
public RtmChannelMember() {
}

public abstract String getUserId();
public abstract String getChannelId();
}

public abstract class RtmMessage {
public RtmMessage() {
}

public abstract void setText(String var1);
public abstract String getText();
public abstract void setRawMessage(byte[] var1);
public abstract void setRawMessage(byte[] var1, String var2);
public abstract byte[] getRawMessage();
public abstract int getMessageType();
public abstract long getServerReceivedTs();
public abstract boolean isOfflineMessage();
}

Channel-д хэрэглэгч орох үед

onMemberJoined(RtmChannelMember member)
  • member: Channel-д орсон хэрэглэгчийн мэдээлэл RtmChannelMember-н объект

public abstract class RtmChannelMember {
public RtmChannelMember() {
}

public abstract String getUserId();
public abstract String getChannelId();
}

Channel-с хэрэглэгч гарах үед

onMemberLeft(RtmChannelMember member)
  • member: Channel-с гарсан хэрэглэгчийн мэдээлэл RtmChannelMember-н объект

public abstract class RtmChannelMember {
public RtmChannelMember() {
}

public abstract String getUserId();
public abstract String getChannelId();
}