使用WebRTC构建iOS Native App

Aft*_*ath 10 iphone native objective-c ios webrtc

我正在寻找4天,但无法得到它.我构建了所有库并将其集成到我的自定义项目中,但我不知道应该采取哪些步骤来使其工作.我在代码示例\解释中找到的唯一一件事就是tech.appear.in/2015/05/25/Getting-started-with-WebRTC-on-iOS,但它对我来说很糟糕且不清楚,AppRTCDemo源代码也是如此.我读过关于浏览器的WebRTC但仍无法在iOS上重现它.任何人都可以解释或提供关于如何使用WebRTC API完全构建iOS本机应用程序的解释链接,例如p2p ios chat?

除了我不理解demo中提供的代码逻辑这一事实,我无法理解:

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

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

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

"你必须:

  1. 使用this = source =和本教程= tutorial =在解析核心上创建ICE/STUN/TURN服务器.

  2. 使用创建的ICEServer创建RTCPeerConnection: RTCPeerConnectionFactory *pcFactory = [[RTCPeerConnectionFactory alloc] init]; RTCPeerConnection *peerConnection = [pcFactory peerConnectionWithICEServers:kICEServerURL constraints:nil delegate:self];

  3. 使用创建DataChannel ...

  4. 使用...解释发送信号= link =

  5. 设置本地和远程描述 ...

  6. ...使用发送数据...

  7. ......"或类似的东西.

我很抱歉这个问题,但是我想失去理智.谢谢!

小智 7

我不是webrtc的专家,但我会尝试解释你的一些问题.

1.ICE服务器 - NAT和防火墙在设置IP端点时存在严重问题.所以开发了IETF标准STUN,TURN和ICE来解决NAT遍历问题.STUN有助于连接IP端点:

  • 发现它们是否在NAT /防火墙后面,如果是,
  • 确定防火墙的公共IP地址和类型.然后,STUN使用此信息来帮助建立对等IP连接.

TURN代表Traversal Using Relay NAT,它使用媒体中继服务器提供回退NAT遍历技术,以促进端点之间的媒体传输.

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

2.信号是协调沟通的过程.此信号部分需要由您根据您的需要实现(例如,如果您有sip结构,那么您将不得不实施SIP信令).为了使WebRTC应用程序设置"呼叫",其客户端需要交换信息:

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

    1. 脚步

    提供者:

  • 首先创建对等连接,并将冰候选者作为参数传递给它.

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

    • onicecandidate-- onicecandidate返回本地生成的ICE候选者,因此您可以将它们传递给其他对等体,即STUN/TURN服务器返回的候选冰列表; 这些冰候选者包含您的公共ipv4/ipv6地址以及UDP随机地址
    • onaddstream - onaddstream返回远程流(你朋友的麦克风和相机!).
      • addStream`将您的本地麦克风和摄像头连接到其他对等端.

现在通过调用setLocalDescription函数创建SDP商品,并通过调用setRemoteDescription设置远程SDP.

对于回答者:

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

我希望这会让你的一些疑惑变得清晰.