您的位置:首页 > 移动开发 > IOS开发

视频聊天插件:AnyChat使用攻略之iOS开发指南

2015-08-03 08:39 716 查看
[align=left]AnyChat使用攻略之iOS开发指南[/align]

[align=left]这套攻略主要指导刚开始使用AnyChat SDK For iOS的同学,快速搭建SDK环境,和实现音视频开发流程.[/align]
[align=left](需要工程案例文件可联系我们)[/align]

[align=left]在iOS平台上使用AnyChat客户端SDK,需要注意以下几点。[/align]
[align=left](以附带的工程为例子讲解—环境: iOS7.0 ,Xcode5.1.1)[/align]

[align=left]1,首先下载最新的AnyChat for iOS SDK(点击打开下载页面);[/align]

[align=left]2,解压缩下载的SDK包,如下图所示:[/align]



[align=left]3,iOS工程本身必须要引用5个框架。[/align]
[align=left]在xcode软件菜单的Project-->Build Phases-->Link Binary With Libraryes里面增加库,如图:[/align]




引用的5个库具体,如图所示:



[align=left](有不少同学,出现编译Undefined symbols for architecture i386:"_AVCaptureSessionPreset1280x720", referenced from:……等类似错误,是因为忘记添加所示的iOS Framework.)[/align]

[align=left]4,进入刚下载的官方SDK包里面,目录是【sdk\libs\】,也是要全部添加到你的工程里面。[/align]
可以通过在xcode的左下角如图:



地方添加引用工程外的库文件,
[align=left](别忘了【sdk\libs\audioprocess】目录下还有几个.a静态库文件。 下图中库文件数量和最新 SDK包里的库文件数量会有所不同,以最新 SDK 包为标准),[/align]



[align=left]在添加完成库的时候编译下,如果按流畅走,应该是有一个小警告,不影响正常运行的.警告如下:[/align]
[align=left](warning: ignoring file /Users/bairuitech/Desktop/AnyChatIOS/libvad.a, file was built for archive which is not the architecture being linked (i386): /Users/bairuitech/Desktop/AnyChatIOS/libvad.a) ,[/align]
[align=left]这个libvad.a 文件 可以先删除,这项目真是没需要到.[/align]

[align=left]5,另外需要配置C++环境,以下两个步骤解决:[/align]

[align=left]第一步:Build Settings-->Apple LLVM 5.1 - Language - C++ --> C++ Standard Library,[/align]
[align=left]设置为:libstdc++(GNU C++ standard library)[/align]



[align=left]第二步:Project-->Build Phases-->Link Binary With Libraryes里面增加库:libstdc++.dylib[/align]



[align=left]第三步:在“Project-->Build Phases-->Link Binary With Libraryes”里面添加库“libstdc++.6.dylib”,如下图所示:[/align]



然后Clean工程,然后重新Build。

[align=left]如果没有配置C++环境,就会在编译时候出现类似 Undefined symbols for architecture i386:"std::_List_node_base::hook(std::_List_node_base*)", referenced from:…….等类似错误,是因为在链接(Link)过程中出错,缺少c++静态库或不兼容.[/align]

[align=left]详情可参考:http://bbs.anychat.cn/forum.php? ... =806&extra=page%3D1[/align]

6,配置调试器环境。

为了兼容不同设备的内核,请在如图地方设置:



修改Build Active Architecture Only选项为Yes,或者修改Valid Architectures选项为armv7,两个方法选一个即可。

如果没配置的话,在调试时会出现以下错误:

、Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_AnyChatPlatform", referenced from: objc-class-ref in AnchatViewController.old :symbol(s) not found for architecture x86_64 clang: error: linker command failed
with exit code 1 (use -v to see invocation)

[align=left]7,SDK解压包的【sdk\include】目录里面是AnyChat的Objective-c SDK协议文件. 如图:[/align]



在制作过程中,工程都需要引用此协议到代码.h头文件处。

[align=left]#import "AnyChatPlatform.h"[/align]
[align=left]#import "AnyChatDefine.h"[/align]
[align=left]#import "AnyChatErrorCode.h"[/align]

