Few (but some) RN modules rely on the main Application implementing
ReactApplication.
For Detox to actually work on Android we need the app to be a greenfield
app. Specifically, the main Application must implement ReactApplication.
In order to satisfy this requirement we are introducing a helper
ReactNativeHost implementation which encapsulates our RN integration,
which is what the ReactApplication needs to expose.
While we don't really need this ourselves (except if we end up adopting
Detox) we have known people who fork our app and add dependencies that have
this requirement to it, so this change will help them too.
This event is the event host applications need to listen to for knowing when to
dispose the SDK from now on.
Since the introduction of breakout rooms it's possible that we navigate from one
meeting to another, so there will be several conference join / terminations.
In addition, local track destruction is now moved to SET_ROOM when there is no
room, aka, we are going back to the welcome page or to the black page.
When exiting PiP with by pressing the X the onPictureInPictureModeChanged method
is called. Since onResume is called a while after, in case the maximize button
is called, it's not easy to know if the user pressed the X button, and that was
the cause for exiting PiP.
So, in order to avoid show the user they are still in the meeting, bring the
activity to the foregound so they can hangup.
Android for Enterprise provides special feature for applications to obtain configuration through RestrictionManager remotely by some MDM solution.
Jitsi Meet can be remotely installed and provisioned with a proper URL (making URL not editable by the user) inside the Work Profile or Fully managed device.
It's the source of uncountable problems for which we don't have a good
solution, since they are caused by buggy implementations of self-managed
connection services by manufacturers.
Consolidate all failure cases into a single one: CONFERENCE_TERMINATED. If the
conference ended gracefully no error indicator will be present, otherwise there
will be.
This is done at the app level, not the SDK.
Currently 2 Firebase services are used:
- Crashlytics
- Dynamic Links
They are enabled in tandem, if the appropriate Google services file
(GoogleService-Info.plist on iOS or google-services.json on Android) is found.
Each service needs to be individually enabled in the Firebase console.
Note that Android 9 Pie (API 28) disallows HTTP requests by default, so an
exception was needed in the app in order for the Metro bundler to work in debug
mode.
Glide (which is used by react-native-fast-image) can cause trouble if the host
app (the one using the SDK) is using Glide already.
To avoid this, don't use the builtin AppGlideModule (as the docs recommend) and
let apps define it.