融云集成

1:导入imkits包,这里面包括imkit和imlibs两个moudle,导入

2:修改imlib清单中的appkey;

   <meta-data
            android:name="RONG_CLOUD_APP_KEY"
            android:value="******" />

3:imkit下清单中需要注册provide

 <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="包名.FileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/rc_file_path" />

        </provider>

<paths>
    <external-path name="rc_external_path" path="."/>
</paths>

4:项目中只简单的使用聊天室,所以只需要使用conversation详情界面;

    首先项目中创建新的ConversationActivity,布局文件中只需要直接使用fragment;

    

<fragment
        android:id="@+id/conversation"
        android:name="io.rong.imkit.fragment.ConversationFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

title等可自己定义;

清单中需要修改conversationActivity的属性

   <activity
            android:name=".ConversationActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="包名"
                    android:pathPrefix="/conversation/"
                    android:scheme="rong" />
            </intent-filter>
        </activity>

5:初始化application中

RongIM.init(this); 
 RongIM.setOnReceiveMessageListener(new ReceiveMessageListener());
    public class ReceiveMessageListener implements RongIMClient.OnReceiveMessageListener  {
        @Override
        public boolean onReceived(Message message, int i) {
            return false;
        }
    }

6:链接融云服务器需要参数token(后台返回)

  RongIM.connect(token, new RongIMClient.ConnectCallback() {

                /**
                 * Token 错误。可以从下面两点检查 1.  Token 是否过期,如果过期您需要向 App Server 重新请求一个新的 Token
                 *                  2.  token 对应的 appKey 和工程里设置的 appKey 是否一致
                 */
                @Override
                public void onTokenIncorrect() {
                    Log.d("MainActivity", "--onTokenIncorrect" );
                }

                /**
                 * 连接融云成功
                 * @param userid 当前 token 对应的用户 id
                 */
                @Override
                public void onSuccess(String userid) {
                    Log.d("MainActivity", "--onSuccess" + userid);

                }

                /**
                 * 连接融云失败
                 * @param errorCode 错误码,可到官网 查看错误码对应的注释
                 */
                @Override
                public void onError(RongIMClient.ErrorCode errorCode) {
                    Toast.makeText(MainActivity.this,"error"+errorCode,Toast.LENGTH_LONG).show();
                 
                }
            });

7:

 RongIM.getInstance().joinExistChatRoom(roomId, 20, new RongIMClient.OperationCallback() {

                        @Override
                        public void onSuccess() {


                        }

                        @Override
                        public void onError(RongIMClient.ErrorCode errorCode) {
                            Toast.makeText(MainActivity.this,"error"+errorCode,Toast.LENGTH_LONG).show();
                        }
                    });

加入已存在的聊天室,第一个参数roomid,第二个加载聊天记录条数

跳转聊天界面:

RongIM.getInstance().startConversation(getActivity(), Conversation.ConversationType.CHATROOM, roomid, title);

8:修改聊天记录item的布局:

    imkit下找到rc_item_conversation.xml

    如圆形图片修改头像为

app:RCShape="square"
9:

TargetSdkVersion 为24时,找不到libsqlite.so,导致连上无法连接服务器。

解决办法:降低sdkversion或者下载对应的libsqlite.so

下载地址libsqlite.so








猜你喜欢

转载自blog.csdn.net/qq_23025319/article/details/80860448