Open orkun1675 opened 3 weeks ago
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
Thanks for reaching out, @orkun1675. The error you encountered looks related to config issue. Make sure that the bundle ID you provided in iTunes Connect matches the bundle ID in your Firebase project. You may also double check your Game Center implementation setup (see our docs for more info).
Thanks for your reply @rizafran
Game Center auth requests were working without issue (for the past 1+ years) before the first build we uploaded after the app transfer. Furthermore, our Testflight testers who uninstall the new build and install the old build (that was built using the old Team ID) are able to login again. So I don't think it's a configuration issue.
I've tried uploading a build that utilizes iOS Keychain Access Groups. I.e. setting:
FirebaseAuth.instance.setSettings(userAccessGroup: '<NEW_TEAM_ID>.com.chunkytofustudios.SharedKeychain');
This hasn't worked.
Are there any tricks I can use to better debug this? For example, is it possible to set -FIRDebugEnabled
in Testflight builds?
Currently the printed error message ([firebase_auth/invalid-credential] Invalid signature.
) comes from the following try/catch block (throws FirebaseAuthException):
try {
await firebaseCallWithRetry(
FirebaseService.auth, _auth.signInWithGamesServices);
_log.info('Sucessfully signed into Firebase using Games Services.');
return true;
} on FirebaseAuthGamesServicesException catch (e) {
_log.warning('Failed login due to Games Services error.', e);
} on FirebaseAuthException catch (e) {
_log.warning(
'Failed login due to Firebase Auth error. '
'plugin=${e.plugin} code=${e.code} msg=${e.message} '
'stack=${e.stackTrace} email=${e.email} cred=${e.credential} '
'phone=${e.phoneNumber} tenantId=${e.tenantId} ',
e);
} catch (e) {
_log.warning('Failed login due to unknown error.', e);
}
return false;
Hi @orkun1675, thanks for the repro instructions. Are you able to repro with those instructions? I was wondering if dropping a breakpoint in there could allow for better inspecting the underlying error?
Firebase 11.3+ address some issues in the earlier 11.x versions that involved using Auth.auth(). shareAuthStateAcrossDevices = true
. It doesn't sound like it's being used here, but it could very well be related if the iCloud sharing bool is enabled.
Thank you @ncooke3 for looking into this! Please see my questions below.
I'm unfortunately am no longer able to reproduce this on my physical iPhone. Downloading old build from App Store and installing the new version via XCode or Testflight does not re-trigger the issue.
One hunch we had by looking at logs was the possiblity of iOS version having an impact on the bug reoccurence. However, since iOS emulators cannot access the App Store and physical iPhones cannot downgrade iOS version it is not possible to test this on iOS 17 right now.
Furthermore, since we use Flutter we need to wait for firebase_auth to bump internal dependency to 11.3+
before we can test with it.
I'm going to add more logging to our Testflight builds and ask our beta testers who are still encountering this issue to re-test. I'll report back in a few days.
In the meantime, I wanted to double check something with the GameCenter cred signature validation:
This block of code obtains both the teamPlayerID
and gamePlayerID
from the GKLocalPlayer
.
Note that (1) the teamPlayerID
changes after app transfer (source):
If you transfer your game to another developer, the teamPlayerID property isn’t the same for the new developer. For more information, see Overview of app transfer.
However, (2) gamePlayerID
remains the same (source):
If you transfer your game to another developer, the gamePlayerID property is the same for the new developer. For more information, see Overview of app transfer.
Also note that (3) teamPlayerID
is needed for signature validation (source):
Concatenate the following information into a data buffer in this order: the teamPlayerID (or gamePlayerID for Apple Arcade) property in UTF-8 format, the bundle ID in UTF-8 format, the timestamp parameter in big-endian UInt64 format, and the salt parameter. Use the public key to verify the signature of the concatenated data buffer using the RSASSA-PKCS1-v1_5 algorithm.
Questions
gamePlayerID
to uniquely identify users? Or does it use teamPlayerID
?teamPlayerID
is used during signature validation, is it possible that a stale ID is used after an app transfer? For instance, does Apple cache the GKLocalPlayer
object and thus report a stale teamPlayerID
right after app transfer? Or does Firebase backend cache/store the teamPlayerID
?firebase_auth has upgraded firebase-ios-sdk
version to 11.4
. However, the issue still persists.
@ncooke3 could you PTAL at this as it's blocking us from releasing updates (including critical privacy fixes) to our app? Maybe the questions I've written above are relevant?
Description
Users who already had accounts before an iOS App Transfer are unable to login after the app transfer using GameCenterAuthProvider.
Login attempts throw
[firebase_auth/invalid-credential] Invalid signature.
Reproducing the issue
GoogleService-Info.plist
[firebase_auth/invalid-credential] Invalid signature.
Firebase SDK Version
11.2.0
Xcode Version
16.1
Installation Method
CocoaPods
Firebase Product(s)
Authentication
Targeted Platforms
iOS
Relevant Log Output
No response
If using Swift Package Manager, the project's Package.resolved
Expand
Package.resolved
snippet```json Replace this line with the contents of your Package.resolved. ```
If using CocoaPods, the project's Podfile.lock
Expand
Podfile.lock
snippet```yml PODS: - alarm (0.0.1): - Flutter - app_badge_plus (1.1.6): - Flutter - audio_session (0.0.1): - Flutter - battery_plus (1.0.0): - Flutter - cloud_firestore (5.4.4): - Firebase/Firestore (= 11.2.0) - firebase_core - Flutter - connectivity_plus (0.0.1): - Flutter - FlutterMacOS - device_info_plus (0.0.1): - Flutter - FBAEMKit (17.1.0): - FBSDKCoreKit_Basics (= 17.1.0) - FBSDKCoreKit (17.1.0): - FBAEMKit (= 17.1.0) - FBSDKCoreKit_Basics (= 17.1.0) - FBSDKCoreKit_Basics (17.1.0) - FBSDKLoginKit (17.1.0): - FBSDKCoreKit (= 17.1.0) - Firebase/Analytics (11.2.0): - Firebase/Core - Firebase/Auth (11.2.0): - Firebase/CoreOnly - FirebaseAuth (~> 11.2.0) - Firebase/Core (11.2.0): - Firebase/CoreOnly - FirebaseAnalytics (~> 11.2.0) - Firebase/CoreOnly (11.2.0): - FirebaseCore (= 11.2.0) - Firebase/Crashlytics (11.2.0): - Firebase/CoreOnly - FirebaseCrashlytics (~> 11.2.0) - Firebase/Firestore (11.2.0): - Firebase/CoreOnly - FirebaseFirestore (~> 11.2.0) - Firebase/Installations (11.2.0): - Firebase/CoreOnly - FirebaseInstallations (~> 11.2.0) - Firebase/RemoteConfig (11.2.0): - Firebase/CoreOnly - FirebaseRemoteConfig (~> 11.2.0) - firebase_analytics (11.3.3): - Firebase/Analytics (= 11.2.0) - firebase_core - Flutter - firebase_app_installations (0.3.1-4): - Firebase/Installations (= 11.2.0) - firebase_core - Flutter - firebase_auth (5.3.1): - Firebase/Auth (= 11.2.0) - firebase_core - Flutter - firebase_core (3.6.0): - Firebase/CoreOnly (= 11.2.0) - Flutter - firebase_crashlytics (4.1.3): - Firebase/Crashlytics (= 11.2.0) - firebase_core - Flutter - firebase_remote_config (5.1.3): - Firebase/RemoteConfig (= 11.2.0) - firebase_core - Flutter - FirebaseABTesting (11.4.0): - FirebaseCore (~> 11.0) - FirebaseAnalytics (11.2.0): - FirebaseAnalytics/AdIdSupport (= 11.2.0) - FirebaseCore (~> 11.0) - FirebaseInstallations (~> 11.0) - GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/MethodSwizzler (~> 8.0) - GoogleUtilities/Network (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - nanopb (~> 3.30910.0) - FirebaseAnalytics/AdIdSupport (11.2.0): - FirebaseCore (~> 11.0) - FirebaseInstallations (~> 11.0) - GoogleAppMeasurement (= 11.2.0) - GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/MethodSwizzler (~> 8.0) - GoogleUtilities/Network (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - nanopb (~> 3.30910.0) - FirebaseAppCheckInterop (11.4.0) - FirebaseAuth (11.2.0): - FirebaseAppCheckInterop (~> 11.0) - FirebaseAuthInterop (~> 11.0) - FirebaseCore (~> 11.0) - FirebaseCoreExtension (~> 11.0) - GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/Environment (~> 8.0) - GTMSessionFetcher/Core (~> 3.4) - RecaptchaInterop (~> 100.0) - FirebaseAuthInterop (11.4.0) - FirebaseCore (11.2.0): - FirebaseCoreInternal (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/Logger (~> 8.0) - FirebaseCoreExtension (11.2.0): - FirebaseCore (~> 11.0) - FirebaseCoreInternal (11.4.2): - "GoogleUtilities/NSData+zlib (~> 8.0)" - FirebaseCrashlytics (11.2.0): - FirebaseCore (~> 11.0) - FirebaseInstallations (~> 11.0) - FirebaseRemoteConfigInterop (~> 11.0) - FirebaseSessions (~> 11.0) - GoogleDataTransport (~> 10.0) - GoogleUtilities/Environment (~> 8.0) - nanopb (~> 3.30910.0) - PromisesObjC (~> 2.4) - FirebaseFirestore (11.2.0): - FirebaseFirestoreBinary (= 11.2.0) - FirebaseFirestoreAbseilBinary (1.2024011602.0) - FirebaseFirestoreBinary (11.2.0): - FirebaseCore (= 11.2.0) - FirebaseCoreExtension (= 11.2.0) - FirebaseFirestoreInternalBinary (= 11.2.0) - FirebaseSharedSwift (= 11.2.0) - FirebaseFirestoreGRPCBoringSSLBinary (1.65.1) - FirebaseFirestoreGRPCCoreBinary (1.65.1): - FirebaseFirestoreAbseilBinary (= 1.2024011602.0) - FirebaseFirestoreGRPCBoringSSLBinary (= 1.65.1) - FirebaseFirestoreGRPCCPPBinary (1.65.1): - FirebaseFirestoreAbseilBinary (= 1.2024011602.0) - FirebaseFirestoreGRPCCoreBinary (= 1.65.1) - FirebaseFirestoreInternalBinary (11.2.0): - FirebaseCore (= 11.2.0) - FirebaseFirestoreAbseilBinary (= 1.2024011602.0) - FirebaseFirestoreGRPCCPPBinary (= 1.65.1) - leveldb-library (~> 1.22) - nanopb (~> 3.30910.0) - FirebaseInstallations (11.2.0): - FirebaseCore (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) - PromisesObjC (~> 2.4) - FirebaseRemoteConfig (11.2.0): - FirebaseABTesting (~> 11.0) - FirebaseCore (~> 11.0) - FirebaseInstallations (~> 11.0) - FirebaseRemoteConfigInterop (~> 11.0) - FirebaseSharedSwift (~> 11.0) - GoogleUtilities/Environment (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - FirebaseRemoteConfigInterop (11.4.0) - FirebaseSessions (11.3.0): - FirebaseCore (~> 11.0) - FirebaseCoreExtension (~> 11.0) - FirebaseInstallations (~> 11.0) - GoogleDataTransport (~> 10.0) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) - nanopb (~> 3.30910.0) - PromisesSwift (~> 2.1) - FirebaseSharedSwift (11.2.0) - Flutter (1.0.0) - flutter_archive (0.0.1): - Flutter - ZIPFoundation (= 0.9.19) - flutter_facebook_auth (7.1.1): - FBSDKLoginKit (~> 17.1.0) - Flutter - flutter_fgbg (0.0.1): - Flutter - flutter_keyboard_visibility (0.0.1): - Flutter - flutter_local_notifications (0.0.1): - Flutter - flutter_native_splash (0.0.1): - Flutter - flutter_secure_storage (6.0.0): - Flutter - flutter_timezone (0.0.1): - Flutter - geocoding_ios (1.0.5): - Flutter - geolocator_apple (1.2.0): - Flutter - Google-Maps-iOS-Utils (5.0.0): - GoogleMaps (~> 8.0) - Google-Mobile-Ads-SDK (11.10.0): - GoogleUserMessagingPlatform (>= 1.1) - google_maps_flutter_ios (0.0.1): - Flutter - Google-Maps-iOS-Utils (< 7.0, >= 5.0) - GoogleMaps (< 10.0, >= 8.4) - google_mobile_ads (5.2.0): - Flutter - Google-Mobile-Ads-SDK (~> 11.10.0) - webview_flutter_wkwebview - GoogleAppMeasurement (11.2.0): - GoogleAppMeasurement/AdIdSupport (= 11.2.0) - GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/MethodSwizzler (~> 8.0) - GoogleUtilities/Network (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - nanopb (~> 3.30910.0) - GoogleAppMeasurement/AdIdSupport (11.2.0): - GoogleAppMeasurement/WithoutAdIdSupport (= 11.2.0) - GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/MethodSwizzler (~> 8.0) - GoogleUtilities/Network (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - nanopb (~> 3.30910.0) - GoogleAppMeasurement/WithoutAdIdSupport (11.2.0): - GoogleUtilities/AppDelegateSwizzler (~> 8.0) - GoogleUtilities/MethodSwizzler (~> 8.0) - GoogleUtilities/Network (~> 8.0) - "GoogleUtilities/NSData+zlib (~> 8.0)" - nanopb (~> 3.30910.0) - GoogleDataTransport (10.1.0): - nanopb (~> 3.30910.0) - PromisesObjC (~> 2.4) - GoogleMaps (8.4.0): - GoogleMaps/Maps (= 8.4.0) - GoogleMaps/Base (8.4.0) - GoogleMaps/Maps (8.4.0): - GoogleMaps/Base - GoogleUserMessagingPlatform (2.7.0) - GoogleUtilities/AppDelegateSwizzler (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - GoogleUtilities/Privacy - GoogleUtilities/Environment (8.0.2): - GoogleUtilities/Privacy - GoogleUtilities/Logger (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Privacy - GoogleUtilities/MethodSwizzler (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - GoogleUtilities/Network (8.0.2): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Privacy - GoogleUtilities/Reachability - "GoogleUtilities/NSData+zlib (8.0.2)": - GoogleUtilities/Privacy - GoogleUtilities/Privacy (8.0.2) - GoogleUtilities/Reachability (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - GoogleUtilities/UserDefaults (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - GTMSessionFetcher/Core (3.5.0) - in_app_review (0.2.0): - Flutter - just_audio (0.0.1): - Flutter - leveldb-library (1.22.6) - Mute (0.6.1) - nanopb (3.30910.0): - nanopb/decode (= 3.30910.0) - nanopb/encode (= 3.30910.0) - nanopb/decode (3.30910.0) - nanopb/encode (3.30910.0) - native_geofence (1.0.0): - Flutter - package_info_plus (0.4.5): - Flutter - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - permission_handler_apple (9.3.0): - Flutter - PromisesObjC (2.4.0) - PromisesSwift (2.4.0): - PromisesObjC (= 2.4.0) - real_volume (0.0.1): - Flutter - Mute (~> 0.6.0) - RecaptchaInterop (100.0.0) - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - url_launcher_ios (0.0.1): - Flutter - webview_flutter_wkwebview (0.0.1): - Flutter - FlutterMacOS - ZIPFoundation (0.9.19) DEPENDENCIES: - alarm (from `.symlinks/plugins/alarm/ios`) - app_badge_plus (from `.symlinks/plugins/app_badge_plus/ios`) - audio_session (from `.symlinks/plugins/audio_session/ios`) - battery_plus (from `.symlinks/plugins/battery_plus/ios`) - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) - firebase_app_installations (from `.symlinks/plugins/firebase_app_installations/ios`) - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) - firebase_remote_config (from `.symlinks/plugins/firebase_remote_config/ios`) - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `11.2.0`) - Flutter (from `Flutter`) - flutter_archive (from `.symlinks/plugins/flutter_archive/ios`) - flutter_facebook_auth (from `.symlinks/plugins/flutter_facebook_auth/ios`) - flutter_fgbg (from `.symlinks/plugins/flutter_fgbg/ios`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_timezone (from `.symlinks/plugins/flutter_timezone/ios`) - geocoding_ios (from `.symlinks/plugins/geocoding_ios/ios`) - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`) - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - google_mobile_ads (from `.symlinks/plugins/google_mobile_ads/ios`) - in_app_review (from `.symlinks/plugins/in_app_review/ios`) - just_audio (from `.symlinks/plugins/just_audio/ios`) - native_geofence (from `.symlinks/plugins/native_geofence/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - real_volume (from `.symlinks/plugins/real_volume/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`) SPEC REPOS: trunk: - FBAEMKit - FBSDKCoreKit - FBSDKCoreKit_Basics - FBSDKLoginKit - Firebase - FirebaseABTesting - FirebaseAnalytics - FirebaseAppCheckInterop - FirebaseAuth - FirebaseAuthInterop - FirebaseCore - FirebaseCoreExtension - FirebaseCoreInternal - FirebaseCrashlytics - FirebaseFirestoreAbseilBinary - FirebaseFirestoreBinary - FirebaseFirestoreGRPCBoringSSLBinary - FirebaseFirestoreGRPCCoreBinary - FirebaseFirestoreGRPCCPPBinary - FirebaseFirestoreInternalBinary - FirebaseInstallations - FirebaseRemoteConfig - FirebaseRemoteConfigInterop - FirebaseSessions - FirebaseSharedSwift - Google-Maps-iOS-Utils - Google-Mobile-Ads-SDK - GoogleAppMeasurement - GoogleDataTransport - GoogleMaps - GoogleUserMessagingPlatform - GoogleUtilities - GTMSessionFetcher - leveldb-library - Mute - nanopb - PromisesObjC - PromisesSwift - RecaptchaInterop - ZIPFoundation EXTERNAL SOURCES: alarm: :path: ".symlinks/plugins/alarm/ios" app_badge_plus: :path: ".symlinks/plugins/app_badge_plus/ios" audio_session: :path: ".symlinks/plugins/audio_session/ios" battery_plus: :path: ".symlinks/plugins/battery_plus/ios" cloud_firestore: :path: ".symlinks/plugins/cloud_firestore/ios" connectivity_plus: :path: ".symlinks/plugins/connectivity_plus/darwin" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" firebase_analytics: :path: ".symlinks/plugins/firebase_analytics/ios" firebase_app_installations: :path: ".symlinks/plugins/firebase_app_installations/ios" firebase_auth: :path: ".symlinks/plugins/firebase_auth/ios" firebase_core: :path: ".symlinks/plugins/firebase_core/ios" firebase_crashlytics: :path: ".symlinks/plugins/firebase_crashlytics/ios" firebase_remote_config: :path: ".symlinks/plugins/firebase_remote_config/ios" FirebaseFirestore: :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git :tag: 11.2.0 Flutter: :path: Flutter flutter_archive: :path: ".symlinks/plugins/flutter_archive/ios" flutter_facebook_auth: :path: ".symlinks/plugins/flutter_facebook_auth/ios" flutter_fgbg: :path: ".symlinks/plugins/flutter_fgbg/ios" flutter_keyboard_visibility: :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" flutter_local_notifications: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_native_splash: :path: ".symlinks/plugins/flutter_native_splash/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" flutter_timezone: :path: ".symlinks/plugins/flutter_timezone/ios" geocoding_ios: :path: ".symlinks/plugins/geocoding_ios/ios" geolocator_apple: :path: ".symlinks/plugins/geolocator_apple/ios" google_maps_flutter_ios: :path: ".symlinks/plugins/google_maps_flutter_ios/ios" google_mobile_ads: :path: ".symlinks/plugins/google_mobile_ads/ios" in_app_review: :path: ".symlinks/plugins/in_app_review/ios" just_audio: :path: ".symlinks/plugins/just_audio/ios" native_geofence: :path: ".symlinks/plugins/native_geofence/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: :path: ".symlinks/plugins/path_provider_foundation/darwin" permission_handler_apple: :path: ".symlinks/plugins/permission_handler_apple/ios" real_volume: :path: ".symlinks/plugins/real_volume/ios" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" webview_flutter_wkwebview: :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" CHECKOUT OPTIONS: FirebaseFirestore: :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git :tag: 11.2.0 SPEC CHECKSUMS: alarm: 6c1f6a9688f94cd6bf8f104c67cc26e78c9d8d13 app_badge_plus: 060babf17a97011f0093739f0aa8bc65b2479233 audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 battery_plus: 34f72fa2afeeea83bbae306c72a25828d3ec727a cloud_firestore: 5cb927f1a8c9d748d6fdbf16c6b267956cb82c53 connectivity_plus: 4c41c08fc6d7c91f63bc7aec70ffe3730b04f563 device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 FBAEMKit: cb719c53575a3be86ea873279f30d6a2c4e15881 FBSDKCoreKit: ecdb980a24633ccb012700299ceb16d0235e14d2 FBSDKCoreKit_Basics: 045101c4a9ef10c845347424d73a29aae02c3e43 FBSDKLoginKit: 69eb59b2f839aba635616df6e422acd0ca88030a Firebase: 98e6bf5278170668a7983e12971a66b2cd57fc8c firebase_analytics: fbc57838bdb94eef1e0ff504f127d974ff2981ad firebase_app_installations: 8e7456acbf53961bca56744283c3b93174eff89a firebase_auth: 0c77e299a8f2d1c74d1b1f6b78b3d4d802c19f47 firebase_core: 2bedc3136ec7c7b8561c6123ed0239387b53f2af firebase_crashlytics: 37d104d457b51760b48504a93a12b3bf70995d77 firebase_remote_config: d522653d828836503715498f1662901a6efcd809 FirebaseABTesting: aef1719704fade00b200827e7973f352efc4caee FirebaseAnalytics: c36efd5710c60c17558650fa58c2066eca7e9265 FirebaseAppCheckInterop: 1b9643ae2f1ee214488caa2f8e32b7bc2f0f3735 FirebaseAuth: 2a198b8cdbbbd457f08d74df7040feb0a0e7777a FirebaseAuthInterop: 9ac948965ac13ec9d8a080f39490ddb2bda30520 FirebaseCore: a282032ae9295c795714ded2ec9c522fc237f8da FirebaseCoreExtension: cda74ddfb001224bd8fd1d6e74698b4ed07803de FirebaseCoreInternal: 35731192cab10797b88411be84940d2beb33a238 FirebaseCrashlytics: cfc69af5b53565dc6a5e563788809b5778ac4eac FirebaseFirestore: bce39d24776dad48f7fad4ac42a9e805971a71b2 FirebaseFirestoreAbseilBinary: fa2ebd2ed02cadef5382e4f7c93f1b265c812c85 FirebaseFirestoreBinary: 819db6b2586c6f974c7a1f9d8c870609edbf6e5a FirebaseFirestoreGRPCBoringSSLBinary: d86ebbe2adc8d15d7ebf305fff7d6358385327f8 FirebaseFirestoreGRPCCoreBinary: 472bd808e1886a5efb2fd03dd09b98d34641a335 FirebaseFirestoreGRPCCPPBinary: db76d83d2b7517623f8426ed7f7a17bad2478084 FirebaseFirestoreInternalBinary: 4cf8180574159f20a2861a6e5c7e86745e4626d8 FirebaseInstallations: 771177d89d6c451dc6e50085ec82e2fc77ed0a4a FirebaseRemoteConfig: fca0b2d017fc1de52b28a4e5bcf2007c1a840457 FirebaseRemoteConfigInterop: e76f46ffa4d6a65e273d4dfebb6a79e588cec136 FirebaseSessions: 655ff17f3cc1a635cbdc2d69b953878001f9e25b FirebaseSharedSwift: 7a0d78d155ede78407f0fdc89fbc914014c7c540 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_archive: cb3e0219e555897ba4b36f166baa1eca394890b9 flutter_facebook_auth: 48be46091bd1a5cc5a66055f1228a9d99a28bfaa flutter_fgbg: 31c0d1140a131daea2d342121808f6aa0dcd879d flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_timezone: ffb07bdad3c6276af8dada0f11978d8a1f8a20bb geocoding_ios: d7460f56e80e118d57678efe5c2cdc888739ff18 geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450 Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 Google-Mobile-Ads-SDK: 13e6e98edfd78ad8d8a791edb927658cc260a56f google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3 google_mobile_ads: 2a538d8e42b1813809782792e48f8cf4374c2180 GoogleAppMeasurement: 76d4f8b36b03bd8381fa9a7fe2cc7f99c0a2e93a GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d GoogleUserMessagingPlatform: a8b56893477f67212fbc8411c139e61d463349f5 GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 in_app_review: 318597b3a06c22bb46dc454d56828c85f444f99d just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19 Mute: 20135a96076f140cc82bfc8b810e2d6150d8ec7e nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 native_geofence: 79dbe31eef8e1b6fd798c035b239a355027f20ae package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 real_volume: 6d09deeabb06963275fa8df0fb1616a5886363d6 RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4 ZIPFoundation: b8c29ea7ae353b309bc810586181fd073cb3312c PODFILE CHECKSUM: 6602d1e103407baab075dd11fd048279fcb75593 COCOAPODS: 1.16.2 ```