Android 消息收发 UI SDK

个人聊天页面

进入个人聊天页面,调用CGSDKClientImpl.getInstance().enterSingleChat(contactV5Id)

enterSingleChat()参数说明:

  • contactV5Id 对方的v5Id,每一个在露脸云注册的用户都有这个字段

群聊天页面

开发者通过后台调用露脸云后台创建群组后,会得到群组的id,拿到群组id后,调用CGSDKClientImpl.getInstance().enterGroupChat(groupV5Id)即可进入群聊天页面。

enterGroupChat()参数说明:

  • groupV5Id 群的v5Id, 在露脸云后台创建的群组会生成对应的id

消息收发

1. 消息发送

在个人或群聊天页面的输入框里输入文字并发送、选择图片、拍摄短视频或录语音,即会通过消息服务发送给对方或群组,对方或群组其他人就会收到消息。

2. 消息接收

如果用户在线时,消息会通过消息服务推送过来,如果离线,则会在下次登录时通过拉取离线消息获得。
开发者可以实现CGSDKClient.MessageListener接口,并调用CGSDKClientImpl.getInstance().addMessageListener(listener)注册到SDK中,即可接收到推送的消息,消息包括个人消息、群组消息和系统消息。

CGSDKClient.MessageListener接口内容:

    interface MessageListener {
 
        /**
         * Called when a message is received
         *
         * @param message
         */
        void onReceiveMsg(DuduMessage message);
 
         /**
         * This method will be invoked when user pressing 'Forward' in sdk UI.
         * Developer can implement it to start customized contact selecting page to select contacts to forward.
         *
         * @param message
         *      message to forward
         */
        void forwardMsg(DuduMessage message);
    }

不需要MessageListener时,需要调用CGSDKClientImpl.getInstance().removeMessageListener(listener)将之前添加的listener移除,防止内存泄漏。

3. 消息转发

在SDK提示的聊天界面中,长按文字、语音或小视频消息,或者在看大图的界面的下拉菜单中可以选择转发。开发者可以实现CGSDKClient.MessageListener接口中的void forwardMsg(DuduMessage message),即可调用自定义的联系人或群组选择界面,选择好后,再调用CGSDKClientImpl.getInstance().batchSendMessage(contactV5IdArray, groupV5IdArray, message)将消息发送出去。

batchSendMessage()接口说明:

  • contactV5IdArray 联系人Vcloud ID列表
  • groupV5IdArray 群组Vcloud ID列表
  • message 要发送的消息

4. 离线消息

在成功连接上消息服务后,SDK会自动去拉取离线消息,离线消息是分多次从服务器拉取,每次返回后,会通过CGSDKClient.MessageListener中的void onReceiveOfflineMsgs(DuduMessage[] messages)接口返回给开发者。

界面逻辑注入

有时开发者需要使用SDK的内部逻辑,但是想用自己的界面来替换,这时可以使用界面逻辑注入。

开发者可以实现UILogicHandler接口,并在通过CGSDKClientCreator创建CGSDKClient对象的时候配置,实现自定义界面的替换(参见初始化 SDK)。

public interface UILogicHandler {
 
    /**
     * Show single chat page by contact id
     * @param contactV5Id
     *      vcloud id of contact
     */
    void showSingleChatPage(String contactV5Id);
 
    /**
     * Show group chat page by group id
     * @param groupV5Id
     *      vcloud id of group
     */
    void showGroupChatPage(String groupV5Id);
 
    /**
     * Show video calling page
     * @param contactV5Id
     *      calling contact vcloud id
     */
    void showVideoCallingPage(String contactV5Id);
 
    /**
     * Show video incoming page
     * @param reconnect
     *      if network service needs reconnect
     */
    void showVideoIncomingPage(boolean reconnect);
 
    /**
     * Show video living page
     */
    void showVideoLivingPage();
 
    /**
     * Return the activity which contains chat page
     * @return
     */
    Class<? extends Activity> getActivityForChat();
}