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. luogu【P3377】 【模板】左偏树

    左偏树 顾名思义 向左偏的树 (原题入口) 它有啥子用呢??? 当然是进行堆的合并啦2333普通堆的合并其实是有点慢的(用优先队列的话 只能 一个pop 一个push 来操作 复杂度就是O(n log ...

  3. 【Luogu3041】视频游戏的连击(AC自动机,动态规划)

    题面链接 题解 首先构建出AC自动机 然后在AC自动机上面跑DP 转移很显然从Trie树的节点跳到他的儿子节点 但是要注意一个问题, 在计算的时候,每一个节点加入后能够 造成的贡献 要加上他的子串的贡 ...

  4. [BZOJ1005] [HNOI2008] 明明的烦恼 (prufer编码)

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N ...

  5. PHP之工厂方法模式(三)

    定义 ​ 定义一个用于创建对象的接口(抽象工厂类),让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到其子类(抽象工厂类的子类). ​ 工厂方法模式是简单工厂模式的进一步抽象和推广.在简单工厂 ...

  6. 软件测试必备-前端知识点之html基础

    前端必备知识点 第一部分:HTML基础 一. web前端标准 1. 结构标签----html 2. 样式标准,美化----css 3. 行为标准---js 二. 五大浏览器厂商 1. ie 2. 谷歌 ...

  7. Spring Boot初探之restful服务发布

    一.背景 Spring boot是集服务发布.数据库管理.日志管理等于一身的服务开发框架:是微服务开发的全能小帮手.这章讲述一下如何使用spring boot发布restful服务接口. 二.搭建基础 ...

  8. SLIC superpixel算法

    标题 SLIC superpixel算法 作者 YangZheng 联系方式 263693992 SLIC算法是simple linear iterative cluster的简称,该算法用来生成超像 ...

  9. Java Web day01

    1.配置环境 Eclipse版本:Mars.2 Release (4.5.2) jdk版本: 配置Eclipse (1)更改编码 工作空间 jsp页面编码 (2)更改背景颜色及字体大小 (3)安装jr ...

  10. python-kafka实现produce与consumer

    1.python-kafka: api送上:https://kafka-python.readthedocs.io/en/latest/apidoc/KafkaConsumer.html 2.实现一个 ...