RTCDataChannel无法运行iOS

时间:2015-05-08 05:16:36

标签: ios webrtc rtcdatachannel

我正在使用RTCDataChannel。但是我通过频道发送的消息没有在另一个对等方接收。

以下是代码:

        let audioConstraint : RTCPair = RTCPair(key: "OfferToReceiveAudio", value: "true")
        let videoConstraint : RTCPair = RTCPair(key: "OfferToReceiveVideo", value: "true")
        let dtlsConstraint : RTCPair = RTCPair(key: "DtlsSrtpKeyAgreement", value: "true")
        let mediaContraints : RTCMediaConstraints = RTCMediaConstraints(mandatoryConstraints: [audioConstraint, videoConstraint], optionalConstraints: [ dtlsConstraint])

        RTCPeerConnectionFactory.initializeSSL()
        peerConnection = peerConnectionFactory.peerConnectionWithICEServers(servers, constraints: mediaContraints, delegate: self)

        dataChannels = peerConnection?.createDataChannelWithLabel(channelName,config: nil)
        dataChannels?.delegate = self


        var message : NSData = NSData(base64EncodedString: "helloo")
        var buffer : RTCDataBuffer = RTCDataBuffer(data: message, isBinary: true)
        dataChannels?.sendData(buffer)

2 个答案:

答案 0 :(得分:3)

你解决了吗? 两个对等体中的一个应该创建数据通道,而另一个应该将接收的数据通道对象附加到其数据通道对象。 发起方应在发送商品之前创建数据通道。希望这可能会有所帮助

答案 1 :(得分:0)

在我将选项设置为nil之前,我遇到了同样的问题。如果我跳过steamId,它就不会发送。即使频道是开放的。

RTCDataChannelInit *dataInit = [[RTCDataChannelInit alloc] init];
dataInit.isNegotiated = YES;
dataInit.isOrdered = YES;
dataInit.maxRetransmits = 30;
dataInit.maxRetransmitTimeMs = 30000;
dataInit.streamId = 12;  //important setting
self.dataChannel = [_peerConnection createDataChannelWithLabel:kRTCDataChannelLabel config:dataInit];
self.dataChannel.delegate = self;