Description
When I downloaded iOS client sdk version v5.5.12511.0421. Then I unzipped the file and open MobileRTCSample.xcodeproj. Then try to run in iOS version 13.6 . Then I am getting errors as:
** An empty identity is not valid when signing a binary for the product type ‘App Extension’. **
** An empty identity is not valid when signing a binary for the product type ‘Application’.**
So I am not able to even run the project. My xcode version is 12.4 (12D4e).
This has to do with code signing. Navigate to the MobileRTCSample target → Code Signing & Capabilities, then provide a provisioning profile. I usually just use the “Automatically manage signing” button. Set the team to be your team/you. In the bundle identifier text field, provide a unique bundle ID. In that same page under App Groups → uncheck the currently selected app group ID and click your app group ID. Now do the same thing for the MobileRTCSampleScreenShare target (note these must have different bundle ID’s. I usually just append “.screenshare” to the end of the first bundleID for my screenshare bundle ID).
Next go to your build settings of the MobileRTCSample target and search “code signing”. Under “Code signing identity” each one of those options must be populated with a code signing identity. Since I use “automatically manage signing” and I have no intention of shipping this app, I set each one of these values to “Apple Development”. Repeat this process for the screenshare target as well.
We do not yet have a swift version of that application quite yet. However, if there are any features in the sample application you would like swift code for, I am more than happy to translate it for you.
Hi Michael
My use case is to join a meeting in my own ViewController. So that I can add more views in my ViewController.
meetingService.joinMeeting(with: joinMeetingParameters) When I join meeting using this, it opens meeting in some anonymous ViewController(or screen). I am unable to add any view in this.
Please provide me a way to open meeting in a ViewController in which I can add any view through storyboard.
Please provide me a simple solution that would be very great.
If you chose to keep the defaultUI and not create a custom UI, it will handle presentation for you. However, you can get the UIView for the meeting by grabbing the meetingView property: iOS API: MobileRTCMeetingService Class Reference
We have already implemented jitsi for meeting in our application. Now we are planning to integrate Zoom.
Below is the video link of demo of our application (See video from 3:35 minute):
In video, we can see that there is lots of UI in top of meeting. Here what we have done that In a viewController, we add a jitsi view and some more view according to our need.
Do you want the UI to look like the Zoom iOS application UI or to look like the UI above?
The SDK provides two options for UI, one that is default and will look and feel like the Zoom iOS app. Then one that is custom where you can build the entire UI yourself.
And also I don’t want to just customized the meeting UI. I want to add meeting UI in my own ViewController. So that I could do lots of stuff in my ViewController.
Yes, with a custom UI you build out the meeting UI however/wherever you would like. We are aware the custom ui docs are in need of an update and we are trying to provide that soon. In the meantime, here is a thread where I walked through how to set it up using Swift:
Note - this onSinkMeetingUserJoin called two times in my case. I don’t know why. I made some logic inside this method so that only first time updateViews method get called. And again made some logic inside this method so that only second time updateViews method get called. But it’s not working in any case.
You have given method for local user video view (which takes meetingService.activeUserID() as userId) like:
static func localUserVideoView(_ videoAspect: MobileRTCVideoAspect, frame: CGRect) -> MobileRTCVideoView? {
guard let meetingService = MobileRTC.shared().getMeetingService() else { return nil }
let localUserID = meetingService.activeUserID()
let localUserVideoView = MobileRTCVideoView(frame: frame)
localUserVideoView.setVideoAspect(videoAspect)
let showAttendeeVideoSuccessful = localUserVideoView.showAttendeeVideo(withUserID: localUserID)
if showAttendeeVideoSuccessful {
print("Started showing local user video.")
} else {
print("Failed to show local user video.")
}
return localUserVideoView
}
Note - It always gives Failed to show local user video. This problem happens for local user.
One problem is happening for remote user which I explained in above message. Method for remote user video view is as follow:
static func remoteUserVideoView(userID: UInt, videoAspect: MobileRTCVideoAspect, frame: CGRect) -> MobileRTCVideoView? {
let remoteUserVideoView = MobileRTCVideoView(frame: frame)
remoteUserVideoView.setVideoAspect(videoAspect)
let showAttendeeVideoSuccessful = remoteUserVideoView.showAttendeeVideo(withUserID: userID)
if showAttendeeVideoSuccessful {
print("Started showing remote user video.")
} else {
print("Failed to show remote user video.")
}
return remoteUserVideoView
}
I am getting userId from the following method:
extension CustomMeetingUIViewController: MobileRTCUserServiceDelegate {
func onSinkMeetingUserJoin(_ userID: UInt) {
updateViews(userId: userID). // I am getting userId here and call the updateViews function
}
}
After called the function, we get Started showing remote user video. But still video is not visible. I also attached a screenshot in last message.
Please provide me solution of both problem. Please help me @Michael_Condon
Hi @Michael_Condon
Actually the remote video is visible sometimes. But it takes too long time to get the video visible. It seems like no one is on another side.