環(huán)信的集成
1驮履、注冊
1.打開首頁
2.點擊注冊,選擇注冊即時通信云
圖片.png
3.輸入注冊信息
圖片.png
4.選擇個人開發(fā)者
圖片.png
5.去郵箱激活賬號
圖片.png
6.登錄
圖片.png
7.登錄后廉嚼,有一個默認的app
8.在這個默認的app中新建兩個user
7.在應(yīng)用信息界面玫镐,點擊創(chuàng)建
圖片.png
8.創(chuàng)建應(yīng)用
圖片.png
注冊模式選擇授權(quán)模式
2、集成
1.下載demo
2.新建工程
3.將easy導入怠噪,注意恐似,android studio最新版默認自持androidx
4.新工程的app module需要依賴easyui
5.
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
6.新工程的manifes中需要添加:
<meta-data
android:name="EASEMOB_APPKEY"
android:value="1106201125030909#demo" /> <!-- 聲明SDK所需的service SDK核心功能 -->
<service
android:name="com.hyphenate.chat.EMChatService"
android:exported="true" />
<service
android:name="com.hyphenate.chat.EMJobService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" /> <!-- 聲明SDK所需的receiver -->
<receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
<!-- 可選filter -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
注意app key需要修改
7.新建App類,繼承于Application
8.App中做初始化
EMOptions options = new EMOptions();
//EaseUI初始化
if (EaseUI.getInstance().init(getApplicationContext(), options)) {
//在做打包混淆時傍念,關(guān)閉debug模式矫夷,避免消耗不必要的資源
EMClient.getInstance().setDebugMode(true);
//EaseUI初始化成功之后再去調(diào)用注冊消息監(jiān)聽的代碼
}
9.權(quán)限
10.
Cleartext HTTP traffic葛闷,可以講target sdk 改為26
android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
11、登錄
private void login() {
EMClient.getInstance().login("u1", "123", new EMCallBack(){
@Override
public void onSuccess() {
Log.i("Simon", "login onSuccess");
}
@Override
public void onError(int code, String error) {
Log.i("Simon", "login onError: " + code + " msg: " + error);
}
@Override
public void onProgress(int progress, String status) {
}
});
}
12双藕、登出
EMClient.getInstance().logout(true, new EMCallBack() {
@Override
public void onSuccess() {
Log.i("Simon", "logout onSuccess");
}
@Override
public void onError(int code, String error) {
Log.i("Simon", "logout onError: " + code + " msg: " + error);
}
@Override
public void onProgress(int progress, String status) {
}
});
13淑趾、打開會話頁面
Intent intent = new Intent(MainActivity.this, ChatActivity.class);
//username為對方的環(huán)信id
intent.putExtra(EaseConstant.EXTRA_USER_ID, "u2");
startActivity(intent);
public class ChatActivity extends AppCompatActivity {
EaseChatFragment chatFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
//use EaseChatFratFragment
chatFragment = new EaseChatFragment();
//pass parameters to chat fragment
chatFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(R.id.container, chatFragment).commit();
}
}
14、
public class ConversationListFragment extends EaseConversationListFragment {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
conversationListView = view.findViewById(R.id.list);
conversationListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
EMConversation conversation = conversationListView.getItem(position);
String username = conversation.conversationId();
if (username.equals(EMClient.getInstance().getCurrentUser()))
Toast.makeText(getActivity(), R.string.Cant_chat_with_yourself, Toast.LENGTH_SHORT).show();
else {
// start chat acitivity
Intent intent = new Intent(getActivity(), ChatActivity.class);
if(conversation.isGroup()){
if(conversation.getType() == EMConversation.EMConversationType.ChatRoom){
// it's group chat
intent.putExtra(EaseConstant.EXTRA_CHAT_TYPE, EaseConstant.CHATTYPE_CHATROOM);
}else{
intent.putExtra(EaseConstant.EXTRA_CHAT_TYPE, EaseConstant.CHATTYPE_GROUP);
}
}
// it's single chat
intent.putExtra(EaseConstant.EXTRA_USER_ID, username);
startActivity(intent);
}
}
});
}
}
public class ConversationListActivity extends AppCompatActivity {
ConversationListFragment mConversationListFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversation_list);
//use EaseChatFratFragment
mConversationListFragment = new ConversationListFragment();
getSupportFragmentManager().beginTransaction().add(R.id.container, mConversationListFragment).commit();
}
}
參考:
http://docs-im.easemob.com/im/android/other/easeuiintegration#%E5%88%9D%E5%A7%8B%E5%8C%96easeui