使用WebRTC构建iOS本机应用程序

使用WebRTC构建iOS本机应用程序,ios,objective-c,iphone,native,webrtc,Ios,Objective C,Iphone,Native,Webrtc,我搜索了4天,但是找不到。我构建了所有库,并将其集成到我的定制项目中,但我不知道应该采取哪些步骤使其正常工作。我在代码示例\解释中发现的唯一一件事是tech.execute.in/2015/05/25/Getting-started-with-WebRTC-on-iOS,但它对我来说很差,也不清楚,还有ApprtDemo源代码。我读过关于浏览器的WebRTC,但仍然无法在iOS上复制它。 是否有人可以解释或提供链接,说明如何使用WebRTC API(例如p2p iOS聊天)完全构建iOS本机应用

我搜索了4天,但是找不到。我构建了所有库,并将其集成到我的定制项目中,但我不知道应该采取哪些步骤使其正常工作。我在代码示例\解释中发现的唯一一件事是tech.execute.in/2015/05/25/Getting-started-with-WebRTC-on-iOS,但它对我来说很差,也不清楚,还有ApprtDemo源代码。我读过关于浏览器的WebRTC,但仍然无法在iOS上复制它。 是否有人可以解释或提供链接,说明如何使用WebRTC API(例如p2p iOS聊天)完全构建iOS本机应用程序

除了我不理解演示中提供的代码逻辑之外,我还不理解:

1) iOS应用程序的ICE服务器是什么?我应该照顾它吗?它是服务器端的东西吗?我应该自己编写并运行它,还是可以使用现有的解析背景

2) iOS应用程序中的信号机制是什么?它是仅在客户端实现,还是也必须在服务器端实现

3) 也许有人可以用一些代码解释一下如何使用WebRTC实现简单的iOS p2p聊天?例如:

“你必须:

  • 使用this=source=和this tutorial=tutorial=在parse core上创建ICE/STUN/TURN服务器

  • 使用创建的ICEServer创建RTPeerConnection:
    rtpeerconnectionfactory*pcFactory=[[rtpeerconnectionfactory alloc]init];
    RTPEERCONNECTION*peerConnection=[pcFactory peerConnectionWithICEServers:kICEServerURL约束:nil委托:self];

  • 使用

  • 使用此处解释的
    发送信号=链接=

  • 设置本地和远程描述

  • 使用
    ..
    发送数据

  • ……或者类似的东西


  • 我很抱歉问你这个问题,但我想弄清楚这件事,我都快发疯了。谢谢大家!

    我在几个月前完成了实施过程。我发现图书馆不稳定——有时正常,有时不正常

    此外,我的iPhone在使用时总是变得很热

    我不建议将此库和整个WebRTC技术用于商业项目

    这是我的实施方案,几个月前还在运行:


    祝你好运

    我不是webrtc方面的专家,但我将尝试解释您的一些问题

    1.ICE服务器——NAT和防火墙在设置IP端点时带来了重大问题。因此,IETF标准STUN、TURN和ICE被开发用来解决NAT穿越问题。 STUN有助于连接IP端点:

    • 发现它们是否位于NAT/防火墙后面,如果是
    • 确定防火墙的公共IP地址和类型。然后,STUN使用此信息帮助建立对等IP连接
    TURN代表使用中继NAT进行遍历,它提供了一种回退NAT遍历技术,使用媒体中继服务器促进端点之间的媒体传输

    ICE是一个利用STUN和TURN的框架,通过SIP提供/应答模型为端点提供可靠的IP设置和媒体传输,以交换多个候选IP地址和端口(如专用地址和TURN服务器地址)

    2.信令是协调通信的过程。此信令部分需要由您根据需要实施(例如,如果您有sip结构,则必须实施sip信令)。为了让WebRTC应用程序设置“呼叫”,其客户端需要交换信息:

    • 用于打开或关闭通信的会话控制消息
    • 错误消息
    • 媒体元数据,如编解码器和编解码器设置、带宽和媒体类型
    • 密钥数据,用于建立安全连接
    • 网络数据,如外部世界看到的主机IP地址和端口

    • 台阶
    • 报价人:

    • 首先创建对等连接并将ice候选项传递给它 作为参数

    • 为三个事件设置事件处理程序:

      • onicecandidate——onicecandidate返回本地生成的ICE候选对象,以便您可以将它们传递给其他对等方,即STUN/TURN服务器返回的ICE候选列表;这些候选ice包含您的公共ipv4/ipv6地址以及UDP随机地址
      • onaddstream——onaddstream返回远程流(朋友的麦克风和摄像头!)。
        • addStream`为其他同行连接本地麦克风和摄像头
    现在,通过调用setLocalDescription函数创建SDP提供,并通过调用setRemoteDescription设置远程SDP

    回答者:

    • setRemoteDescription
    • createAnswer
    • setLocalDescription
    • oniceCandidate——关于获取本地生成的冰
    • addiceCandidate--关于获取其他对等方发送的ICE
    • onaddstream——用于添加远程流

    我希望这能澄清您的一些疑问。

    谢谢!在模拟器上生成失败,但我在设备上成功运行。它是否与演示应用程序使用的功能相同(连接到房间)?你能为我自己的iOS p2p聊天应用澄清一下关于ICE/TURN/STUN服务器的时刻吗?“1)我的iOS应用程序的ICE服务器是什么?我应该负责吗?它是服务器端的吗?我应该自己编码并运行它,还是可以使用现有的解析后台?2)iOS应用程序中的信号机制是什么?它只是客户端,还是也必须在服务器端实现?”谢谢。嘿,Artur Olszak,这是一个很棒的演示,但我想实现一对一的视频/音频通话,比如whatsapp和facebook?你将采取什么方法来实现这一点?你建议我怎么做?请检查此选项,给出错误->未找到-lstdc++的ld:library。6提示:错误:链接器命令失败,退出c