# iOS native client support

**URL:** <https://mediasoup.discourse.group/t/ios-native-client-support/421>\
**Category:** mediasoup libraries\
**Created:** [November 21, 2019, 9:42am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421 "2019-11-21T09:42:04Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [March 2, 2020, 4:02am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/24 "2020-03-02T04:02:33Z")

</div>

> VP9 support (iOS does not enable VP9 support by default)

Supported!

> Bitcode support

mediasoup ios supported, however due to the size of WebRTC.framework with bitcode it cannot be uploaded to github without lfs… WebRTC.framework would need to be build locally if bitcode is required.

---

<div class="post-metadata">

**Author:** ![txyhost](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/txyhost/32/348_2.png) [@txyhost](https://mediasoup.discourse.group/u/txyhost)\
**Post date:** [May 7, 2020, 1:28am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/25 "2020-05-07T01:28:20Z")

</div>

> [@ethand91](#):
>
> iOS does not enable VP9 support by default

How to enable VP9 and H264

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [May 7, 2020, 2:47am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/26 "2020-05-07T02:47:22Z")

</div>

I updated your issue.

---

<div class="post-metadata">

**Author:** ![txyhost](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/txyhost/32/348_2.png) [@txyhost](https://mediasoup.discourse.group/u/txyhost)\
**Post date:** [May 7, 2020, 6:33am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/27 "2020-05-07T06:33:53Z")

</div>

I need to update which library on GitHub？

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [May 7, 2020, 8:32am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/28 "2020-05-07T08:32:58Z")

</div>

You would need to build the webrtc libraries with h264 enabled.

You can use the below as a reference:

> <https://github.com/ethand91/mediasoup-ios-client/blob/master/build/mediasoup@3%20iOS%20WebRTC%20Framework%20Build%20Instructions.md>

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [June 4, 2020, 1:11am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/30 "2020-06-04T01:11:39Z")

</div>

Please redirect all issues to the github page, with a lot more detail.

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [June 29, 2020, 12:55am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/31 "2020-06-29T00:55:24Z")

</div>

API Documentation added.

> <https://github.com/ethand91/mediasoup-ios-client/blob/master/documentation/Api.md>

---

<div class="post-metadata">

**Author:** ![jmillan](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/jmillan/32/9_2.png) [@jmillan](https://mediasoup.discourse.group/u/jmillan)\
**Post date:** [June 30, 2020, 10:56am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/32 "2020-06-30T10:56:48Z")

</div>

🥳

---

<div class="post-metadata">

**Author:** ![riyazpanarwala](https://avatars.discourse-cdn.com/v4/letter/r/919ad9/32.png) [@riyazpanarwala](https://mediasoup.discourse.group/u/riyazpanarwala)\
**Post date:** [July 21, 2020, 4:28pm UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/33 "2020-07-21T16:28:01Z")

</div>

Hi ethand91, Do you have any iOS client repo which can communicate with mediasoup-demo.

Thanks

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [July 22, 2020, 1:41am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/34 "2020-07-22T01:41:27Z")

</div>

Not yet, sorry.

---

<div class="post-metadata">

**Author:** ![riyazpanarwala](https://avatars.discourse-cdn.com/v4/letter/r/919ad9/32.png) [@riyazpanarwala](https://mediasoup.discourse.group/u/riyazpanarwala)\
**Post date:** [July 24, 2020, 9:45am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/35 "2020-07-24T09:45:41Z")

</div>

Thanks ethand91.  
Are you building Chat message support in iOS client repo (consumeData event) ?

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [July 27, 2020, 12:47am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/36 "2020-07-27T00:47:30Z")

</div>

> Are you building Chat message support in iOS client repo (consumeData event) ?

Will consider implementing it 🙂

---

<div class="post-metadata">

**Author:** ![tanaymondal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/tanaymondal/32/579_2.png) [@tanaymondal](https://mediasoup.discourse.group/u/tanaymondal)\
**Post date:** [September 22, 2020, 1:55pm UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/37 "2020-09-22T13:55:02Z")

</div>

Is ios library by ethand91 in working condition? I tried implementing with mediasoup protoo server backend. But I am getting error when calling when calling sendTransport.produce()…

[ERROR] transport\_wrapper::+[TransportWrapper nativeProduce:listener:track:encodings:codecOptions:appData:](https://github.com/ethand91/mediasoup-ios-client/issues/70) | The associated promise has been destructed prior to the associated state becoming ready.

Can anyone please help?

---

<div class="post-metadata">

**Author:** ![sivakumaraketi](https://avatars.discourse-cdn.com/v4/letter/s/c67d28/32.png) [@sivakumaraketi](https://mediasoup.discourse.group/u/sivakumaraketi)\
**Post date:** [September 22, 2020, 6:46pm UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/38 "2020-09-22T18:46:27Z")

</div>

Hi do you implemented Simulcast means group video calling, If yes please help me.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [September 22, 2020, 6:52pm UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/39 "2020-09-22T18:52:32Z")

</div>

Help to what? Are you asking for free consultancy?

---

<div class="post-metadata">

**Author:** ![ethand91](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ethand91/32/14_2.png) [@ethand91](https://mediasoup.discourse.group/u/ethand91)\
**Post date:** [September 23, 2020, 2:05am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/40 "2020-09-23T02:05:16Z")

</div>

I haven’t tried using mediasoup protoo server…

The problem is that you are probably calling the produce callback on a different thread. Could you try calling the produce callback on the same thread you called produce on?

---

<div class="post-metadata">

**Author:** ![sivakumaraketi](https://avatars.discourse-cdn.com/v4/letter/s/c67d28/32.png) [@sivakumaraketi](https://mediasoup.discourse.group/u/sivakumaraketi)\
**Post date:** [September 23, 2020, 2:46am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/41 "2020-09-23T02:46:07Z")

</div>

thanks for the reply, I am done with 1 to 1 mediasoup and for 1 to many. handled like below  
I am taking from this [https://github.com/ethand91/mediasoup-ios-client-sample](https://github.com/ethand91/mediasoup-ios-client-sample)  
for new peer added  
case “newPeer”:  
isRemoteVideo = true  
self.handleNewConsumerEvent(consumerInfo: data![“data”])

and and added for video added like below  
extension VideoCallVC : RoomListener {  
func onNewConsumer1(consumer: Consumer) {  
print(“RoomListener::onNewConsumer kind1=” + consumer.getKind())  
print(consumer.getTrack())  
if consumer.getKind() == “video” {  
let videoTrack: RTCVideoTrack = consumer.getTrack() as! RTCVideoTrack  
videoTrack.isEnabled = true

```auto
        videoTrack.add(self.videoRemoteCamera1)
        
    }
    
    do {
        
        consumer.getKind() == "video"
            ? try self.client!.resumeRemoteVideo1()
            : try self.client!.resumeRemoteAudio()
    } catch {
        print("onNewConsumer() failed to resume remote track")
    }
}
...... And help means i am stuck at this place bro, Please tell me bro is i need to pay something.
```

---

<div class="post-metadata">

**Author:** ![tanaymondal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/tanaymondal/32/579_2.png) [@tanaymondal](https://mediasoup.discourse.group/u/tanaymondal)\
**Post date:** [September 23, 2020, 9:55am UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/43 "2020-09-23T09:55:44Z")

</div>

Ok, finally promise issue is resolved. But after produce, the video is not showing on mediasoup demo server from ios. The resolution is showing as 0x0. But audio producing is successful. What am I doing wrong?

```auto
    private func produceVideo(){
        
        let devices = AVCaptureDevice.devices(for: .video)

        // Start capturing it
        let factory = RTCPeerConnectionFactory()
        let videoCapturer = RTCCameraVideoCapturer()
        videoCapturer.startCapture(with: devices[0], format: devices[0].activeFormat, fps: 30)
        let videoSource = factory.videoSource()
        videoSource.adaptOutputFormat(toWidth: 640, height: 480, fps: 30)

        let videoTrack = factory.videoTrack(with: videoSource, trackId: "ARDAMSv0")
        
        let codecOptions: JSON = [
            "videoGoogleStartBitrate": 1000
        ]
        
        let produceHandler = ProduceHandler()
        produceHandler.delegate = produceHandler
        
        
        let producer = sendTransport?.produce(produceHandler.delegate, track: videoTrack, encodings: nil, codecOptions: codecOptions.description)
        
    }

```

```auto
private class SendTransportHandler : NSObject, SendTransportListener {
        fileprivate weak var delegate: SendTransportListener?
        private var socket: EchoSocket
        
        init(mSocket: EchoSocket) {
            self.socket = mSocket
        }
        func onConnect(_ transport: Transport!, dtlsParameters: String!) {
            print("Current Thread Send Handler 2: \(Thread.current)")
            
            var json = JSON()
            json["transportId"].string = transport.getId()
            json["dtlsParameters"] = JSON.init(parseJSON: dtlsParameters!)
            
            let jsonReturn = Request.shared.connectWebRtcTransport(socket: self.socket, json: json)
            print("SendTransport::onConnect: \(jsonReturn)")
        }
        
        func onConnectionStateChange(_ transport: Transport!, connectionState: String!) {
            print("SendTransport::onConnectionStateChange connectionState = " + connectionState)
        }
        
        func onProduce(_ transport: Transport!, kind: String!, rtpParameters: String!, appData: String!, callback: ((String?) -> Void)!) {
            print("SendTransport::onProduce connectionState = " + rtpParameters)
            
            
            let rtpParam = JSON.init(parseJSON: rtpParameters)
            print("rtpParameters \(rtpParam)")
            
            var json = JSON()
            json["transportId"].string = transport.getId()
            json["kind"].string = kind
            json["rtpParameters"] = rtpParam
            json["appData"].string = appData
            
            print("onProduce JSON: \(json)")
            
            let jsonReturn : JSON = Request.shared.produce(socket: self.socket, produceJson: json)
            print("onProduce JsonReturn: \(jsonReturn)")
            let producerId = jsonReturn["data"]["id"].string
            print("onProduce ProducerID: \(producerId ?? "NA")")
            callback(producerId)
        }
    }

```

---

<div class="post-metadata">

**Author:** ![tanaymondal](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/tanaymondal/32/579_2.png) [@tanaymondal](https://mediasoup.discourse.group/u/tanaymondal)\
**Post date:** [September 24, 2020, 12:09pm UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/44 "2020-09-24T12:09:48Z")

</div>

I am unable to consume anything as I never get the “newConsumer” events. It is odd since I do receive other events such as “newPeer” or “activeSpeaker". Any help is appreciated.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [September 24, 2020, 12:21pm UTC](https://mediasoup.discourse.group/t/ios-native-client-support/421/45 "2020-09-24T12:21:16Z")

</div>

Please don’t ask the same question is different threads. There is no “newConsumer” event in mediasoup libraries, that’s demo stuff.

[Previous page](https://mediasoup.discourse.group/t/ios-native-client-support/421.md?page=1)

[Next page](https://mediasoup.discourse.group/t/ios-native-client-support/421.md?page=3)
