使用 WebRTC 构建 iOS 个本机应用程序
Building iOS Native App using WebRTC
我找了4天,没找到。我构建了所有库并将其集成到我的自定义项目中,但我不知道应该执行哪些步骤才能使其正常工作。我用代码 example\explanation 发现的唯一东西是 tech.appear.in/2015/05/25/Getting-started-with-WebRTC-on-iOS ,但它对我来说很差而且不清楚,AppRTCDemo 源代码也是。我阅读了有关浏览器的 WebRTC,但仍然无法在 iOS 上重现它。
任何人都可以解释或提供 links 来解释如何使用 WebRTC API 完全构建 iOS 本机应用程序,例如 p2p ios 聊天吗?
除了看不懂demo中提供的代码逻辑外,看不懂:
1) 我的 iOS 应用程序的 ICE 服务器是什么?我应该照顾它吗?它是服务器端的东西吗?我应该自己编码并运行,还是可以使用现有的 Parse 背景?
2) iOS 应用程序中的信号机制是什么?是仅在客户端实现,还是也必须在服务器端实现?
3) 也许有人可以解释分步指南,也许还有一些代码,如何使用 WebRTC 实现简单的 iOS p2p 聊天?例如:
“你必须:
使用此 =source= 和本教程 =tutorial= 在解析核心上创建 ICE/STUN/TURN 服务器。
使用创建的 ICEServer 创建 RTCPeerConnection:
RTCPeerConnectionFactory *pcFactory = [[RTCPeerConnectionFactory alloc] init];
RTCPeerConnection *peerConnection = [pcFactory peerConnectionWithICEServers:kICEServerURL constraints:nil delegate:self];
使用 ...
创建 DataChannel
使用...
发送信号在这里解释=link=
设置本地和远程描述...
使用...
发送数据...
...”或类似的东西。
很抱歉问这个问题,但我正在失去理智试图弄明白。谢谢!
几个月前我完成了实施过程。我发现图书馆不稳定 - 有时它工作有时不工作。
此外,我的 iPhone 在使用时总是会变热。
我不建议将这个库和整个 WebRTC 技术用于商业项目。
这是我的实现,几个月前就可以运行了:
https://github.com/aolszak/WebRTC-iOS
祝你好运!
我不是 webrtc 方面的专家,但我会尝试解释您的一些问题。
1.ICE 服务器——NAT 和防火墙在设置 IP 端点时造成严重问题。因此开发了 IETF 标准 STUN、TURN 和 ICE 来解决 NAT 穿越问题。
STUN 帮助连接 IP 端点:
- 发现他们是否在 NAT/firewall 后面,如果是,
- 确定public IP地址和防火墙类型。 STUN 然后使用此信息来协助建立对等 IP 连接。
TURN,代表使用中继 NAT 的遍历,提供使用媒体中继服务器的回退 NAT 遍历技术,以促进端点之间的媒体传输。
ICE 是一个框架,它利用 STUN 和 TURN 提供可靠的 IP 设置和媒体传输,通过 SIP offer/answer 模型让端点交换多个候选 IP 地址和端口(例如私有地址和 TURN 服务器地址)。
2.Signaling是协调通信的过程。此信令部分需要由您根据需要实施(例如,如果您有 sip 结构,则必须实施 sip 信令)。为了让 WebRTC 应用程序设置 'call',其客户端需要交换信息:
- 用于打开或关闭通信的会话控制消息。
- 错误信息。
- 媒体元数据,例如编解码器和编解码器设置、带宽和媒体类型。
- 关键数据,用于建立安全连接。
网络数据,如主机的IP地址和外界看到的端口。
- 步骤
要约人:
首先创建peer连接,将ice candidates传进去
作为参数。
为三个事件设置事件处理程序:
- onicecandidate-- onicecandidate returns 本地生成的 ICE 候选人,因此您可以将它们传递给其他对等方,即 STUN/TURN 服务器返回的 ice 候选人列表;这些 ice candidates 包含您的 public ipv4/ipv6 地址以及 UDP 随机地址
- onaddstream--onaddstream returns 远程流(你朋友的麦克风和摄像头!)。
- addStream` 为其他对等点附加您的本地麦克风和摄像头。
现在通过调用 setLocalDescription 函数创建 SDP 报价并通过调用 setRemoteDescription 设置远程 SDP。
回答者:
- 设置远程描述
- 创建答案
- 设置本地描述
- oniceCandidate--获取本地生成的 ICE
- addiceCandidate--获取其他节点发送的 ICE
- onaddstream--用于远程流添加
我希望这会澄清你的一些疑虑。
我找了4天,没找到。我构建了所有库并将其集成到我的自定义项目中,但我不知道应该执行哪些步骤才能使其正常工作。我用代码 example\explanation 发现的唯一东西是 tech.appear.in/2015/05/25/Getting-started-with-WebRTC-on-iOS ,但它对我来说很差而且不清楚,AppRTCDemo 源代码也是。我阅读了有关浏览器的 WebRTC,但仍然无法在 iOS 上重现它。 任何人都可以解释或提供 links 来解释如何使用 WebRTC API 完全构建 iOS 本机应用程序,例如 p2p ios 聊天吗?
除了看不懂demo中提供的代码逻辑外,看不懂:
1) 我的 iOS 应用程序的 ICE 服务器是什么?我应该照顾它吗?它是服务器端的东西吗?我应该自己编码并运行,还是可以使用现有的 Parse 背景?
2) iOS 应用程序中的信号机制是什么?是仅在客户端实现,还是也必须在服务器端实现?
3) 也许有人可以解释分步指南,也许还有一些代码,如何使用 WebRTC 实现简单的 iOS p2p 聊天?例如:
“你必须:
使用此 =source= 和本教程 =tutorial= 在解析核心上创建 ICE/STUN/TURN 服务器。
使用创建的 ICEServer 创建 RTCPeerConnection:
RTCPeerConnectionFactory *pcFactory = [[RTCPeerConnectionFactory alloc] init]; RTCPeerConnection *peerConnection = [pcFactory peerConnectionWithICEServers:kICEServerURL constraints:nil delegate:self];
使用
...
创建 DataChannel
使用
...
发送信号在这里解释=link=设置本地和远程描述
...
使用
...
发送数据...”或类似的东西。
...
很抱歉问这个问题,但我正在失去理智试图弄明白。谢谢!
几个月前我完成了实施过程。我发现图书馆不稳定 - 有时它工作有时不工作。
此外,我的 iPhone 在使用时总是会变热。
我不建议将这个库和整个 WebRTC 技术用于商业项目。
这是我的实现,几个月前就可以运行了:
https://github.com/aolszak/WebRTC-iOS
祝你好运!
我不是 webrtc 方面的专家,但我会尝试解释您的一些问题。
1.ICE 服务器——NAT 和防火墙在设置 IP 端点时造成严重问题。因此开发了 IETF 标准 STUN、TURN 和 ICE 来解决 NAT 穿越问题。 STUN 帮助连接 IP 端点:
- 发现他们是否在 NAT/firewall 后面,如果是,
- 确定public IP地址和防火墙类型。 STUN 然后使用此信息来协助建立对等 IP 连接。
TURN,代表使用中继 NAT 的遍历,提供使用媒体中继服务器的回退 NAT 遍历技术,以促进端点之间的媒体传输。
ICE 是一个框架,它利用 STUN 和 TURN 提供可靠的 IP 设置和媒体传输,通过 SIP offer/answer 模型让端点交换多个候选 IP 地址和端口(例如私有地址和 TURN 服务器地址)。
2.Signaling是协调通信的过程。此信令部分需要由您根据需要实施(例如,如果您有 sip 结构,则必须实施 sip 信令)。为了让 WebRTC 应用程序设置 'call',其客户端需要交换信息:
- 用于打开或关闭通信的会话控制消息。
- 错误信息。
- 媒体元数据,例如编解码器和编解码器设置、带宽和媒体类型。
- 关键数据,用于建立安全连接。
网络数据,如主机的IP地址和外界看到的端口。
- 步骤
要约人:
首先创建peer连接,将ice candidates传进去 作为参数。
为三个事件设置事件处理程序:
- onicecandidate-- onicecandidate returns 本地生成的 ICE 候选人,因此您可以将它们传递给其他对等方,即 STUN/TURN 服务器返回的 ice 候选人列表;这些 ice candidates 包含您的 public ipv4/ipv6 地址以及 UDP 随机地址
- onaddstream--onaddstream returns 远程流(你朋友的麦克风和摄像头!)。
- addStream` 为其他对等点附加您的本地麦克风和摄像头。
现在通过调用 setLocalDescription 函数创建 SDP 报价并通过调用 setRemoteDescription 设置远程 SDP。
回答者:
- 设置远程描述
- 创建答案
- 设置本地描述
- oniceCandidate--获取本地生成的 ICE
- addiceCandidate--获取其他节点发送的 ICE
- onaddstream--用于远程流添加
我希望这会澄清你的一些疑虑。