fix(android): skip Google Sign-In package on devices without GMS#17181
Open
iospro wants to merge 1 commit intojitsi:masterfrom
Open
fix(android): skip Google Sign-In package on devices without GMS#17181iospro wants to merge 1 commit intojitsi:masterfrom
iospro wants to merge 1 commit intojitsi:masterfrom
Conversation
|
Hi, thanks for your contribution! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On Huawei devices (and other Android devices without Google Mobile Services),
loading
RNGoogleSigninPackagevia reflection triggers unnecessary system alertswarning the user that Google Play Services are missing. This happens even when
Google Sign-In is never actually used in the app.
Solution
Before loading
RNGoogleSigninPackage, check whether Google Play Services areinstalled using
PackageManager. If GMS are not present, the package is silentlyskipped and a debug log entry is written instead.
Changes
ReactInstanceManagerHolder.java:getReactNativePackages()now acceptsApplicationcontext to enable the GMS checkisGooglePlayServicesAvailable(Context)— queriesPackageManagerforcom.google.android.gms, no GMS dependency required, safe on any deviceRNGoogleSigninPackageis only registered when GMS are confirmed availableinitReactInstanceManager(app)passesapptogetReactNativePackages(app)Why PackageManager instead of GoogleApiAvailability
GoogleApiAvailability.isGooglePlayServicesAvailable()itself requires GMS to bepresent and can trigger the same alerts we are trying to avoid. The
PackageManagerapproach has no GMS dependency and works correctly on Huawei/AOSP devices.
Behaviour
RNGoogleSigninPackageloaded as before