Titanium JIRA Archive
Appcelerator Modules (MOD)

[MOD-2652] AdMob: Support AppTrackingTransparency for iOS 14

GitHub Issuen/a
TypeNew Feature
PriorityCritical
StatusResolved
ResolutionUnresolved
Affected Version/sn/a
Fix Version/sn/a
ComponentsAdmob
Labelsn/a
ReporterDonovan Lewis
AssigneeVikas Goyal
Created2020-06-23T14:29:26.000+0000
Updated2020-11-06T17:46:15.000+0000

Description

Add support for AppTrackingTransparency for iOS 14: https://developer.apple.com/documentation/apptrackingtransparency This seems to be required now for any apps that will have ads displayed in them. I'm sure we will need to update the Admob module to go along with this once they figure out how they are going to handle it.

Comments

  1. Vikas Goyal 2020-07-10

    PR: https://github.com/appcelerator-modules/ti.admob/pull/100
  2. Donovan Lewis 2020-07-10

    I'm going to try out this PR. Is there a way to invoke the AppTrackingTransparency alert to come up when you want to? So you could ask at first launch and then ask again at a later date if it was turned off?
  3. Vikas Goyal 2020-07-13

    The 'requestTrackingAuthorization' function is used to invoke the AppTrackingTransparency alert to come up when you want to. The system remembers the user’s choice and doesn’t prompt again unless a user uninstalls and then reinstalls the app on the device. so if user has selected any option it will not show the alert again. Note, when calling 'requestTrackingAuthorization', the NSUserTrackingUsageDescription key must be in '' in the tiapp.xml Note: This pr requires Xcode 12 to build
  4. Donovan Lewis 2020-08-12

    We need to update this module again. Google has just published its official iOS 14 version of Admob version 7.64.0 that has support for AppTrackingTransparency included as well as support for SKAdNetwork which is extremely important also. https://developers.google.com/admob/ios/rel-notes
  5. Jason Kotchoff 2020-08-24

    From Google: In preparation for the iOS 14 consumer launch, we recently announced updated GMA and IMA Software Developer KIts (SDKs) that include support for iOS 14 specific features. You’ve hopefully been seeing our recommendations, best practices and announcements around supporting recent app privacy and user consent changes. I wanted to highlight some steps you might want to take. HIGHEST PRIORITY STEPS Update to GMA SDK iOS v7.64 (AdMob, AdManager) or later and/or IMA SDK iOS v3.12.1 or later. Call the new AppTrackingTransparency (ATT) Framework permission . Add the listed SkAdNetworks for Google (AdMob, AdManager). RECOMMENDED STEPS Providing users with a message before calling the ATT Framework permission is advisable to convey the value of your app. You can elect to: Develop your own explainer message preceding the permission request. Use Funding Choices with the UMP SDK for the explainer message. We are committed to continue to develop this message solution, so utilizing this feature can save development time and effort. While an explainer via Funding Choices won’t be ready until September, you can get a head start by creating a Funding Choices account directly through the AdMob or Ad Manager front-end. After setting up Funding Choices and integrating the UMP SDK for iOS (AdMob, AdManager), you can create an IDFA message in Funding Choices and publish it. This will trigger the ATT alert. Once the explainer message functionality is available around September, the explainer message will automatically appear ahead of the iOS 14 ATT alert. You can find more guidance on preparing for iOS 14 changes in the AdMob Help Center and the AdManager Help Center. Please stay tuned for more announcements on how Google plans to help in the coming months.
  6. Donovan Lewis 2020-08-24

  7. Donovan Lewis 2020-10-08

    With SDK 9.2.1.GA the below errors started for me when trying to build.
       [ERROR] :  2020-10-08 09:18:13.157 xcodebuild[4669:120458]  DTDeviceKit: deviceType from 00008027-001115183422002E was NULL
       [ERROR] :  2020-10-08 09:18:13.216 xcodebuild[4669:120466]  DTDKRemoteDeviceConnection: Failed to start remote service "com.apple.mobile.notification_proxy" on device. Error: Error Domain=com.apple.dtdevicekit Code=811 "Failed to start remote service "com.apple.mobile.notification_proxy" on device." UserInfo={NSUnderlyingError=0x7fb0791e6680 {Error Domain=com.apple.dt.MobileDeviceErrorDomain Code=-402653158 "The device is passcode protected." UserInfo={MobileDeviceErrorCode=(0xE800001A), com.apple.dtdevicekit.stacktrace=(
       [ERROR] :  	0   DTDeviceKitBase                     0x000000011ef9993f DTDKCreateNSErrorFromAMDErrorCode + 220
       [ERROR] :  	1   DTDeviceKitBase                     0x000000011efa9b04 __63-[DTDKRemoteDeviceConnection startFirstServiceOf:unlockKeybag:]_block_invoke + 613
       [ERROR] :  	2   DTDeviceKitBase                     0x000000011efa91d0 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_3 + 22
       [ERROR] :  	3   DTDeviceKitBase                     0x000000011ef9ba9f __DTDKExecuteInSession_block_invoke_2 + 35
       [ERROR] :  	4   DTDeviceKitBase                     0x000000011ef9b179 __DTDKExecuteWithConnection_block_invoke_2 + 218
       [ERROR] :  	5   DTDeviceKitBase                     0x000000011ef9b076 __DTDKExecuteWithConnection_block_invoke + 106
       [ERROR] :  	6   libdispatch.dylib                   0x00007fff7068a658 _dispatch_client_callout + 8
       [ERROR] :  	7   libdispatch.dylib                   0x00007fff70696a38 _dispatch_sync_invoke_and_complete_recurse + 65
       [ERROR] :  	8   libdispatch.dylib                   0x00007fff706965ab _dispatch_sync_f_slow + 195
       [ERROR] :  	9   DVTFoundation                       0x000000010cc21def DVTDispatchBarrierSync + 208
       [ERROR] :  	10  DVTFoundation                       0x000000010cbf8f06 -[DVTDispatchLock performLockedBlock:] + 60
       [ERROR] :  	11  DTDeviceKitBase                     0x000000011ef9af77 DTDKExecuteWithConnection + 226
       [ERROR] :  	12  DTDeviceKitBase                     0x000000011ef9b943 DTDKExecuteInSession + 239
       [ERROR] :  	13  DTDeviceKitBase                     0x000000011efa9022 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_2 + 131
       [ERROR] :  	14  DVTFoundation                       0x000000010cc1f2aa __DVT_CALLING_CLIENT_BLOCK__ + 7
       [ERROR] :  	15  DVTFoundation                       0x000000010cc20ecc __DVTDispatchAsync_block_invoke + 1191
       [ERROR] :  	16  libdispatch.dylib                   0x00007fff706896c4 _dispatch_call_block_and_release + 12
       [ERROR] :  	17  libdispatch.dylib                   0x00007fff7068a658 _dispatch_client_callout + 8
       [ERROR] :  	18  libdispatch.dylib                   0x00007fff7068fc44 _dispatch_lane_serial_drain + 597
       [ERROR] :  	19  libdispatch.dylib                   0x00007fff70690609 _dispatch_lane_invoke + 414
       [ERROR] :  	20  libdispatch.dylib                   0x00007fff70699c09 _dispatch_workloop_worker_thread + 596
       [ERROR] :  	21  libsystem_pthread.dylib             0x00007fff708e4a3d _pthread_wqthread + 290
       [ERROR] :  	22  libsystem_pthread.dylib             0x00007fff708e3b77 start_wqthread + 15
       [ERROR] :  ), DVTRadarComponentKey=261622, NSLocalizedDescription=The device is passcode protected.}}, NSLocalizedRecoverySuggestion=Please check your connection to your device., DVTRadarComponentKey=261622, NSLocalizedDescription=Failed to start remote service "com.apple.mobile.notification_proxy" on device.}
       [ERROR] :  2020-10-08 09:18:14.297 xcodebuild[4669:120469]  DTDKRemoteDeviceConnection: Failed to start remote service "com.apple.mobile.notification_proxy" on device. Error: Error Domain=com.apple.dtdevicekit Code=811 "Failed to start remote service "com.apple.mobile.notification_proxy" on device." UserInfo={NSUnderlyingError=0x7fb07d493c20 {Error Domain=com.apple.dt.MobileDeviceErrorDomain Code=-402653158 "The device is passcode protected." UserInfo={MobileDeviceErrorCode=(0xE800001A), com.apple.dtdevicekit.stacktrace=(
       [ERROR] :  	0   DTDeviceKitBase                     0x000000011ef9993f DTDKCreateNSErrorFromAMDErrorCode + 220
       [ERROR] :  	1   DTDeviceKitBase                     0x000000011efa9b04 __63-[DTDKRemoteDeviceConnection startFirstServiceOf:unlockKeybag:]_block_invoke + 613
       [ERROR] :  	2   DTDeviceKitBase                     0x000000011efa91d0 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_3 + 22
       [ERROR] :  	3   DTDeviceKitBase                     0x000000011ef9ba9f __DTDKExecuteInSession_block_invoke_2 + 35
       [ERROR] :  	4   DTDeviceKitBase                     0x000000011ef9b179 __DTDKExecuteWithConnection_block_invoke_2 + 218
       [ERROR] :  	5   DTDeviceKitBase                     0x000000011ef9b076 __DTDKExecuteWithConnection_block_invoke + 106
       [ERROR] :  	6   libdispatch.dylib                   0x00007fff7068a658 _dispatch_client_callout + 8
       [ERROR] :  	7   libdispatch.dylib                   0x00007fff706966ec _dispatch_lane_barrier_sync_invoke_and_complete + 60
       [ERROR] :  	8   DVTFoundation                       0x000000010cc21def DVTDispatchBarrierSync + 208
       [ERROR] :  	9   DVTFoundation                       0x000000010cbf8f06 -[DVTDispatchLock performLockedBlock:] + 60
       [ERROR] :  	10  DTDeviceKitBase                     0x000000011ef9af77 DTDKExecuteWithConnection + 226
       [ERROR] :  	11  DTDeviceKitBase                     0x000000011ef9b943 DTDKExecuteInSession + 239
       [ERROR] :  	12  DTDeviceKitBase                     0x000000011efa9022 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_2 + 131
       [ERROR] :  	13  DVTFoundation                       0x000000010cc1f2aa __DVT_CALLING_CLIENT_BLOCK__ + 7
       [ERROR] :  	14  DVTFoundation                       0x000000010cc20ecc __DVTDispatchAsync_block_invoke + 1191
       [ERROR] :  	15  libdispatch.dylib                   0x00007fff706896c4 _dispatch_call_block_and_release + 12
       [ERROR] :  	16  libdispatch.dylib                   0x00007fff7068a658 _dispatch_client_callout + 8
       [ERROR] :  	17  libdispatch.dylib                   0x00007fff7068fc44 _dispatch_lane_serial_drain + 597
       [ERROR] :  	18  libdispatch.dylib                   0x00007fff70690609 _dispatch_lane_invoke + 414
       [ERROR] :  	19  libdispatch.dylib                   0x00007fff70699c09 _dispatch_workloop_worker_thread + 596
       [ERROR] :  	20  libsystem_pthread.dylib             0x00007fff708e4a3d _pthread_wqthread + 290
       [ERROR] :  	21  libsystem_pthread.dylib             0x00007fff708e3b77 start_wqthread + 15
       [ERROR] :  ), DVTRadarComponentKey=261622, NSLocalizedDescription=The device is passcode protected.}}, NSLocalizedRecoverySuggestion=Please check your connection to your device., DVTRadarComponentKey=261622, NSLocalizedDescription=Failed to start remote service "com.apple.mobile.notification_proxy" on device.}
       [ERROR] :  ** BUILD FAILED **
       

JSON Source