firebase / firebase/firebase-cpp-sdk

[Bug] GADRequestConfiguration setTagForUnderAgeOfConsent: unrecognized selector sent to instance

Abierto
#1,594 1 comentario 1 reacción 0 asignados Ver en GitHub
needs-triage new type: question
Lenguaje dominante
C++
Estrellas
326
Forks
137
Merge medio
3 d 9 h
PR fusionados (30 d)
5

Descripción

### [REQUIRED] Please fill in the following fields:

* Pre-built SDK from the: [website](https://firebase.google.com/download/cpp)
* Firebase C++ SDK version: 12.0.0
* Problematic Firebase Component: GMA
* Other Firebase Components in use: Auth, Analytics, Remote Config, Storage, Dynamic Links
* Platform you are using the C++ SDK on: Mac
* Platform you are targeting: iOS

### [REQUIRED] Please describe the issue here:

While trying to initialize AdMob, I call `firebase::gma::SetRequestConfiguration`, which ends up throwing an Objective-C exception stating: `-[GADRequestConfiguration setTagForUnderAgeOfConsent:]: unrecognized selector sent to instance 0x283a12640`

The issue is likely related to pull request: #1537 where it states among changes:

Breaking changes in GADRequestConfiguration:
- setSameAppKeyEnabled renamed to setPublisherFirstPartyIDEnabled
- tagForUnderAgeofConsent changed from method to property
- tagforChildDirectedTreatment changed from method to property

#### Steps to reproduce:

Reproduces 100% of time in my project, haven't tried to repro on Quickstart. The problem started occurring in Firebase C++ SDK 11.10.0 as I noticed it before and had to always roll back to 11.9.0 where the initialization happens with no issues. When I comment out call to `firebase::gma::SetRequestConfiguration`, the rest of the initialization and app run also goes without issues.

What happened? How can we make the problem occur?
See the code below I use for initialization, which works fine in 11.9.0

Here is log output with identifiers replaced with XXXX:
```
2024-05-17 16:52:18.275311-0700 Metal-mobile[21205:3847959] Loading UIApplication category for Firebase App
2024-05-17 16:52:19.266542-0700 Metal-mobile[21205:3848134] 10.25.0 - [FirebaseCore][I-COR000005] No app has been configured yet.
2024-05-17 16:52:20.023556-0700 Metal-mobile[21205:3847959] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)")
2024-05-17 16:52:20.023762-0700 Metal-mobile[21205:3847959] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)")
2024-05-17 16:52:20.168308-0700 Metal-mobile[21205:3847959] [Firebase/Crashlytics] Version 10.25.0
2024-05-17 16:52:20.232959-0700 Metal-mobile[21205:3847959]
---- Firebase Dynamic Links diagnostic output start ----
Firebase Dynamic Links framework version 10.25.0
System information: OS iOS, OS version 16.2, model iPhone
Current date 2024-05-17 23:52:20 +0000
Device locale en-US (raw en_US), timezone America/Los_Angeles
Specified custom URL scheme is com.example.app and Info.plist contains such scheme in CFBundleURLTypes key.
AppID Prefix: XXXXXXXXXX, Team ID: XXXXXXXXXX, AppId Prefix equal to Team ID: YES
performDiagnostic completed successfully! No errors found.
---- Firebase Dynamic Links diagnostic output end ----
2024-05-17 16:52:20.367782-0700 Metal-mobile[21205:3848179] 10.25.0 - [FirebaseAnalytics][I-ACS023007] Analytics v.10.25.0 started
2024-05-17 16:52:20.375021-0700 Metal-mobile[21205:3848179] 10.25.0 - [FirebaseAnalytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see http://goo.gl/RfcP7r)
2024-05-17 16:52:20.439030-0700 Metal-mobile[21205:3848148] 10.25.0 - [FirebaseAnalytics][I-ACS044000] GoogleAppMeasurementIdentitySupport dependency is linked.
2024-05-17 16:52:20.439654-0700 Metal-mobile[21205:3848148] 10.25.0 - [FirebaseAnalytics][I-ACS044001] The AdSupport Framework is linked.
2024-05-17 16:52:20.532517-0700 Metal-mobile[21205:3848170] 10.25.0 - [FirebaseAnalytics][I-ACS002002] APMExperimentAlarm scheduled to fire in approx. (s): 14160.20392107964
2024-05-17 16:52:20.587543-0700 Metal-mobile[21205:3847959] applicationSupportDirectory: '/var/mobile/Containers/Data/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/Application Support'
2024-05-17 16:52:20.587958-0700 Metal-mobile[21205:3847959] [logging] misuse at line 179186 of [554764a6e7]
2024-05-17 16:52:20.589496-0700 Metal-mobile[21205:3847959] applicationSupportDirectory: '/var/mobile/Containers/Data/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/Application Support'
2024-05-17 16:52:20.597771-0700 Metal-mobile[21205:3847959] applicationSupportDirectory: '/var/mobile/Containers/Data/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/Library/Application Support'
2024-05-17 16:52:20.618526-0700 Metal-mobile[21205:3847959] Using Auth Prod for testing.
2024-05-17 16:52:20.623696-0700 Metal-mobile[21205:3847959] To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[ @"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" ];
2024-05-17 16:52:20.625603-0700 Metal-mobile[21205:3847959] -[GADRequestConfiguration setTagForUnderAgeOfConsent:]: unrecognized selector sent to instance 0x283a12640
```

as well as the call stack:
```
* thread #1, name = 'App Main', queue = 'com.apple.main-thread', stop reason = hit Objective-C exception
frame #0: 0x000000018c311920 libobjc.A.dylib`objc_exception_throw
frame #1: 0x0000000192f520f0 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 132
frame #2: 0x0000000192e06bd8 CoreFoundation`___forwarding___ + 1340
frame #3: 0x0000000192e6a6ec CoreFoundation`_CF_forwarding_prep_0 + 92
frame #4: 0x000000010598d4b4 Metal-mobile`firebase::gma::SetRequestConfiguration(firebase::gma::RequestConfiguration const&) + 1712
* frame #5: 0x000000010506c44c Metal-mobile`others::initialize() [inlined] initialize_admob(app=0x0000000108138700) at plugins.cpp:2574:5 [opt]
frame #6: 0x000000010506c368 Metal-mobile`others::initialize() at plugins.cpp:4356:5 [opt]
frame #7: 0x0000000104fc3260 Metal-mobile`AppDelegate::applicationDidFinishLaunching(this=) at AppDelegate.cpp:443:5 [opt]
frame #8: 0x000000010561ec08 Metal-mobile`cocos2d::Application::run() + 20
frame #9: 0x000000010511b3b4 Metal-mobile`-[AppController application:didFinishLaunchingWithOptions:](self=0x00000002830c7760, _cmd=, application=, launchOptions=) at AppController.mm:109:10 [opt]
frame #10: 0x00000001951cac48 UIKitCore`-[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 296
frame #11: 0x00000001951ca38c UIKitCore`-[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 2776
frame #12: 0x00000001951c93c0 UIKitCore`-[UIApplication _runWithMainScene:transitionContext:completion:] + 852
frame #13: 0x00000001951c9020 UIKitCore`-[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 128
frame #14: 0x0000000194f30314 UIKitCore`_UIScenePerformActionsWithLifecycleActionMask + 92
frame #15: 0x0000000195249d84 UIKitCore`__101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 188
frame #16: 0x000000019510a908 UIKitCore`-[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 212
frame #17: 0x000000019510a738 UIKitCore`-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 588
frame #18: 0x000000019510a308 UIKitCore`-[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 248
frame #19: 0x000000019510a1e8 UIKitCore`__186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 140
frame #20: 0x0000000195781204 UIKitCore`+[BSAnimationSettings(UIKit) tryAnimatingWithSettings:fromCurrentState:actions:completion:] + 656
frame #21: 0x0000000195810280 UIKitCore`_UISceneSettingsDiffActionPerformChangesWithTransitionContextAndCompletion + 196
frame #22: 0x0000000194fc7598 UIKitCore`-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 288
frame #23: 0x00000001953fd9fc UIKitCore`__64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.189 + 552
frame #24: 0x000000019508f13c UIKitCore`-[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 208
frame #25: 0x000000019508efd0 UIKitCore`-[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 220
frame #26: 0x000000019508e53c UIKitCore`-[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 496
frame #27: 0x000000019508e2e0 UIKitCore`-[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 260
frame #28: 0x00000001a7676078 FrontBoardServices`-[FBSScene _callOutQueue_agent_didCreateWithTransitionContext:completion:] + 316
frame #29: 0x00000001a76b01f0 FrontBoardServices`__92-[FBSWorkspaceScenesClient createSceneWithIdentity:parameters:transitionContext:completion:]_block_invoke.59 + 92
frame #30: 0x00000001a7679a14 FrontBoardServices`-[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 160
frame #31: 0x00000001a76afe78 FrontBoardServices`__92-[FBSWorkspaceScenesClient createSceneWithIdentity:parameters:transitionContext:completion:]_block_invoke + 296
frame #32: 0x00000001076cd8c4 libdispatch.dylib`_dispatch_client_callout + 16
frame #33: 0x00000001076d0dac libdispatch.dylib`_dispatch_block_invoke_direct + 228
frame #34: 0x00000001a7682f18 FrontBoardServices`__FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 44
frame #35: 0x00000001a7682b54 FrontBoardServices`-[FBSSerialQueue _targetQueue_performNextIfPossible] + 176
frame #36: 0x00000001a7685104 FrontBoardServices`-[FBSSerialQueue _performNextFromRunLoopSource] + 24
frame #37: 0x0000000192eb4298 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
frame #38: 0x0000000192ebfbf8 CoreFoundation`__CFRunLoopDoSource0 + 172
frame #39: 0x0000000192e49f58 CoreFoundation`__CFRunLoopDoSources0 + 232
frame #40: 0x0000000192e5ef84 CoreFoundation`__CFRunLoopRun + 780
frame #41: 0x0000000192e63b58 CoreFoundation`CFRunLoopRunSpecific + 584
frame #42: 0x00000001c9063984 GraphicsServices`GSEventRunModal + 160
frame #43: 0x000000019520e628 UIKitCore`-[UIApplication _run] + 868
frame #44: 0x000000019520e2a0 UIKitCore`UIApplicationMain + 312
frame #45: 0x0000000105123ba4 Metal-mobile`main(argc=, argv=) at main.m:24:16 [opt]
frame #46: 0x00000001afb2ddf0 dyld`start + 2096
```

#### Relevant Code:

```C++
::firebase::InitResult am_res;
#if defined(__ANDROID__)
::firebase::Future<::firebase::gma::AdapterInitializationStatus> future = ::firebase::gma::Initialize(meta::non_null(cocos2d::JniHelper::getEnv()), meta::non_null(cocos2d::JniHelper::getActivity()), &am_res);
#else
::firebase::Future<::firebase::gma::AdapterInitializationStatus> future = ::firebase::gma::Initialize(*app, &am_res);
#endif

firebase::gma::RequestConfiguration configuration = {
.max_ad_content_rating = firebase::gma::RequestConfiguration::kMaxAdContentRatingPG,
.tag_for_child_directed_treatment = firebase::gma::RequestConfiguration::kChildDirectedTreatmentTrue,
.tag_for_under_age_of_consent = firebase::gma::RequestConfiguration::kUnderAgeOfConsentFalse,
.test_device_ids = {
// ...
}
};
firebase::gma::SetRequestConfiguration(configuration); ///< Exception happens inside this call
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.