mieszko4 / react-native-zoom-us

MIT License
122 stars 118 forks source link

[iOS] Implement Custom Meeting UI #113

Open mieszko4 opened 2 years ago

mieszko4 commented 2 years ago

Custom meeting UI will enable to adjust settings like hiding share button. We have this implemented on android.

Steps for implementation on iOS here: https://marketplace.zoom.us/docs/sdk/native-sdks/iOS/mastering-zoom-sdk/in-meeting-function/customized-in-meeting-ui/overview

pmogollons commented 2 years ago

Im going to try to bring this to life. Im starting by making meeting events on par with android. After that ill try to get the custom view.

pmogollons commented 2 years ago

I havent been able to get it right yet, the documentation is not good at all. I found this forum post, is in swift, but might help us to get this done.

pmogollons commented 2 years ago

@mieszko4 unfortunatelly I was not abkle to advance much on this. I can commit up to $500USD as a bounty to get iOS on pair with android, for anyone that could get this up and running.

mieszko4 commented 2 years ago

no worries @pmogollons I also do not have much time to commit into that but I would be willing to do that when I find some time.

:thinking: I have mixed feelings about bounty - I initially thought of this project as a fun little hobby and I am really happy to see people's contributions...

pmogollons commented 2 years ago

I can relate, it's still a possibility if you or anyone else would like to contribute this feature.

mieszko4 commented 2 years ago

:+1:

pmogollons commented 2 years ago

Hi @mieszko4, Im hiring this week someone to get this task done. Maybe we can chat and check if there are some other tasks we might want to give this dev to get done.

mieszko4 commented 2 years ago

@pmogollons Thnx! I think we should first check the quality of this task when done and then decide about any other tasks. I wouldn't like to merge anything that me or others cannot follow. Also note that I am currently not using this plugin actively but I am still willing to comment on the pr and do the testing.

pmogollons commented 2 years ago

@mieszko4 looks like this was not a good idea and the dev was not able to do the task. If you have some spare time I will like to offer double the previous amount to get this done.

Let me know if you might be interested. Thanks.

mieszko4 commented 2 years ago

@mieszko4 looks like this was not a good idea and the dev was not able to do the task. If you have some spare time I will like to offer double the previous amount to get this done.

Let me know if you might be interested. Thanks.

@pmogollons Thnx for trying anyway :) I do not have some time now unfortunately. And if I had some time I would probably just contribute. Also, if a dedicated dev could not solve it maybe that's a challenge for an experienced iOS developer then...

pmogollons commented 2 years ago

I understand, thanks again.

pmogollons commented 2 years ago

@mieszko4, im have been looking for a dev to tackle this, but looks like no one likes to poke around OS packages, even if paid well.

I was thinking, maybe you know someone that can help us get this done? Im willing to pay for the development of this feature, just need to know before agreeing how much it might cost.

Im still looking for someone, but maybe you might now the right person.

mieszko4 commented 2 years ago

@mieszko4, im have been looking for a dev to tackle this, but looks like no one likes to poke around OS packages, even if paid well.

I was thinking, maybe you know someone that can help us get this done? Im willing to pay for the development of this feature, just need to know before agreeing how much it might cost.

Im still looking for someone, but maybe you might now the right person.

Hey @pmogollons, thnx for looking into that. Must be a real challenge to solve it then! Unfortunately I do not know any iOS developers :(

pmogollons commented 2 years ago

Hi @mieszko4, I found someone that might be able to help with this task. Would you be able to help me draft the requirements for this and also what you will expect this person to do so that you can merge it?

hans00 commented 2 years ago

As I known. In iOS, the video view is separated MobileRTCVideoView, MobileRTCPreviewVideoView, MobileRTCShareView, MobileRTCActiveView. But currently implement is based on Android multiple video on single view.

So maybe

And official demo code

mieszko4 commented 2 years ago

Hi @mieszko4, I found someone that might be able to help with this task. Would you be able to help me draft the requirements for this and also what you will expect this person to do so that you can merge it?

Hi @pmogollons, awesome that you found someone who is willing to do that! Sure I can help. I think in general we want to have a code that works and both you and I understand :) I am not an expert with iOS and I find it pretty hard to read/write objective-c code so it would be great to have implementation in swift. But maybe objective-c is better if all examples in Zoom SDK are in objective-c only.

mieszko4 commented 2 years ago

As I known. In iOS, the video view is separated MobileRTCVideoView, MobileRTCPreviewVideoView, MobileRTCShareView, MobileRTCActiveView. But currently implement is based on Android multiple video on single view.

So maybe

  • Try make views behavior like android

    • Or separate view for Android (That will be breaking change

And official demo code

You mean in android/src/main/java/ch/milosz/reactnative/RNZoomUsVideoView.java you would split this into separate view for activeVideoUnit, shareVideoUnit, previewVideoUnit, attendeeVideoUnit so that they can be rendered at the same time?

I do not think we should be worrying about breaking changes too much.

mieszko4 commented 2 years ago

In general perhaps we should start with React code to understand how we would like to use this because in the end we want to just write React code and have it work the same for both iOS and Android.

hans00 commented 2 years ago

You mean in android/src/main/java/ch/milosz/reactnative/RNZoomUsVideoView.java you would split this into separate view for activeVideoUnit, shareVideoUnit, previewVideoUnit, attendeeVideoUnit so that they can be rendered at the same time?

Yes

I do not think we should be worrying about breaking changes too much.

Ok.

So to compatible iOS SDK, should split into RNZoomUsActiveVideoView, RNZoomUsShareVideoView, RNZoomUsPreviewVideoView and RNZoomUsVideoView.

pmogollons commented 2 years ago

In iOS, the video view is separated MobileRTCVideoView, MobileRTCPreviewVideoView, MobileRTCShareView, MobileRTCActiveView. But currently implement is based on Android multiple video on single view.

Im not sure I follow, currently there is no implementation of Custom UI on iOS.

Im telling this guy the specs of what we need like this, but with no guide on how he should code it.


The mieszko4/react-native-zoom-us package will integrate the custom UI feature of zoom iOS SDK, this feature is already working for android and this job will get all the same functionality to iOS.

pmogollons commented 2 years ago

So, what I see is that is important to have one view that can render any amount of subviews that are passed in the layout props as it is done right now with android.

pmogollons commented 2 years ago

By the way, this guy is charging 1800, so if you guys think you can do it im willing to pay for it.

mieszko4 commented 2 years ago

Im not sure I follow, currently there is no implementation of Custom UI on iOS.

:thinking: Perhaps @hans00 meant what there exists in iOS Zoom SDK

mieszko4 commented 2 years ago

The mieszko4/react-native-zoom-us package will integrate the custom UI feature of zoom iOS SDK, this feature is already working for android and this job will get all the same functionality to iOS.

  • User should be able to pass enableCustomizedMeetingUI to select between custom UI or default UI
  • When enableCustomizedMeetingUI = true the package custom UI component should receive a prop called layout (array of views) that will render the specified view in the zoom sdk custom UI
  • These views will have the following properties: kind, x, y, width, height, border, showUsername, showAudioOff, background, userIndex and aspectMode.
  • These view properties will be used to render these views in the custom UI.
  • The layout should be able to be updated programmatically at any moment
  • The layout will be updated automatically as the active speaker, screen shares or any video and screen share events are received.
  • The layout can have more than one view rendered at the same time.
  • Users should be able to share screen from iOS.
  • Every functionality already present on the package up to march 21 of 2022 should be working on iOS.
  • Functionality should be tested with the mieszko4/react-native-zoom-us-test repo so that it can be merged by the repo owner.

Sounds good! Looking forward for the implementation. We basically trying to accomplish on iOS what is already working on Android without need of changing React code which I think is great!

mieszko4 commented 2 years ago

By the way, this guy is charging 1800, so if you guys think you can do it im willing to pay for it.

I would do that for free but it would probably take me a lot of time since I am not an expert in iOS and I do not really have time to sacrifice for this challenge :) So I am hoping this guy can handle this.

pmogollons commented 2 years ago

Perfect, let's do it this way. I think after having a functional iOS code we can handle improvements afterwards.

akanz commented 1 year ago

Hey @pmogollons thanks for your active contribution and also thanks to @mieszko4 for this bridge. I wanted to ask if the feature has been done or has it been dropped?

mieszko4 commented 1 year ago

Hey @pmogollons thanks for your active contribution and also thanks to @mieszko4 for this bridge. I wanted to ask if the feature has been done or has it been dropped?

Not done yet. We still do not have anyone who could handle iOS part...

Ramanpreet-hcode commented 3 months ago

Hi @mieszko4 I just wanted to ask, is there any way to hide meetingId and passcode for IOS devices now?