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. mRtmClient-н setParameters 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