diff --git a/sdk/objc/api/peerconnection/RTCPeerConnection.h b/sdk/objc/api/peerconnection/RTCPeerConnection.h index b33cef04bf..77a8dccac1 100644 --- a/sdk/objc/api/peerconnection/RTCPeerConnection.h +++ b/sdk/objc/api/peerconnection/RTCPeerConnection.h @@ -285,6 +285,12 @@ RTC_OBJC_EXPORT addTransceiverOfType:(RTCRtpMediaType)mediaType init:(RTC_OBJC_TYPE(RTCRtpTransceiverInit) *)init; +/** Tells the PeerConnection that ICE should be restarted. This triggers a need + * for negotiation and subsequent offerForConstraints:completionHandler call will act as if + * RTCOfferAnswerOptions::ice_restart is true. + */ +- (void)restartIce; + /** Generate an SDP offer. */ - (void)offerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints completionHandler:(nullable void (^)(RTC_OBJC_TYPE(RTCSessionDescription) * _Nullable sdp, diff --git a/sdk/objc/api/peerconnection/RTCPeerConnection.mm b/sdk/objc/api/peerconnection/RTCPeerConnection.mm index 59fcd0ca93..e3ab65ae30 100644 --- a/sdk/objc/api/peerconnection/RTCPeerConnection.mm +++ b/sdk/objc/api/peerconnection/RTCPeerConnection.mm @@ -537,6 +537,10 @@ void PeerConnectionDelegateAdapter::OnRemoveTrack( nativeRtpTransceiver:nativeTransceiverOrError.MoveValue()]; } +- (void)restartIce { + _peerConnection->RestartIce(); +} + - (void)offerForConstraints:(RTC_OBJC_TYPE(RTCMediaConstraints) *)constraints completionHandler:(void (^)(RTC_OBJC_TYPE(RTCSessionDescription) * sessionDescription, NSError *error))completionHandler {