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