AnyChat使用攻略之iOS开发指南
这套攻略主要指导刚开始使用AnyChat SDK For iOS的同学,快速搭建SDK环境,和实现音视频开发流程.
(需要工程案例文件可联系我们)
在iOS平台上使用AnyChat客户端SDK,需要注意以下几点。
(以附带的工程为例子讲解—环境: iOS7.0 ,Xcode5.1.1)
1,首先下载最新的AnyChat for iOS SDK(点击打开下载页面);
2,解压缩下载的SDK包,如下图所示:
3,iOS工程本身必须要引用5个框架。
在xcode软件菜单的Project-->Build Phases-->Link Binary With Libraryes里面增加库,如图:

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

(有不少同学,出现编译Undefined symbols for architecture i386:"_AVCaptureSessionPreset1280x720", referenced from:……等类似错误,是因为忘记添加所示的iOS Framework.)
4,进入刚下载的官方SDK包里面,目录是【sdk\libs\】,也是要全部添加到你的工程里面。
可以通过在xcode的左下角如图:

地方添加引用工程外的库文件,

(别忘了【sdk\libs\audioprocess】目录下还有几个.a静态库文件。 下图中库文件数量和最新 SDK包里的库文件数量会有所不同,以最新 SDK 包为标准),
在添加完成库的时候编译下,如果按流畅走,应该是有一个小警告,不影响正常运行的.警告如下:
(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) ,
这个libvad.a 文件 可以先删除,这项目真是没需要到.
5,另外需要配置C++环境,以下两个步骤解决:
第一步:Build Settings-->Apple LLVM 5.1 - Language - C++ --> C++ Standard Library,
设置为:libstdc++(GNU C++ standard library)
第二步:Project-->Build Phases-->Link Binary With Libraryes里面增加库:libstdc++.dylib
第三步:在“Project-->Build Phases-->Link Binary With Libraryes”里面添加库“libstdc++.6.dylib”,如下图所示:

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

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

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)

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

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

#import "AnyChatPlatform.h"
#import "AnyChatDefine.h"
#import "AnyChatErrorCode.h"
(如果要获取本地视频另外还需要引用 #import "AVFoundation.h" )
8, 在应用程序启动时(AppDelegate),设置默认端口和IP地址参数(为了连接服务器做准备)。
ServerIP           : “demo.anychat.cn”
ServerPort         : “8906”
9,程序加载前,做初始化系统和配置登录连接,主要以下方法:
[AnyChatPlatform InitSDK:0];  // 初始化系统
[AnyChatPlatform Connect: ServerIP : ServerPort;   // 连接服务器参数
[AnyChatPlatform Login: UserName : @""];   // 登录系统   (UserName参数:登录自定义的用户名)

(以上步骤完成后,运行登录成功会在控制台打印显示 Connection to streaming media server successfully!)

[AnyChatPlatform EnterRoom:1 :@""];  //进入房间
(EnterRoom的值在例子中是设置了第一个房间,目前有6个房间可以自己重新选择)
通过[AnyChatPlatform GetOnlineUser]方法,获取返回值是一个远程用户ID的列表数组
(可以通过此数组获取第一用户ID与他视频聊天。)
10,
1),在显示视图中需要添加AnyChatNotifyMessageDelegate协议,必须实现以下7个方法。
// 连接服务器消息
- (void) OnAnyChatConnect:(BOOL) bSuccess;
// 用户登陆消息
- (void) OnAnyChatLogin:(int) dwUserId : (int) dwErrorCode;
// 用户进入房间消息
- (void) OnAnyChatEnterRoom:(int) dwRoomId : (int) dwErrorCode;
// 房间在线用户消息
- (void) OnAnyChatOnlineUser:(int) dwUserNum : (int) dwRoomId;
// 用户进入房间消息
- (void) OnAnyChatUserEnterRoom:(int) dwUserId;
// 用户退出房间消息
- (void) OnAnyChatUserLeaveRoom:(int) dwUserId;
// 网络断开消息
- (void) OnAnyChatLinkClose:(int) dwErrorCode;
(注意两个事件处理:1当有用户进出房间时触发的事件,2用户自己进房间先后顺序的事件处理。)
2),工程里实现了SDK的状态改变事件协议AnyChatStateChangeDelegate,以此为案例和同学们复习一下iOS开发语法,怎样实现协议与委托的三部曲.(ios开发老手可略过,此协议对于视频聊天不是必须实现的)
首先是在实现协议的类.h头文件中添加,你要引用的协议<AnyChatStateChangeDelegate>.
然后该协议里面有5个委托方法必须实现在类的.m文件中(在AnyChatPlatform.h中可以查到那5个方法),
最后这步是很多iOS初学者忘记的,就是设置委托代理是谁 (如:_cxsAnyChatPlatform.stateChangeDelegate = self;)
11, 在视图现实获取视频图像,只需要在现实的地方添加UIImageView,通过以下方法操作,
[AnyChatPlatform UserSpeakControl: userid:YES];   // 操作用户语音
[AnyChatPlatform SetVideoPos:userid: 自定义的UIImageView对象:0:0:0:0]; // 设置视频显示位置默认为零时,会自动调节为UIImageView同等大小
[AnyChatPlatform UserCameraControl:userid : YES];  // 操作用户视频
注意:在整过视频聊天过程中,有几个地方调用以上3个方法,
1)-(void) OnAnyChatEnterRoom:(int) dwRoomId : (int) dwErrorCode;在收到该委托方法之后,可打开本地用户的音视频.
2)-(void) OnAnyChatOnlineUser:(int) dwUserNum : (int) dwRoomId;在收到该委托方法之后,可打开当前房间在线用户的音视频.
3)-(void) OnAnyChatUserEnterRoom:(int) dwUserId;在收到该委托方法之后,可打开当前进入房间用户的音视频.

