iOS - idoubs(网络电话)的基本使用
来源:互联网 发布:爱科技耳机推荐知乎 编辑:程序博客网 时间:2024/05/16 18:27
公司最近要用的doubango底层框架 用来开发网络电话。
doubango是以c为底层写的基于sip协议的框架
前人已经在此基础上写了应用idoubs 我们可以通过看这个开源项目获得自己想要的东西
下面来介绍idoubs的结构内容。
前言:如果你还不会idoubs的安装与配置
建议先看这篇文章:idoubs的安装与配置
当你什么都做完后 你会看到你的文件夹是这样子的
双击我标注红色的工程文件 打开工程
看左边栏的文件 打开引入的ios-ngn-stack这个工程,其中我红颜色框住的是整个工程要用到的重要的类,这些类就是在底层doubango的基础上进行的编写的,如图:
NgnEngine.h : 引擎类
NgnConfigurationService.h : 文件配置服务 最好把文件信息写在这里
NgnSipService.h : sip服务 用来注册账号 注销账号等等
NgnHttpClientService.h : http协议连接服务
NgnNetworkService.h : 网络服务 用来检测网络状态
NgnSoundService.h : 声音服务
NgnContactService.h : 联系人服务
NgnStorageService.h : 存储服务
NgnHistoryService.h : 历史记录服务
基本流程:
1.首先得有一个引擎:
要么NgnEngine* sInstance = [[NgnEngine alloc] init]; 构建一个新对象
要么NgnEngine* sInstance = [NgnEngine sharedInstance] 获得单例
2.引擎开启所有服务 调用start方法 此方法会打开上述所有服务
[sInstance start]
服务全部开启后 判断账号是否注册 如果没注册 则调用引擎的sipService服务 去注册账号
[[NgnEngine sharedInstance].sipService registerIdentity]当sipService服务开启后 会开启自己的协议栈SipStack 协议栈 初始化sipService的回调属性_mSipCallback的初始化需要用到协议栈 因为有事件回调 所以我们最好在注册账号的控制器放上注册的监听事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onRegistrationEvent:) name:kNgnRegistrationEventArgs_Name object:nil];//== REGISTER events == //-(void) onRegistrationEvent:(NSNotification*)notification { // gets the new registration state ConnectionState_t registrationState = [[NgnEngine sharedInstance].sipService getRegistrationState]; switch (registrationState) { case CONN_STATE_NONE: case CONN_STATE_TERMINATED: if(scheduleRegistration){ scheduleRegistration = FALSE; [self queryConfigurationAndRegister]; } break; case CONN_STATE_CONNECTING: case CONN_STATE_TERMINATING: case CONN_STATE_CONNECTED: default: [[NSUserDefaults standardUserDefaults] setInteger:1002 forKey:@"1002"]; break; }}
当注册完账号 接下来我们看看idoubs写的UI界面
其中我就来讲讲里面的主要功能部分(视频拨号、音频拨号),先上图
NumPadViewController.h 拨号按钮界面
CallViewController.h 视频音频中转站 当我们点击了拨号,它会根据选项进行语音拨号或视频拨号
AudioViewController.h 语音拨号控制器
VideoViewController.h 视频拨号控制器
AudioViewController.h 和 VideoViewController.h都注册了通话通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onInviteEvent:) name:kNgnInviteEventArgs_Name object:nil];-(void) onInviteEvent:(NSNotification*)notification { NgnInviteEventArgs* eargs = [notification object]; if(!audioSession || audioSession.id != eargs.sessionId){ return; } switch (eargs.eventType) { case INVITE_EVENT_INPROGRESS: case INVITE_EVENT_INCOMING: case INVITE_EVENT_RINGING: case INVITE_EVENT_LOCAL_HOLD_OK: case INVITE_EVENT_REMOTE_HOLD: default: { // updates view and state [self updateViewAndState]; break; } // transilient events case INVITE_EVENT_MEDIA_UPDATING: { self.labelStatus.text = @"Updating..."; break; } case INVITE_EVENT_MEDIA_UPDATED: { self.labelStatus.text = @"Updated"; break; } case INVITE_EVENT_TERMINATED: case INVITE_EVENT_TERMWAIT: { // updates view and state [self updateViewAndState]; // releases session [NgnAVSession releaseSession: &audioSession]; // starts timer suicide [NSTimer scheduledTimerWithTimeInterval: kCallTimerSuicide target: self selector: @selector(timerSuicideTick:) userInfo: nil repeats: NO]; break; } }}
简单的先写到这里 以后再更新,谢谢看完。
- iOS - idoubs(网络电话)的基本使用
- iOS - 工程引入doubango (idoubs编译)
- 搭建minisipserver服务器实现局域网内IOS客户端idoubs的通信(可打电话 发短信)
- 搭建minisipserve服务器实现局域网内IOS客户端idoubs的通信(可打电话 发短信)
- 最新iOS - 工程引入doubango (idoubs编译笔记)
- idoubs
- idoubs
- idoubs
- 要自己当技术使用astgo运营网络电话系统,必须掌握的基本技术
- iOS - idoubs 通话判断对方状态(在线、拒接、无人接听、挂断)
- iOS - 自主实现类似微信语音视频信息聊天 (idoubs详细使用方法)1.0
- 拨打网络电话--- iOS 拨打电话的三种方式
- ios 网络电话开发 (Voip Client For iPhone )
- ios 网络电话开发 (Voip Client For iPhone )
- ios 网络电话开发 (Voip Client For iPhone )
- iOS-ReactiveObjC 的基本使用(二)
- 免费的网络电话
- 享受免费的网络电话
- Torch学习(二)
- 第十四周阅读程序
- ubuntu 修改静态ip
- springmvc上传图片文件
- AIX 11204 root.sh 无法启动haip
- iOS - idoubs(网络电话)的基本使用
- webuploader、select2、validate、my97插件使用技巧
- 云计算
- 看了一些小文章,摘抄的话
- [leetcode] Single Number系列
- 网站架构系列:消息队列
- MySQL创建用户与授权
- 用idea14 为什么每次编译的时候都会把项目的jdk编译环境换成1.5?
- select的使用