Giter VIP home page Giter VIP logo

feiyuiosdemo's Introduction

feiyu-cloud-ios-voice-record-demo

飞语云平台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()
    }

点对点 网络对手机(PSTN) 且带录音的基本流程

前提:主叫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)

代码说明

  1. 如果你想要调试你自己的app,则需要去飞语官网注册账号,创建自己的app,获得APPIDAPPTOKEN,替换ViewController.swift中的FY_APPIDFY_APPTOKEN
  2. 相关文档:

使用步骤

点对点 网络对网络 且带录音的基本流程

  1. 用Xcode编译项目,安装到iPhone真机1,iPhone真机2中
  • 真机1 主叫138: 主叫138

  • 真机2 被叫139: 被叫139

  1. 主叫138中,点击拨号按钮 主叫138开始呼叫被叫139

  2. 被叫139中会自动接听 被叫139正在通话中

同时主叫138也可以通话了: 主叫138正在通话中

使用说明

  1. demo中的主叫和被叫的号码(138,和139)均可以自己�随意改动,只是要确保互相设置的值是匹配即可。

点对点 网络对手机(PSTN) 且带录音的基本流程

  1. 用Xcode编译项目,安装到iPhone真机中
  2. 输入被叫手机号和(在被叫手机上要)显示的号码,点击拨号
    • 被叫号码可以自己�随意改动,只是要确保符合PSTN E164标准即可,比如+8613900001111.
  3. 被叫方过会(大概等10多秒左右)即可接到电话,点击接听,双方即可通话
    • 被叫方:被叫此时就接听别人的普通的电话是一样的效果

被叫方显示号码设置为假的+8613900001111

  1. 任何一方均可挂断电话

feiyuiosdemo's People

Contributors

crifan avatar

Stargazers

烈焰清风 avatar  avatar  avatar chisj avatar Li Ray avatar  avatar  avatar  avatar 飞语云通信 avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.