最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】使用飞语云平台实现iOS的电话录音

iOS crifan 3946浏览 0评论

在研究了:

【整理】iOS 电话录音 sdk 方案

后,所以去试试。

飞语云通信,提供点对点语音、多人语音、网络直拨、隐私保护通话、回拨电话,专线电话等互联网通信服务

FeiyuCloud (飞语云通信)

FeiyuCloud/objc-sdk-demo: Feiyu Cloud Objective-C SDK Demo

找到其gitbook主页:

feiyucloud (@feiyucloud) on GitBook · GitBook

里面有些文档,但是内容都不完整:

通信 API – Objective-C · DOCS

API · DOCS

API · PrivateDocs

结果iOS的demo中,啥都没有,就两行代码:

class ViewController: UIViewController {
    var fyRtcEngine: FYRtcEngineKit!
    override func viewDidLoad() {
        super.viewDidLoad()
        fyRtcEngine = FYRtcEngineKit.sharedEngine(withAppId:”your appid”, appToken:”your apptoken”, delegate: nil)
        fyRtcEngine.joinChannel(“channelId123”, uid: nil, optionData: nil, joinSuccess: nil)
        // Do any additional setup after loading the view, typically from a nib.
    }

即没有说明,如何申请账号,也没有说如何集成。

更没说清,想要电话录音,需要做哪些准备工作,如何调用代码。

去加QQ群:470250528

先去注册看看:

飞语云通信,提供点对点语音、多人语音、网络直拨、隐私保护通话、回拨电话,专线电话等互联网通信服务

飞语开发者中心-注册

飞语 开发者中心 控制台

去创建应用:

应用列表

应用名称:RSE Demo

APPID:FBC7xxxxxxxxxEC4

APPTOKEN:2799xxxxxxxxE7

和 对方

简工程师 18917930061

沟通了解到信息:

假设背景:

我自己 138 手机号 iOS app

对方 139 手机号 iOS app

基本流程:

(1)主叫方:138,调用

<code>[engineKit dialPeer:@"calleeUid"CallerUid:@"callerUid" OptionData:nil];
</code>

类似于微信:点击 语音通信

(2)确保被叫方app处于前台

一般是:138发送离线消息推送push给139,139点击离线消息,启动app,确保处于前台

类似于 被叫方 启动微信 确保微信在线 且处于前台

(3)被叫方139,调用

<code>[engineKit calleePrepare:@"uid" prepareSuccess:nil];
</code>

类似于 被叫方 微信中 点击 接听

具体API参考:

点到点语音 · DOCS

其中,被叫方看到的电话号码,有两种:

方案1:主叫方138打电话给被叫方139,139看到的电话号码是 某个公司的座机号码

前提:主叫方和被叫方都是网络在线-》所以才能通过UDP实现VOIP的语音通信-》相当于两人微信都在线

费用:飞语自己:1000分钟 / 5元

方案2:主叫方138打电话给被叫方139,139看到的电话号码是 138的号码

前提:主叫方需要网络在线-》相当于主叫方的微信在线

被叫方手机可以没有网络-》因为是通过第三方服务去实现拨打被叫方的电话的-》所以被叫方才能看到主叫方的电话号码(而不是固定的座机号码之类的)

注:

(1)飞语只提供技术,不提供落地线路。

(2)如果采用方案2,需要再去联系 提供落地线路的 国外公司

-》可以找

问 简工程师 18917930061 要对方QQ号去咨询细节

具体费用:也需要另外去咨询 那个国外公司

对于几个疑问点:

1.option中如何配置表示开启录音

关于是否录音,需要在option中配置,对应option的参数可以在库的头文件:

FYRtcEngineKit.h

中找到:

@interface FYOptionData :NSObject
@property (nonatomic, assign)   BOOL isRecord;
@property (nonatomic, assign)   int maxDuration;
@property (nonatomic, assign)   NSString *extraData;
@end
/**
* Create an open UDP socket to the FYRtcEngineKit cloud service to join a channel.
Users in the same channel can talk to each other with same appId.
Users using different appID cannot call each other.
*
* @param channelId  Joining in the same channel indicates those clients have entered in one room.
*
* @param uid        Optional, this argument is the unique ID for each member in one channel.
If not specified, set to nil, the SDK automatically allocates an ID, and the id could be gotten in join Channel success call back.
*
* @param optionData      Add optional options (isRecord/maxDuration/extraData)
*/
– (void)joinChannel:(NSString *)channelId Uid:(NSString *)uid OptionData:(FYOptionData *)optionData JoinSuccess:(void(^)(NSString *uid, NSString *channel))joinChannelBlock;

1分钟,不上线时-》没有接听,对方没有给我打电话,就自动断掉了。

上线:指的是调用了dialPeer或calleePrepare

2.对于calleeUid CallerUid的id是如何获得的?

不需要获取。

自己维护和管理。

直接确保不同用户有不同的id,然后不要重复即可。

典型的话,

简单点,用当前用户的手机号作为uid

更好的做法:用自己本身用户系统中 user id之类的值,更唯一和可靠。

其他特别说明:

之后正式上线时,需要用到苹果的VOIP的push

-》在app的项目配置中,开启VOIP的Push,估计也要去苹果开发者中心,后台创建对应的证书

具体技术自己去找,比如:

PushKit的使用 – 简书

【后续要做的事情】

1.先去简单的测试能否互相电话通讯

2.再去考虑后续的:

电话录音,如何获取,有哪些接口

3.开启app的VOIP的push,确保被叫者在线,能收到电话

先去测试能否通过sdk直接实现通话

【已解决】用飞语FYRtcEngineKit去实现基本的iOS间的语音通话

然后再去搞清楚,如何实现:

【已解决】用飞语云平台实现网络电话拨打手机号且带录音

【总结】

最后,既实现了,点对点的网络对网络的语音通信,也实现了调用PSTN实现:A用网络直接拨打B手机号的通话,所有的流程解释和示例代码详见:

crifan/feiyuiOSDemo: 飞语云平台iOS点对点通话录音Demo

https://github.com/crifan/feiyuiOSDemo

转载请注明:在路上 » 【已解决】使用飞语云平台实现iOS的电话录音

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.169 seconds, using 22.09MB memory