Aurora JMessage: IM インスタント メッセージング統合グループ チャットのシンプルな実装 (独自のバックエンドとデータベースを構築する必要はありません)

1. Jiguangアカウントを登録し、アプリケーションを作成します

ウェブサイト:ホーム - オーロラ

2. SDK を統合します。

1. mavenCentral() をプロジェクトの build.gradle に追加します。

buildscript {
    repositories {
        ...
        mavenCentral()
    }
    ...
}

allprojects {
    repositories {
        ...
        mavenCentral()
    }
}

 

2. アプリの build.gradle に依存関係を追加します。

dependencies {
    ...
    implementation 'cn.jiguang.sdk:jmessage:2.9.2'  // 此处以JMessage 2.9.2 版本为例。
    implementation 'cn.jiguang.sdk:jcore:2.3.0'  // 此处以JCore 2.3.0 版本为例。
}

Jiguang プラットフォームで作成したアプリケーションの ndk とキーも宣言します。

android {
    ...
    defaultConfig {
        applicationId "您自己的包名"
        ...
        ndk {
            //选择要添加的对应 cpu 类型的 .so 库。
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                JPUSH_APPKEY : "创建应用那里的AppKey", //JPush 上注册的包名对应的 Appkey.
                JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
        ]
    }

3. 初期のプロジェクト宣言作業:

1. AndroidManifest.xml は必要な権限を宣言します。これが欠落している場合は、エラーが報告されます。

<uses-permission android:name="您自己的包名.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

2. サービスを宣言する必要があります。このサービスは JCommonService を継承します。サービスには何も記述する必要はありません。

import cn.jpush.android.service.JCommonService;
public class MyJService extends JCommonService {
}

AndroidManifest.xml:

<!-- Since JCore2.0.0 Required SDK核心功能-->
<!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false -->
<!-- 这个是自定义Service,要继承极光JCommonService,可以在更多手机平台上使得推送通道保持的更稳定 -->
<service android:name=".MyJService"
    android:enabled="true"
    android:exported="false"
    android:process=":pushcore">
    <intent-filter>
        <action android:name="cn.jiguang.user.service.action" />
    </intent-filter>
</service>

4. コードの実装を開始します。

1. アプリケーションで JMessage を初期化します。

import android.app.Application;
import cn.jpush.im.android.api.JMessageClient;

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        JMessageClient.setDebugMode(true);
        JMessageClient.init(this);
    }
}

このアプリケーションを AndroidManifest.xml で宣言することを忘れないでください。

<application
    android:name=".MyApp"
    ...
    >
</application>

2. アカウントを登録します: (Jiguang プラットフォームでも管理できます)

JMessageClient.register(账号字符串, 密码字符串, new BasicCallback() {
    @Override
    public void gotResult(int i, String s) {
        //i == 0则是成功,否则就是失败,失败原因是s
    }
});

3. ログインアカウント:

JMessageClient.login(账号字符串, 密码字符串, new BasicCallback() {
    @Override
    public void gotResult(int i, String s) {
        if(i == 0){
            //登录成功,跳转到聊天列表界面
        }else {
            showToast("登录失败:"+s);
        }
    }
});

4. ログイン情報を取得します (ログインしているかどうかを判断するために使用できます。null が取得された場合は、ログインしていません)。

JMessageClient.getMyInfo();

5. ログアウトします。

JMessageClient.logout();

6. グループ チャットにテキスト メッセージを送信します。

/**
 * 创建一条群聊文本信息,此方法是创建message的快捷接口,对于不需要关注会话实例的开发者可以使用此方法
 * 快捷的创建一条消息。其他的情况下推荐使用{@link Conversation#createSendMessage(MessageContent)}
 * 接口来创建消息
 *
 * @param groupID 群组的groupID
 * @param text    文本内容
 * @return 消息对象
 */
Message message = JMessageClient.createGroupTextMessage(groupId, text);
addMessage(message);//上屏,把发送的信息显示到UI列表上面,方法自己实现
message.setOnSendCompleteCallback(new BasicCallback() {
    @Override
    public void gotResult(int responseCode, String responseDesc) {
        if (responseCode == 0) {
            //消息发送成功
            showToast("消息发送成功");
            //清空输入框
            etMsg.setText("");
        } else {
            //消息发送失败
            showToast("消息发送失败");
            //todo 失败的其他处理,比如显示小红感叹号
        }
    }
});
JMessageClient.sendMessage(message);

7. メッセージを受信します。

//声明一个接收消息的内部类,里面有俩方法,一个在线接收消息,一个离线接收消息
private class RegisterEventReceiver{
    public void onEvent(MessageEvent event){
        //do your own business
        Message newMessage = event.getMessage();//获取此次离线期间会话收到的新消息列表
        Log.i(TAG, "onEvent: "+newMessage.toJson());
        recycler.post(()->{
            adapter.addMessages(newMessage);
            recycler.scrollToPosition(adapter.getItemCount()-1);
        });

    }
    public void onEvent(OfflineMessageEvent event){
        //do your own business
        List<Message> newMessages = event.getOfflineMessageList();//获取此次离线期间会话收到的新消息列表
        recycler.post(()->{
            adapter.addMessages(newMessages);
            recycler.scrollToPosition(adapter.getItemCount()-1);
        });
        for (Message newMessage : newMessages) {
            Log.i(TAG, "离线消息:"+newMessage.toJson());
        }
    }
}

private RegisterEventReceiver receiver;
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    receiver = new RegisterEventReceiver();
    //注册接收者
    JMessageClient.registerEventReceiver(receiver);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    //解注册
    JMessageClient.unRegisterEventReceiver(receiver);
}

その他の具体的な参考資料:

Jiguang IM - IM 統合ガイド - Jiguang Documentation


Guess you like

Origin blog.csdn.net/qq_35584878/article/details/122058848