[align=left](如果要获取本地视频另外还需要引用 #import "AVFoundation.h" )[/align]

[align=left]8, 在应用程序启动时(AppDelegate),设置默认端口和IP地址参数(为了连接服务器做准备)。[/align]
[align=left]ServerIP : “demo.anychat.cn”[/align]
[align=left]ServerPort : “8906”[/align]

[align=left]9,程序加载前,做初始化系统和配置登录连接,主要以下方法:[/align]

[align=left][AnyChatPlatform InitSDK:0]; // 初始化系统[/align]
[align=left][AnyChatPlatform Connect: ServerIP : ServerPort; // 连接服务器参数[/align]
[align=left][AnyChatPlatform Login: UserName : @""]; // 登录系统 (UserName参数:登录自定义的用户名)[/align]
(以上步骤完成后,运行登录成功会在控制台打印显示 Connection to streaming media server successfully!)

[align=left][AnyChatPlatform EnterRoom:1 :@""]; //进入房间[/align]
[align=left](EnterRoom的值在例子中是设置了第一个房间,目前有6个房间可以自己重新选择)[/align]

[align=left]通过[AnyChatPlatform GetOnlineUser]方法,获取返回值是一个远程用户ID的列表数组[/align]
[align=left](可以通过此数组获取第一用户ID与他视频聊天。)[/align]

[align=left]10,[/align]
[align=left]1),在显示视图中需要添加AnyChatNotifyMessageDelegate协议,必须实现以下7个方法。[/align]

[align=left]// 连接服务器消息[/align]
[align=left]- (void) OnAnyChatConnect:(BOOL) bSuccess;[/align]
[align=left]// 用户登陆消息[/align]
[align=left]- (void) OnAnyChatLogin:(int) dwUserId : (int) dwErrorCode;[/align]
[align=left]// 用户进入房间消息[/align]
[align=left]- (void) OnAnyChatEnterRoom:(int) dwRoomId : (int) dwErrorCode;[/align]
[align=left]// 房间在线用户消息[/align]
[align=left]- (void) OnAnyChatOnlineUser:(int) dwUserNum : (int) dwRoomId;[/align]
[align=left]// 用户进入房间消息[/align]
[align=left]- (void) OnAnyChatUserEnterRoom:(int) dwUserId;[/align]
[align=left]// 用户退出房间消息[/align]
[align=left]- (void) OnAnyChatUserLeaveRoom:(int) dwUserId;[/align]
[align=left]// 网络断开消息[/align]
[align=left]- (void) OnAnyChatLinkClose:(int) dwErrorCode;[/align]

[align=left](注意两个事件处理:1当有用户进出房间时触发的事件,2用户自己进房间先后顺序的事件处理。)[/align]

[align=left]2),工程里实现了SDK的状态改变事件协议AnyChatStateChangeDelegate,以此为案例和同学们复习一下iOS开发语法,怎样实现协议与委托的三部曲.(ios开发老手可略过,此协议对于视频聊天不是必须实现的)[/align]

[align=left]首先是在实现协议的类.h头文件中添加,你要引用的协议<AnyChatStateChangeDelegate>.[/align]
[align=left]然后该协议里面有5个委托方法必须实现在类的.m文件中(在AnyChatPlatform.h中可以查到那5个方法),[/align]
[align=left]最后这步是很多iOS初学者忘记的,就是设置委托代理是谁 (如:_cxsAnyChatPlatform.stateChangeDelegate = self;)[/align]

[align=left]11, 在视图现实获取视频图像,只需要在现实的地方添加UIImageView,通过以下方法操作,[/align]

[align=left][AnyChatPlatform UserSpeakControl: userid:YES]; // 操作用户语音[/align]
[align=left][AnyChatPlatform SetVideoPos:userid: 自定义的UIImageView对象:0:0:0:0]; // 设置视频显示位置默认为零时,会自动调节为UIImageView同等大小[/align]
[AnyChatPlatform UserCameraControl:userid : YES]; // 操作用户视频

[align=left]注意:在整过视频聊天过程中,有几个地方调用以上3个方法,[/align]
[align=left]1)-(void) OnAnyChatEnterRoom:(int) dwRoomId : (int) dwErrorCode;在收到该委托方法之后,可打开本地用户的音视频.[/align]
[align=left]2)-(void) OnAnyChatOnlineUser:(int) dwUserNum : (int) dwRoomId;在收到该委托方法之后,可打开当前房间在线用户的音视频.[/align]
[align=left]3)-(void) OnAnyChatUserEnterRoom:(int) dwUserId;在收到该委托方法之后,可打开当前进入房间用户的音视频.[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: