飞语云平台iOS点对点通话录音Demo 此Demo用于演示,使用飞语SDK实现,点对点的,A呼叫B,的语音通话的演示。
内部是通过飞语官网的SDK包FYRtcEngineKit
,发起UDP
的数据包,实现了VOIP
的语音通信。
本demo项目是基于官网的iOS库+Demo
核心代码均在
ViewController.swift
前提:主叫A和被叫B的手机均已正常联网
1.主叫和被叫都调用SDK初始化sharedEngine
fyRtcEngine = FYRtcEngineKit.sharedEngine(withAppId: FY_APPID, appToken: FY_APPTOKEN, delegate: self)
2.被叫一方需要先调用calleePrepare
去让自己准备好被别人呼叫
fyRtcEngine.calleePrepare(selfUid, prepareSuccess: self.calleePrepareSuccess)
3.主叫方调用dialPeer
fyRtcEngine.dialPeer(otherUid, callerUid: selfUid, optionData: dialOption)
此时,主叫方自己会收到outgoingCall
的回调
4.被叫方在incomingCall
的回调中调用answerCall
接听电话
func onFYRtcEngine(_ engine: FYRtcEngineKit!, incomingCall caller: String!) {
...
fyRtcEngine.answerCall()
...
}
5.主叫方和被叫方均可正常通话,同时每隔2秒会收到reportRtcStats
的语音统计信息
统计信息如下字段:
"reportRtcStats: 累计发送字节数:\(status.sendBytes),累计接收字节数:\(status.recvBytes),下行带宽:\(status.downBandwidth),上行带宽:\(status.upBandwidth),发送丢包率:\(status.sendLossRate),接受丢包率:\(status.recvLossRate)"
6.想要挂掉,则调用endCall
结束通话
fyRtcEngine.endCall(self.endCallCallback)
然后会收到回调callEnd
func onFYRtcEngine(_ engine: FYRtcEngineKit!, callEnd status: FYRtcEngineStatus!) {
self.infoNotice("通话结束: \(statusToShortStr(fyStatus: status))")
self.afterCallEnd()
}
前提:主叫A的手机已正常联网
其实和点对点 网络对网络
的流程是一样的,只不过是被叫方不需要网络,当前也就不需要calleePrepare
等动作了。就相当于别人直接拨打你电话而已。
1.主叫方调用SDK初始化sharedEngine
fyRtcEngine = FYRtcEngineKit.sharedEngine(withAppId: FY_APPID, appToken: FY_APPTOKEN, delegate: self)
2.主叫方调用dialPstn
fyRtcEngine.dialPstn(pstnCalleePhone, callerUid: selfUid, display: pstnDisplayPhone, optionData: dialPstnOption)
主叫会收到outgoingCall
的回调,表示正在拨号出去。
参数解释:
- pstnCalleePhone: 被叫的手机号,比如+18613812345678
- display: pstnDisplayPhone:被叫在接到电话的界面中显示什么号码
提示:
- 被叫手机号和显示号必须是符号
PSTN E164
标准的正常的+86开头的国内的手机号,否则会报错,比如
10086
:提示格式不合法+8610086
:提示无权限�使用此号
3.被叫方就可以正常接收到并接听电话了
几点说明:
- 不过是有点延迟,大概要等个10秒前后,被叫方才收到打入的电话
- 被叫方如果选择接电话,就可以正常通话了
- 此时,主叫方可以收到
onFYRtcEngineCallConnect
的回调
- 此时,主叫方可以收到
- 主叫方每隔2秒会收到
reportRtcStats
的语音统计信息
4.想要挂掉,则调用endCall
结束通话
fyRtcEngine.endCall(self.endPstnCallCallback)
- 如果你想要调试你自己的app,则需要去飞语官网注册账号,创建自己的app,获得
APPID
和APPTOKEN
,替换ViewController.swift
中的FY_APPID
和FY_APPTOKEN
- 相关文档:
- 用Xcode编译项目,安装到iPhone真机1,iPhone真机2中
- demo中的主叫和被叫的号码(138,和139)均可以自己�随意改动,只是要确保互相设置的值是匹配即可。
- 用Xcode编译项目,安装到iPhone真机中
- 输入被叫手机号和(在被叫手机上要)显示的号码,点击拨号
- 被叫号码可以自己�随意改动,只是要确保符合
PSTN E164
标准即可,比如+8613900001111
.
- 被叫号码可以自己�随意改动,只是要确保符合
- 被叫方过会(大概等10多秒左右)即可接到电话,点击接听,双方即可通话
- 被叫方:被叫此时就接听别人的普通的电话是一样的效果
- 任何一方均可挂断电话