WebRTC 负责PeerConnection 不响设备和处理用户。它是您自己的数据,您需要自己处理。
这就是SignalingServer 参加聚会的地方。一旦你从userId(lets say id is 2)createOffer() 发送到带有目标 userSocketId 的 Singnalling 服务器(这里我将 userId 映射到 SocketId,你也可以映射其他一些字段)。
如果目标 Socket 已注册,它将立即收到带有您在 packet 中的呼叫者信息的来电请求。然后你就可以响铃了。
请参阅我无法在这里解释整个功能,但您应该了解一件事您将不得不利用Signalling server 在两个设备之间共享文本数据。
基本上,您需要拥有要调用的ID,然后只有信令服务器才会在接收端发出特定数据。因此,您需要一个保存所有用户信息的云数据库。
您可以关注Sample mentioned here。本示例中的signalling server 使用NODE.JS,如果您熟悉java,则易于理解和修改。
编辑:- 如果您正在寻找应该从RING 开始的点。好吧,只要您收到 Offer 并打开呼叫 UI(Activity),它就会响起。
记住一件事ICECandiates 不应该丢失所以在发送ICECandiates 列表之前在双方之间使用适当的握手,因为这是设置PeerConnection 的基础。
public void startCallNotification() {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
ringtone = RingtoneManager.getRingtone(this, notification);
ringtone.play();
vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
long[] vibrationCycle = {0, 1000, 1000};
if (vibrator.hasVibrator()) {
vibrator.vibrate(vibrationCycle, 1);
}
}
只要你收到报价就调用上面的方法。显然,您需要处理其他一些情况,例如呼叫者端互联网丢失和连接重置,等待 ICECandidates。
如果您首先了解WebRTC 架构,那么一切都会好起来的。所以我谦虚地建议先阅读结构。您可以从This 和This 或WEBRTC 上的类似博客开始。