iOS native client support

Yes, I am making mediasoup iOS demo which communicates with mediasoup demo server.

1 Like

I am getting below mediasoup related issue when uploading the appstore

App Store Connect Operation Error
ERROR ITMS-90087: “Unsupported Architectures. The executable for encounternow.app/Frameworks/mediasoup_client_ios.framework/Frameworks/WebRTC.framework contains unsupported architectures ‘[i386, x86_64]’.”
App Store Connect Operation Error
ERROR ITMS-90685: “CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value ‘org.webrtc.WebRTC’ under the iOS application ‘encounternow.app’.”
App Store Connect Operation Error
ERROR ITMS-90209: “Invalid Segment Alignment. The app binary at ‘encounternow.app/Frameworks/mediasoup_client_ios.framework/Frameworks/WebRTC.framework/WebRTC’ does not have proper segment alignment. Try rebuilding the app with the latest Xcode version.”
App Store Connect Operation Error
ERROR ITMS-90205: “Invalid Bundle. The bundle at ‘encounternow.app/Frameworks/mediasoup_client_ios.framework’ contains disallowed nested bundles.”
App Store Connect Operation Error
ERROR ITMS-90206: “Invalid Bundle. The bundle at ‘encounternow.app/Frameworks/mediasoup_client_ios.framework’ contains disallowed file ‘Frameworks’.”
App Store Connect Operation Error
ERROR ITMS-90125: “The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid, or the binary is already encrypted. This binary does not seem to have been built with Apple’s linker.”
App Store Connect Operation Warning
WARNING ITMS-90806: “CFBundleIdentifier collision. Each bundle must have a unique bundle identifier. The bundle identifier ‘org.webrtc.WebRTC’ is used in the bundles ‘[Payload/encounternow.app/Frameworks/mediasoup_client_ios.framework/Frameworks/WebRTC.framework, Payload/encounternow.app/Frameworks/WebRTC.framework]’”
App Store Connect Operation Warning
WARNING ITMS-90080: “The executable ‘Payload/encounternow.app/Frameworks/mediasoup_client_ios.framework/Frameworks/WebRTC.framework’ is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables. For more information refer to Technical Q&A QA1788 - Building a Position Independent Executable in the iOS Developer Library.”

using pod https://cocoapods.org/pods/mediasoup_ios_client

You need to strip the simulator architecture (x86_64) from the library.
You can do this in the build phase with a script, if you google the method you should be able to find it.
Either that or I can strip it completely from the library however this would mean you couldn’t run your app on a simulator.

Thanks, everyone for help, finally ios demo is working with the media soup demo server.

Thanks for the reply, I am getting following mail from Apple

Dear Developer,

We identified one or more issues with a recent delivery for your app, . Please correct the following issues, then upload again.

ITMS-90338: Non-public API usage - The app contains or inherits from non-public classes in encounternow: Logger . If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

Best regards,

The App Store Team

Hi are you handled multicast in ios

how you solved the issue

@tanaymondal Can you post the code where you fixed the promise issue, tried many ways but never resolved it back in the days of iOS.

Hi, one of my developers have hit a snag in our ios implementation where

There are no entries to logs.
But before that, the transport changes the status “onConnectionStateChange to:” closed “”

info:
There are two sending transports:

  • audio
  • video
    and
    Two receiving transports:
  • audio
  • video

Thread 1: EXC_BAD_ACCESS (code=1, address=0x146826de0)

class LocalClient: NSObject {

    private(set) var transports: [String: SendTransport] = [ : ]

    func close() {
        
        transports.values.forEach { (sendTransport) in
            
            guard !sendTransport.isClosed() else {
                return
            }
            
             sendTransport.close() 
        }
    }

}

Its also reported on https://github.com/ethand91/mediasoup-ios-client/issues/92

If needed or if thats the correct thing to do, I can also put this in:Job Opportunities

Thanks in advance, Tomas

Seems our Dev found a solution:

Found a solution to the problem.
Are there any other ways to shut down transport, in any other case?

// SendTransportListener / RecvTransportListener
func onConnectionStateChange (_ transport: Transport !, connectionState: String!) {

guard let peerConnectionState = RTCPeerConnectionState (rawValue: connectionState) else {
return
}

switch peerConnectionState {

case .disconnected, .failed:
transport.close ()

default:
return
}

// connectionState is RTCPeerConnectionState
/ *
enum RTCPeerConnectionState {
   "closed",
   "failed",
   "disconnected",
   "new",
   "connecting",
   "connected"
};
* /`

Hello @Seequre_SFU

Thanks for the info,

On my side, close works for rcvTransport but it crashes for sendTransport.

Any idea why ?

Thanks

Sorry, I have a question. Finally, anyone completed production app(that can connect to v3 server https://v3demo.mediasoup.org ) with video call to group. Tested with calling many times, many minutes without hang app or get any issues? we want production app, so need ask everyone about mediasoup library in ios. Thank you very much…

That problem is because the library you use has just one view renderer for all the existing remote video tracks. You just need to mode that view to a Peer object, instead of trying to call
videoTrack.add(self.remoteVideoView)
multiple times.

can i help me about reconnection in mediasoup in swift