sy_im_sdk 0.3.6 copy "sy_im_sdk: ^0.3.6" to clipboard
sy_im_sdk: ^0.3.6 copied to clipboard

Flutter SYIM Plugin for iOS and Android

sy_im_sdk #

依赖SDK #

下载依赖包 #

    flutter pub get

iOS

    在 iOS 项目的 podfile 头部中添加私有索引库
    source 'http://code.bestsiyuhz.com/zgl/sypodspec.git'
    source 'https://github.com/CocoaPods/Specs.git'

    然后在 ios 工程根目录执行:
    pod install --repo-update

初始化SDK #

构造SDK配置 #

    SyOptions syOptions = SyOptions();
    syOptions.appId = "您的AppID";
    syOptions.secret = "您的secret";
    //SDK运行环境
    syOptions.environment=SyEnvironmentEnum.prod;

调用初始化方法: #

    SyClient.getInstance().init(syOptions: syOptions);

用户登录 #

通过业务方UUID登录 #

    SyClient.getInstance().loginByUUID(
        uuid: "uuid", // 第三方 uuid, 测试使用, 正式请使用 token 方式登录
        callback: SyCallBack(
            onSuccess: (authInfo) {
                //todo 处理登录成功逻辑
            }, 
            onFail: (code, msg) {
                //todo 处理登录失败逻辑
            })
    );

通过token登录 #

    SyClient.getInstance().loginByToken(
        token: "token",
        callback: SyCallBack(
            onSuccess: (authInfo) {
                //todo 处理登录成功逻辑
            }, 
            onFail: (code, msg) {
                //todo 处理登录失败逻辑
            })
    );   

会话管理 #

创建会话(无用户信息) #

    SyClient.getInstance().conversationManager().createSignConversationByUid(userId: userId, callback: SyCallBack<SyConversation>(
        onSuccess: (conversation) {
          /*会回调会话的信息*/
          /*sessionId 是会话id,发送消息需要*/
          var sessionId =  conversation.sessionId;
          /*会话中对方存在sdk服务器的用户信息*/
          var info = conversation.contact;
        },
        onFail: (code, msg) {
          /*错误*/
        })
    );

创建会话(有用户信息) #

    SyContact contact =SyContact();
    //contact.userId 为必传字段,其他信息可以根据业务需要自行增加
    contact.userId="";
    contact.avatar="";
    contact.nickName="";
    SyClient.getInstance().conversationManager().createSignConversationByContact(contact: contact, callback: SyCallBack<SyConversation>(
        onSuccess: (conversation) {
          // conversation 回调会话的信息
          // conversation.sessionId 是会话id,发送消息需要*/
        },
        onFail: (code, msg) {
            //处理错误信息
        })
    );

获取会话列表 #

     SyClient.getInstance().conversationManager().getConversationList(
        callback: SyCallBack<List<SyConversation>>(onSuccess: (conversationList) {
          /*会话列表*/
        }, 
        onFail: (code, msg) {
          /*异常*/
        })
    );

初始化会话监听 #

    ConversationListener listener = ConversationListener((conversationList) {
    
    });

注册会话监听 #

    SyClient.getInstance().conversationManager().addConversationListener(listener);

移除会话监听 #

    SyClient.getInstance().conversationManager().removeConversationListener(listener);

会话开启聊天 #

    SyClient.getInstance().conversationManager().addChatting(sessionId);

会话退出聊天 #

    SyClient.getInstance().conversationManager().removeChatting(sessionId);

重置会话未读消息数量 #

    SyClient.getInstance().conversationManager().restUnReadCount(sessionId);

获取单个会话未读消息数量 #

    int num = await SyClient.getInstance().conversationManager().getUnReadNum(sessionId);

获取所有群聊会话未读消息数量 #

    int num = await SyClient.getInstance().conversationManager().getAllUnReadNumBySessionType(sessionType: SessionType.GROUP); 

获取所有单聊会话未读消息数量 #

    int num = await SyClient.getInstance().conversationManager().getAllUnReadNumBySessionType(sessionType: SessionType.PRIVATE); 

获取所有会话未读消息数量 #

    int num = await SyClient.getInstance().conversationManager().getAllUnReadNum();

刷新所有会话未读消息数量 #

传入会话类型按照会话类型刷新:

    SyClient.getInstance().conversationManager().restAllUnReadNum(sessionType: SessionTypeEnum.group);

