iOSのWebRTCで受け取ったSDPをセットしてもエラーになってしまうんですけど
iOSの場合は受け取ったデータそのままだとエラーになってしまう場合があるよ

iOS で GoogleWebRTC を使って WebRTC を行おうとしたのですが、Offer の SDP受信でトラブルが発生しました。

呼び出し側から送信された Offer の SDP をWebSocketで受信して、受信したSDPをそのまま以下のようなコードで RemoteSDP としてセットしました。

RTCSessionDescription *remoteSdp = [[RTCSessionDescription alloc] initWithType:RTCSdpTypeOffer sdp:sdp];
NSLog(@"remotesdp.sdp=%@",remoteSdp.sdp);
[self.connection setRemoteDescription:remoteSdp completionHandler:^(NSError * _Nullable error) {
    NSLog(@"setRemoteDescription completion");
    if(error){
        NSLog(@"error %@",error.localizedDescription);
    } else {

すると以下のようなエラー表示がログに出力されてしまいました。

2019-01-07 21:04:24.676059+0900 WebKitRTCTest[5927:2005926] error SessionDescription is NULL.

ソケットで受け取った文字列にはちゃんとSDPが入っているので、いまいち正確な原因はわかりません。

試行錯誤の結果、対応策としては

SDP文字列の最後に空行を加える

でした。

sdp = [sdp stringByAppendingString:@"\n"];

こんな感じで remoteSdp を作る前に空行を入れてあげてください。

通信の過程で改行が削られてしまったのかなぁ。。