Я реализовал WebRTC в своем приложении для iOS, используя следующую ссылку:
Код ссылки AppRTC от Google для iOS
Я успешно реализовал свой голосовой / видеочат и проверил этот URL: https://appr.tc/
Указанный выше URL предназначен только для демонстрационных целей, так как соединение будет длиться дольше, до одной минуты.
Итак, моя бэкэнд-команда решает создать наши собственные серверы STUN и TURN.
Мы создали собственный сервер STUN & TURN на основе следующей ссылки и установили его на нашем сервере:
STUN & TURN ссылка на сервер
Здесь мы обнаружили одну новую проблему при создании объекта однорангового соединения: он генерирует нулевой объект при добавлении к нашим серверам STUN и TURN в конфигурациях.
Пожалуйста, найдите мой фрагмент кода из следующего:
// Create peer connection.
NSString *value = _isLoopback ? @"false" : @"true";
NSDictionary *optionalConstraints = @{ @"DtlsSrtpKeyAgreement" : value };
RTCMediaConstraints *constraints =
[[RTCMediaConstraints alloc]
initWithMandatoryConstraints:nil
optionalConstraints:optionalConstraints];
RTCConfiguration *config = [[RTCConfiguration alloc] init];
RTCCertificate *pcert = [RTCCertificate generateCertificateWithParams:@{
@"expires" : @100000,
@"name" : @"RSASSA-PKCS1-v1_5"
}];
config.iceServers = _iceServers; // OWN STUN & STUN servers
config.sdpSemantics = RTCSdpSemanticsUnifiedPlan;
config.certificate = pcert;
config.bundlePolicy = RTCBundlePolicyMaxBundle; // For checking purpose
config.iceTransportPolicy = RTCIceTransportPolicyAll; // Default value
_peerConnection = [_factory peerConnectionWithConfiguration:config
constraints:constraints
delegate:self];
Замечание:
- Здесь объект "_peerConnection" генерирует ноль для моих IceServers, поэтому дальнейший код не выполняется.
- Если я удалил iceServers во время настройки (то есть без iceServers), я мог бы успешно подключиться к другим одноранговым узлам и сделать голосовой / видео чат.
Примечание: