环信


环信官网

环信SDK下载

环信API文档


准备工作:

1. 创建应用  (开放注册)

2. 下载SDK并导入

    so文件导入方法:

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }


3. 配置权限

<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.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" />

3. 在MyApplication初始化,并配置在AndroidManifest

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        EMOptions options = new EMOptions();
        options.setAcceptInvitationAlways(false);   //改为添加好友需要验证
        ...
        EMClient.getInstance().init(this, options); //初始化
    }
}

4. 配置AndroidManifest

<application
    android:name=".MyApplication"
    ...>
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- 设置环信应用的AppKey -->
    <meta-data
        android:name="EASEMOB_APPKEY"
        android:value="1151161212178708#huanxin" />	//此处为在官网创建应用的“应用标识(AppKey)”

    <!-- 声明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>
</application>

代码操作:

一、注册登录:

5. 注册

EMClient.getInstance().createAccount(username, pwd);

6. 登录

EMClient.getInstance().login(userName,password,new EMCallBack() {    //回调
    @Override
    public void onSuccess() {    //成功
        EMClient.getInstance().groupManager().loadAllGroups();
        EMClient.getInstance().chatManager().loadAllConversations();
        Log.e("TAG", "登录成功!");        
    }
 
    @Override    //登录进度
    public void onProgress(int progress, String status) { 
    }
 
    @Override    //登录出错
    public void onError(int code, String message) {
        Log.e("TAG", "登录失败!");
    }
});

7. 退出登录

EMClient.getInstance().logout(true);    //同步方法 
EMClient.getInstance().logout(true, new EMCallBack() {    //异步方法         
    @Override
    public void onSuccess() {         
    }
     
    @Override
    public void onProgress(int progress, String status) {        
    }
     
    @Override
    public void onError(int code, String message) {
    }
});

8. 自动登录

默认打开,如果关闭,在MyApplication里面设置 

options.setAutoLogin(false);

9. 注册连接状态监听(判断是否连接上网)

EMClient.getInstance().addConnectionListener(new MyConnectionListener());
 
//实现ConnectionListener接口
private class MyConnectionListener implements EMConnectionListener {
    @Override
    public void onConnected() {    //已经连接上
    }
    @Override
    public void onDisconnected(final int error) {    //未连接上
        runOnUiThread(new Runnable() { 
            @Override
            public void run() {
                if(error == EMError.USER_REMOVED){    //帐号被移除
                    
                }else if (error == EMError.USER_LOGIN_ANOTHER_DEVICE) {    //帐号在其他设备登录
                   
                } else {
                    if (NetUtils.hasNetwork(MainActivity.this)) {    //有网络,但连接不到服务器
                        //连接不到聊天服务器
                    } else {    //无网络

                    } 
                }
            }
        });
    }
}

二、好友管理

1. 获取好友列表

List<String> usernames = EMClient.getInstance().contactManager().getAllContactsFromServer();

2. 查找好友 

SDK 不提供好友查找的服务,如需要查找好友,需要调用开发者自己服务器的用户查询接口。
为了保证查找到的好友可以添加,需要将开发者自己服务器的用户数据(用户的环信 ID),通过 SDK 的后台接口导入到环信服务器中。

3. 添加好友

EMClient.getInstance().contactManager().addContact(toAddUsername, reason);

4.删除好友

EMClient.getInstance().contactManager().deleteContact(username);

5.同意好友请求

默认自动同意好友请求,需要在MyApplication初始化时候更改

opptions.setAcceptInvitationAlways(false);
EMClient.getInstance().contactManager().acceptInvitation(username);

6.拒绝好友请求

EMClient.getInstance().contactManager().declineInvitation(username);

7.监听好友状态事件

EMClient.getInstance().contactManager().setContactListener(new EMContactListener() {    
   @Override
   public void onContactAgreed(String username) {    //好友请求被同意   
   }
    
   @Override
   public void onContactRefused(String username) {    //好友请求被拒绝   
   }
    
   @Override
   public void onContactInvited(String username, String reason) {    //收到好友邀请   
   }
    
   @Override
   public void onContactDeleted(String username) {    //被删除时回调此方法   
   }
    
    
   @Override
   public void onContactAdded(String username) {    //增加了联系人时回调此方法   
   }
});

8.黑名单

①从服务器获取黑名单列表
EMClient.getInstance().contactManager().getBlackListFromServer();
②从本地db获取黑名单列表
EMClient.getInstance().contactManager().getBlackListUsernames();
③把用户加入到黑名单
EMClient.getInstance().contactManager().addUserToBlackList(username,true);    //是否不能给黑名单用户发送消息 true不能 false能
④把用户从黑名单中移除
EMClient.getInstance().contactManager().removeUserFromBlackList(username);

三、消息管理



四、群组管理




五、聊天室管理




六、实时通话



七、红包



八、设置当前登录用户的推送昵称

注意:如果集成了 GCM 或者小米推送,昵称的设置也适用于此类推送消息。 当 Android 手机向 iPhone 手机发消息的时候,如果 iPhone 手机不在线,则需要通过苹果的 APNS 做消息推送,这时候如果不设置昵称,就会使用默认的环信 ID 作为用户名显示在 iPhone 手机上影响用户体验,推荐使用这里提到的方法设置昵称。
此方法主要为了在苹果推送时能够推送昵称(nickname)而不是 userid,一般可以在登录成功后从自己服务器获取到个人信息,然后拿到 nickname 更新到环信服务器。
如果个人的昵称被更改,也要去环信服务器更新下 nickname 防止显示差异。

//此方法传入一个字符串String类型的参数,返回成功或失败的一个Boolean类型的返回值
EMClient.getInstance().updateCurrentUserNick(nickname);















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值