视频聊天插件:AnyChat使用攻略之iOS开发指南的更多相关文章

  1. JiaThis WordPress分享插件安装全攻略

    WordPress 是一个功能非常强大的博客系统,插件众多,易于扩充功能.安装和使用都非常方便.目前 WordPress 已经成为主流的 Blog 搭建平台.按照下面的方法,只需简单几步,就可轻松地将 ...

  2. maven教程全攻略

    maven教程全攻略 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关 ...

  3. 使用Xcode插件,让iOS开发更加便捷

    在iOS开发过程中,写注释是一项必不可少的工作.这不仅有助于自己对代码整理回顾,而且提高了代码的可读性,让代码维护变得容易.但是,写注释又是一项枯燥的工作.我们浪费了大量的时间在输入/*,*,*/这样 ...

  4. VS2013全攻略(安装,技巧,快捷键,插件)!

    工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)! 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥>承蒙大家喜爱和编辑推荐,在此 ...

  5. Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

  6. WebRTC实现网页版多人视频聊天室

    因为产品中要加入网页中网络会议的功能,这几天都在倒腾 WebRTC,现在分享下工作成果. 话说 WebRTC Real Time Communication 简称 RTC,是谷歌若干年前收购的一项技术 ...

  7. 简单易懂的现代魔法——Play Framework攻略1

    哇哈哈,寒假结束啦,于是我又开新坑了....这次的主角可是大名鼎鼎的Play Framework!!那么闲话少说,开始攻略吧! 1.什么是Play Framework? 大名鼎鼎的play frame ...

  8. UBER人民优步司机注册攻略

        注意:本文驾驶证行驶证图片为本人拍摄,请广大网友勿作它用 转载请修改! 详细的介绍注册优步uber司机端步骤; uber对司机的要求: 车辆为本地牌照 车龄在5年以内 裸车价格在10万以上 目 ...

  9. 怎样注册uber司机 如何注册uber司机 最新详细攻略

    怎样注册uber司机 如何注册加入uber司机 全国加入Uber 的要求 车辆要求:要求裸车价8万以上,车龄5年以内,第三者责任险保额30万以上,不支持20万以下的面包车/商务车,不支持4座以下车辆. ...

随机推荐

  1. gprecoverseg导致的元数据库问题致使数据库无法启动以及修复

    一.现象描述 在一次执行gprecoverseg后发现数据库无法正常连接,现象如下: 执行gprecoverseg日志如下: gprecoverseg:mdw-:gpadmin-[INFO]:-Sta ...

  2. Gedit : 我的开场白 [TPLY]

    为什么用Gedit 在学校的高一新生里,好像就只有我使用Gedit 大家都笑我是"用记事本编程的人" 我就想 到考场看看你们笑得出来不 先放一个高配emacs配置 (global- ...

  3. 【Webpack的使用指南 01】Webpack入门

    使用Webpack有一段时间了,但是感觉之前学的用的都比较零散,所以在这里整理一下Webpack的使用知识,从入门到进阶. 创建项目 首先创建最简单的一个项目 npm init 得到以下项目结构: 安 ...

  4. 分布式存储系统-HBASE

    简介 HBase –Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBse技术可在廉价PC Server上搭建起大规模结构化存储集群.HBase利用Had ...

  5. [转]【安卓笔记】AsyncTask源码剖析

    [转][安卓笔记]AsyncTask源码剖析 http://blog.csdn.net/chdjj/article/details/39122547 前言: 初学AsyncTask时,就想研究下它的实 ...

  6. C#枚举数值与名称的转换实例分享

    首先建立一个枚举: 复制代码代码如下: /// <summary>    /// 颜色    /// </summary>    public enum ColorType   ...

  7. Canvas 画布组件(官网翻译)

    Canvas画布 The Canvas is the area that all UI elements should be inside. The Canvas is a Game Object w ...

  8. EventBus VS Spring Event

    EventBus VS Spring Event 本地异步处理,采用事件机制 可以使 代码解耦,更易读.事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者.监听者.事件. Gua ...

  9. SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法

    由于项目需要使用SpringCache来做一点缓存,但自己之前没有使用过(其实是没有听过)SpringCache,于是,必须先学习之. 在网上找到一篇文章,比较好,就先学习了,地址是: https:/ ...

  10. AIX分页(交换)空间的监控

    1.分页和交换 这两个概念,很多人混为一回事儿,两者虽然有共性,但也有些差别.分页是进程的部分内容在RAM和磁盘的分页空间间移动,而交换是整个进程在RAM和磁盘的分页空间间移动,在将进程移到磁盘分页空 ...