4
函数说明
4.1.
初始化与资源释放
4.1.1.
初始化SDK
INT InitSDK(INT osver, INT flags)
功能:初始化SDK
返回值:0表示成功,否则为出错代码
参数:
osver Android平台API版本,系统常量:android.os.Build.VERSION.SDK_INT
flags 功能模式组合,默认为0,参考WIN32平台SDK的InitSDK的参数dwFuncMode定义
备注:
功能模式组合可根据实际的需求灵活定义,如果在后续的方法调用中失败,则很有可能是某一项功能没有被定义,默认为0,SDK内部会自动设置常用的标志。
该方法必须第一个被调用(SetSDKOptionString方法除外),否则后续的其它方法调用将会返回没有初始化错误。
4.1.2.
设置基本事件通知接口
public void SetBaseEvent(AnyChatBaseEvent e);
功能:只有设置基本事件通知接口后,AnyChat内核产生的异步事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatBaseEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,
第 23 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
4.1.3.
设置状态变化事件接口
public void SetStateChgEvent(AnyChatStateChgEvent e);
功能:只有设置状态变化事件通知接口后,AnyChat内核产生的状态变化事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatStateChgEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
4.1.4.
设置私聊消息通知接口
public void SetPrivateChatEvent(AnyChatPrivateChatEvent e);
功能:只有设置私聊事件通知接口后,AnyChat内核产生的私聊事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatPrivateChatEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
第 24 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
4.1.5.
设置文字聊天消息接口
public void SetTextMessageEvent(AnyChatTextMsgEvent e);
功能:只有设置文字聊天消息接口后,AnyChat内核产生的文字聊天事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatTextMsgEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
4.1.6.
设置数据传输消息接口
public void SetTransDataEvent(AnyChatTransDataEvent e);
功能:只有设置数据传输消息接口后,AnyChat内核产生的数据传输事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatTransDataEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
数据传输接口内部实现了缓冲区传输、扩展缓冲区传输、文件传输等传输数据的异步事件通知接口。
第 25 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
4.1.7.
释放SDK资源
INT Release(VOID);
功能:释放SDK占用的所有资源
返回值:0表示成功,否则为出错代码
参数:
无。
备注:
该方法必须最后一个被调用,调用该方法后,SDK内部所占用的资源将被释放,如果在其后面再调用其它的方法,将会返回没有初始化的错误。
该方法通常在上层应用退出系统时被调用,即最后一个Activity销毁时调用,而中间Activity销毁时不需要,也不能调用该方法。
4.2.
登录流程
4.2.1.
设置服务器认证密码
INT SetServerAuthPass(STRING Password);
功能:设置服务器连接认证密码,确保SDK能正常连接到服务器。
返回值:0表示成功,否则为出错代码
参数:
lpPassword 认证密码(大小写敏感);
备注:
为了防止未授权SDK连接服务器,在服务器配置文件(AnyChatCoreServer.ini)中可设置“SDKAuthPass”,如果该配置项被设置,当SDK连接服务器时,会将该方法所传入的密码加密后传输到服务器,服务器再比较是否合法,如果密码不正确,则连接将被断开。如果该配置项未被设置(配置文件默认),则无论该方法是否被调用,SDK均可正常连接到服务器。 第 26 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
4.2.2.
连接服务器
INT Connect(STRING ServerAddr, INT Port);
功能:用于与服务器建立连接。
返回值:0表示成功,否则为出错代码
参数:
lpServerAddr 服务器IP地址,或是网站域名(URL)地址;
dwPort 服务端口号(默认为8906)
备注:
返回值为0并不表示连接服务器成功,仅表示SDK已成功收到连接服务器的指令,如果连接成功,或是失败,都将会通过相应的接口通知上层应用,这里是一个异步的过程。
4.2.3.
登录系统
INT Login(STRING UserName, STRING Password);
功能:登录服务器,请求身份认证。
返回值:0表示成功,否则为出错代码
参数:
lpUserName 注册用户名;
lpPassword 登录密码(为空表示游客);
备注:
该方法可以连接系统之后立即调用,而不用关心连接系统是否成功,当SDK连接系统成功之后,如果之前调用过该方法,则SDK将会自动向服务器发出登录系统的申请。
返回值为0并不表示登录服务器成功,仅表示SDK已成功收到登录服务器的指令,如果登录成功,或是失败,都将会通过相应的接口通知上层应用,这里是一个异步的过程。
如果服务器配置了“SDK Filter Plus”插件,则客户端调用该方法后,将会触发其API接口:BRFP_VerifyUser,用户名、密码参数将会作为参数传递给
第 27 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
该API函数,由“SDK Filter Plus”完成用户的身份验证工作,服务器根据该API接口的返回值来判定是否通过身份验证,详细信息可参考文档《AnyChat SDK Filter Plus开发指南》。
如果在服务器端使用“AnyChat Server SDK”开发了业务层服务器,则客户端调用该方法后,将会触发业务层服务器的回调函数“BRAS_VerifyUser_CallBack”,由业务层服务器完成用户的身份验证工作,服务器根据回调函数的返回值来判定是否通过身份验证,详细信息可参考文档《AnyChat Server SDK 开发指南》。
4.2.4.
进入房间(根据房间编号)
INT EnterRoom(INT Roomid, STRING RoomPass);
功能:根据房间编号进入房间
返回值:0表示成功,否则为出错代码
参数:
dwRoomid 房间编号,系统唯一;
lpRoomPass 房间密码(当房间需要密码时有效,如果没有可为空);
备注:
该方法可以登录系统之后立即调用,而不用关心登录系统是否成功,当SDK登录系统成功之后,如果之前调用过该方法,则SDK将会自动向服务器发出进入房间的申请。
返回值为0并不表示进入房间成功,仅表示SDK已成功收到进入房间的指令,不论成功,或是失败,都将会通过相应的接口通知上层应用,这里是一个异步的过程。
用户必须进入一个房间,否则无法进行相关的操作,后续用户所有的操作都是在房间内操作,针对游戏,房间可以理解为游戏桌(一桌游戏对应一个房间),针对视频会议,房间可以理解为会议室。
如果服务器配置了“SDK Filter Plus”插件,则客户端调用该方法后,将会触发其API接口:BRFP_PrepareEnterRoom,用户ID、房间ID、房间密码将会
第 28 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
作为参数传递给该API函数,由“SDK Filter Plus”完成用户进入房间的验证工作,服务器根据该API接口的返回值来判定是否允许进入房间,详细信息可参考文档《AnyChat SDK Filter Plus开发指南》。
如果在服务器端使用“AnyChat Server SDK”开发了业务层服务器,则客户端调用该方法后,将会触发业务层服务器的回调函数“BRAS_PrepareEnterRoom_CallBack”,由业务层服务器完成用户进入房间的验证工作,服务器根据该API接口的返回值来判定是否允许进入房间,详细信息可参考文档《AnyChat Server SDK 开发指南》。
4.2.5.
进入房间(根据房间名称)
INT EnterRoomEx(STRING RoomName, STRING RoomPass)
功能:根据房间名称进入房间
返回值:0表示成功,否则为出错代码
参数:
lpRoomName 房间名称;
lpRoomPass 房间密码(当房间需要密码时有效,如果没有可为空);
备注:
该方法与“EnterRoom”功能相同,区别在于房间的标识不同,其中“EnterRoom”是用房间ID进入房间,而该方法是用房间名称进入房间,如果房间不存在,而且系统配置为自动创建房间时,将会由系统分配一个唯一的房间编号,通过基本事件接口(AnyChatBaseEvent)返回给上层应用,上层应用可以通过方法“GetRoomName”来获取房间名称。
4.2.6.
离开房间
INT LeaveRoom(INT Roomid);
功能:离开房间。
返回值:0表示成功,否则为出错代码
第 29 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
参数:
Roomid 房间编号,为-1表示退出当前房间
备注:
在用户变换房间之前,需要调用该方法离开房间,然后才能进入新的房间。
4.2.7.
注销系统
INT Logout(VOID);
功能:将用户从系统中注销。
返回值:0表示成功,否则为出错代码
参数:
无
备注:
在切换用户(如用户换用其它的用户名登录系统)时需要先调用该方法,或是在退出系统前需要调用该方法