Пытаясь установить канал данных WebRTC с помощью API Objective C, я не могу получить ни один из обратных вызовов RTCDataChannelDelegate для фактического перехвата. Кажется, что все идет нормально в отношении однорангового соединения, но я дошел только до того момента, когда поток однорангового соединения был успешно добавлен.
Мои шаги примерно:
Создать предложение:
_channel = [_connection createDataChannelWithLabel: @"offer-1"
config: [[RTCDataChannelInit alloc] init]];
_channel.delegate = _stateMachine;
[_connection createOfferWithDelegate: _stateMachine constraints: [[RTCMediaConstraints alloc] init]];
SDP клиента 1 отправляется клиенту 2, где создается ответ:
[_connection setRemoteDescriptionWithDelegate: _stateMachine sessionDescription: [[RTCSessionDescription alloc] initWithType: @"offer" sdp: sdp]];
[_connection createAnswerWithDelegate: _stateMachine constraints: [[RTCMediaConstraints alloc] init]];
SDP клиента 2 отправляется обратно клиенту 1:
[_connection setRemoteDescriptionWithDelegate: _stateMachine sessionDescription: [[RTCSessionDescription alloc] initWithType: @"answer" sdp: sdp]];
После этого я добавляю медиапоток со стабильной сигнализацией. Раньше, во время моего POC, я мог получить обратные вызовы канала данных, но я не совсем уверен, что мне здесь не хватает.
Вот настройка однорангового соединения:
RTCPeerConnectionFactory* _cfactory = [[RTCPeerConnectionFactory alloc] init];
NSArray* mandatory = @[
[[RTCPair alloc] initWithKey:@"DtlsSrtpKeyAgreement" value:@"true"],
[[RTCPair alloc] initWithKey:@"internalSctpDataChannels" value:@"true"],
];
RTCMediaConstraints* pcConstraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints: mandatory
optionalConstraints: nil];
RTCICEServer* server = [[RTCICEServer alloc] initWithURI:[NSURL URLWithString:@"stun:stun.l.google.com:19302"]
username: @""
password: @""];
NSArray* servers = @[server];
_connection = [_cfactory peerConnectionWithICEServers: servers
constraints: pcConstraints
delegate: _stateMachine];
Мой конечный автомат реализует следующее со всеми присутствующими методами:
@protocol DelegateAggregator
<RTCPeerConnectionDelegate, RTCSessionDescriptionDelegate, RTCDataChannelDelegate, RTCStatsDelegate>
@end
Есть ли что-то, что мне здесь не хватает? Кажется, канал устанавливается и добавляется медиапоток (мне нужны только данные), но без каких-либо обратных вызовов. Могу ли я включить больше журналов? Любая помощь приветствуется!