不传入类型刷新所有会话

    SyClient.getInstance().conversationManager().restAllUnReadNum();

聊天管理 #

获取聊天记录 #

    SyMessage syMessage = SyMessage();
    syMessage.msgTimeStamp = DateTime.timestamp().millisecond;
    syMessage.sessionId = "会话ID";
    int pageSize = 20;
    SyClient.getInstance().chatManager().getMessageList(
        starMessage: syMessage,
        pageSize: pageSize,
        callBack: SyCallBack(
            onSuccess: (messageList) {
                //todo 处理消息
                }, 
            onFail: (code, error) {
                //todo 处理查询失败
            })
    );

发送消息 #

     _getReceiveUserInfo() {
        SyContact receiveUserInfo = SyContact();
        receiveUserInfo.userId = "消息接收人用户ID";
        receiveUserInfo.avatar = "接收人头像";
        receiveUserInfo.nickName = "消息接收人用户昵称";
        return receiveUserInfo;
    }

    //发送文本消息
    _sendTxtMessage(String content) {
        SyMessage syMessage = SyMessage.buildTxtMsg(_getReceiveUserInfo(), "会话ID");
        syMessage.content=content;
        SyClient.getInstance().chatManager().sendMessage(
            syMessage: syMessage,
            callBack: SyCallBack(onSuccess: (syMessage) {
            //todo 发送成功回调
            }, 
                onFail: (code, error) {
            //todo 发送失败回调
            })
        );
    }
    
    //发送图片消息(传入图片URI地址)
    _sendImgMessage(Uri uri) {
        SyMessage syMessage = SyMessage.buildImgMsg(_getReceiveUserInfo(), sessionId);
        syMessage.uri=uri;
        SyClient.getInstance().chatManager().sendMessage(
            syMessage: syMessage,
            callBack: SyCallBack(onSuccess: (syMessage) {
                //todo 发送成功回调
            }, 
            onFail: (code, error) {
                //todo 发送失败回调
            })
        );
    }
    
    //发送自定义消息
    _sendCustomMessage(String content) {
            SyMessage syMessage = SyMessage.buildCustomMsg(_getReceiveUserInfo(), sessionId);
            syMessage.content=content;
            SyClient.getInstance().chatManager().sendMessage(
                syMessage: syMessage,
                callBack: SyCallBack(onSuccess: (syMessage) {
                //todo 发送成功回调
                }, 
                onFail: (code, error) {
                //todo 发送失败回调
                })
        );
    }

保存消息到本地 #

    SyMessage syMessage = SyMessage.buildTxtMsg(_getReceiveUserInfo(), content);

    SyClient.getInstance().chatManager().saveMessageToLocal(
        syMessage: syMessage,
        callBack: SyCallBack(
            onSuccess: (syMessage) {
            //todo 保存成功回调
            }, 
            onFail: (code, error) {
            //todo 保存失败回调
            },
        ),
    );    

删除消息 #

    SyClient.getInstance().chatManager().deleteMessage(
      msgId: "消息ID",
      sessionId: '会话ID',
      callBack: SyCallBack(
        onSuccess: (bool status) {
          //todo 处理删除成功逻辑
        },
        onFail: (String code, String error) {
          //todo 处理删除失败逻辑
        },
      ),
    );

消息监听 #

    1、初始化消息监听

    OnMessageListener onMessageListener=OnMessageListener(
        onMessage: (List<SyMessage> syMessage) {
            //todo 处理新消息
        },
        onStatusChange: (List<SyMessage> syMessage) {
            //todo 处理状态变更消息
        },
    )
    2、注册消息监听
    
    SyClient.getInstance().chatManager().addMessageListener(onMessageListener);

    3、移除消息监听

    SyClient.getInstance().chatManager().removeMessageListener(onMessageListener);

数据枚举 #

会话类型 #

package:sy_im_sdk/common/enum/session_type_enum.dart

消息状态 #

package:sy_im_sdk/common/enum/msg_status_enum.dart

消息类型 #

package:sy_im_sdk/common/enum/msg_type_enum.dart
1
likes
0
points
1
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter SYIM Plugin for iOS and Android

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, json_annotation, plugin_platform_interface, uuid

More

Packages that depend on sy_im_sdk

Packages that implement sy_im_sdk