{ "id": "175176", "key": "MOD-2652", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10034", "key": "MOD", "name": "Appcelerator Modules", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2020-06-23T14:29:26.000+0000", "epic": { "id": 175154, "key": "TIMOB-27964", "name": "Support iOS 14", "summary": "iOS: Support iOS 14 and Xcode 12", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "vgoyal", "key": "vgoyal", "displayName": "Vikas Goyal", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-11-06T17:46:15.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "14509", "name": "Admob" } ], "description": "Add support for AppTrackingTransparency for iOS 14: https://developer.apple.com/documentation/apptrackingtransparency\r\n\r\nThis 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. ", "attachment": [], "flagged": false, "summary": "AdMob: Support AppTrackingTransparency for iOS 14", "creator": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1209, "state": "closed", "name": "2020 Sprint 22", "startDate": "2020-10-27T02:33:00.000Z", "endDate": "2020-11-07T02:33:00.000Z", "completeDate": "2020-11-06T17:45:42.610Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "456035", "author": { "name": "vgoyal", "key": "vgoyal", "displayName": "Vikas Goyal", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator-modules/ti.admob/pull/100", "updateAuthor": { "name": "vgoyal", "key": "vgoyal", "displayName": "Vikas Goyal", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-10T11:01:16.000+0000", "updated": "2020-07-10T11:01:16.000+0000" }, { "id": "456038", "author": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "body": "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?", "updateAuthor": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-10T14:32:42.000+0000", "updated": "2020-07-10T14:32:42.000+0000" }, { "id": "456047", "author": { "name": "vgoyal", "key": "vgoyal", "displayName": "Vikas Goyal", "active": true, "timeZone": "America/Los_Angeles" }, "body": "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.\r\n\r\nNote, when calling 'requestTrackingAuthorization', the NSUserTrackingUsageDescription key must be in '' in the tiapp.xml\r\nNote: This pr requires Xcode 12 to build\r\n\r\n", "updateAuthor": { "name": "vgoyal", "key": "vgoyal", "displayName": "Vikas Goyal", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-13T05:56:34.000+0000", "updated": "2020-07-13T05:56:34.000+0000" }, { "id": "456445", "author": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "body": "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. \r\n\r\nhttps://developers.google.com/admob/ios/rel-notes", "updateAuthor": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-08-12T20:46:32.000+0000", "updated": "2020-08-12T20:46:32.000+0000" }, { "id": "456556", "author": { "name": "cornflakesuperstar", "key": "cornflakesuperstar", "displayName": "Jason Kotchoff", "active": true, "timeZone": "America/Los_Angeles" }, "body": "From Google:\r\n\r\nIn 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. \r\n\r\nHIGHEST PRIORITY STEPS\r\n Update to GMA SDK iOS v7.64 (AdMob, AdManager) or later and/or IMA SDK iOS v3.12.1 or later.\r\n Call the new AppTrackingTransparency (ATT) Framework permission .\r\n Add the listed SkAdNetworks for Google (AdMob, AdManager).\r\n\r\nRECOMMENDED STEPS\r\nProviding users with a message before calling the ATT Framework permission is advisable to convey the value of your app. You can elect to:\r\n Develop your own explainer message preceding the permission request. \r\n 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.\r\n\r\nWhile 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.\r\n\r\nYou 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.", "updateAuthor": { "name": "cornflakesuperstar", "key": "cornflakesuperstar", "displayName": "Jason Kotchoff", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-08-24T11:19:29.000+0000", "updated": "2020-08-24T11:19:29.000+0000" }, { "id": "456557", "author": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-08-24T12:26:01.000+0000", "updated": "2020-08-24T12:26:01.000+0000" }, { "id": "457212", "author": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "body": "With SDK 9.2.1.GA the below errors started for me when trying to build.\r\n\r\n{code:java}\r\n[ERROR] : 2020-10-08 09:18:13.157 xcodebuild[4669:120458] DTDeviceKit: deviceType from 00008027-001115183422002E was NULL\r\n[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=(\r\n[ERROR] : \t0 DTDeviceKitBase 0x000000011ef9993f DTDKCreateNSErrorFromAMDErrorCode + 220\r\n[ERROR] : \t1 DTDeviceKitBase 0x000000011efa9b04 __63-[DTDKRemoteDeviceConnection startFirstServiceOf:unlockKeybag:]_block_invoke + 613\r\n[ERROR] : \t2 DTDeviceKitBase 0x000000011efa91d0 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_3 + 22\r\n[ERROR] : \t3 DTDeviceKitBase 0x000000011ef9ba9f __DTDKExecuteInSession_block_invoke_2 + 35\r\n[ERROR] : \t4 DTDeviceKitBase 0x000000011ef9b179 __DTDKExecuteWithConnection_block_invoke_2 + 218\r\n[ERROR] : \t5 DTDeviceKitBase 0x000000011ef9b076 __DTDKExecuteWithConnection_block_invoke + 106\r\n[ERROR] : \t6 libdispatch.dylib 0x00007fff7068a658 _dispatch_client_callout + 8\r\n[ERROR] : \t7 libdispatch.dylib 0x00007fff70696a38 _dispatch_sync_invoke_and_complete_recurse + 65\r\n[ERROR] : \t8 libdispatch.dylib 0x00007fff706965ab _dispatch_sync_f_slow + 195\r\n[ERROR] : \t9 DVTFoundation 0x000000010cc21def DVTDispatchBarrierSync + 208\r\n[ERROR] : \t10 DVTFoundation 0x000000010cbf8f06 -[DVTDispatchLock performLockedBlock:] + 60\r\n[ERROR] : \t11 DTDeviceKitBase 0x000000011ef9af77 DTDKExecuteWithConnection + 226\r\n[ERROR] : \t12 DTDeviceKitBase 0x000000011ef9b943 DTDKExecuteInSession + 239\r\n[ERROR] : \t13 DTDeviceKitBase 0x000000011efa9022 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_2 + 131\r\n[ERROR] : \t14 DVTFoundation 0x000000010cc1f2aa __DVT_CALLING_CLIENT_BLOCK__ + 7\r\n[ERROR] : \t15 DVTFoundation 0x000000010cc20ecc __DVTDispatchAsync_block_invoke + 1191\r\n[ERROR] : \t16 libdispatch.dylib 0x00007fff706896c4 _dispatch_call_block_and_release + 12\r\n[ERROR] : \t17 libdispatch.dylib 0x00007fff7068a658 _dispatch_client_callout + 8\r\n[ERROR] : \t18 libdispatch.dylib 0x00007fff7068fc44 _dispatch_lane_serial_drain + 597\r\n[ERROR] : \t19 libdispatch.dylib 0x00007fff70690609 _dispatch_lane_invoke + 414\r\n[ERROR] : \t20 libdispatch.dylib 0x00007fff70699c09 _dispatch_workloop_worker_thread + 596\r\n[ERROR] : \t21 libsystem_pthread.dylib 0x00007fff708e4a3d _pthread_wqthread + 290\r\n[ERROR] : \t22 libsystem_pthread.dylib 0x00007fff708e3b77 start_wqthread + 15\r\n[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.}\r\n[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=(\r\n[ERROR] : \t0 DTDeviceKitBase 0x000000011ef9993f DTDKCreateNSErrorFromAMDErrorCode + 220\r\n[ERROR] : \t1 DTDeviceKitBase 0x000000011efa9b04 __63-[DTDKRemoteDeviceConnection startFirstServiceOf:unlockKeybag:]_block_invoke + 613\r\n[ERROR] : \t2 DTDeviceKitBase 0x000000011efa91d0 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_3 + 22\r\n[ERROR] : \t3 DTDeviceKitBase 0x000000011ef9ba9f __DTDKExecuteInSession_block_invoke_2 + 35\r\n[ERROR] : \t4 DTDeviceKitBase 0x000000011ef9b179 __DTDKExecuteWithConnection_block_invoke_2 + 218\r\n[ERROR] : \t5 DTDeviceKitBase 0x000000011ef9b076 __DTDKExecuteWithConnection_block_invoke + 106\r\n[ERROR] : \t6 libdispatch.dylib 0x00007fff7068a658 _dispatch_client_callout + 8\r\n[ERROR] : \t7 libdispatch.dylib 0x00007fff706966ec _dispatch_lane_barrier_sync_invoke_and_complete + 60\r\n[ERROR] : \t8 DVTFoundation 0x000000010cc21def DVTDispatchBarrierSync + 208\r\n[ERROR] : \t9 DVTFoundation 0x000000010cbf8f06 -[DVTDispatchLock performLockedBlock:] + 60\r\n[ERROR] : \t10 DTDeviceKitBase 0x000000011ef9af77 DTDKExecuteWithConnection + 226\r\n[ERROR] : \t11 DTDeviceKitBase 0x000000011ef9b943 DTDKExecuteInSession + 239\r\n[ERROR] : \t12 DTDeviceKitBase 0x000000011efa9022 __48-[DTDKRemoteDeviceConnection futureWithSession:]_block_invoke_2 + 131\r\n[ERROR] : \t13 DVTFoundation 0x000000010cc1f2aa __DVT_CALLING_CLIENT_BLOCK__ + 7\r\n[ERROR] : \t14 DVTFoundation 0x000000010cc20ecc __DVTDispatchAsync_block_invoke + 1191\r\n[ERROR] : \t15 libdispatch.dylib 0x00007fff706896c4 _dispatch_call_block_and_release + 12\r\n[ERROR] : \t16 libdispatch.dylib 0x00007fff7068a658 _dispatch_client_callout + 8\r\n[ERROR] : \t17 libdispatch.dylib 0x00007fff7068fc44 _dispatch_lane_serial_drain + 597\r\n[ERROR] : \t18 libdispatch.dylib 0x00007fff70690609 _dispatch_lane_invoke + 414\r\n[ERROR] : \t19 libdispatch.dylib 0x00007fff70699c09 _dispatch_workloop_worker_thread + 596\r\n[ERROR] : \t20 libsystem_pthread.dylib 0x00007fff708e4a3d _pthread_wqthread + 290\r\n[ERROR] : \t21 libsystem_pthread.dylib 0x00007fff708e3b77 start_wqthread + 15\r\n[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.}\r\n[ERROR] : ** BUILD FAILED **\r\n{code}\r\n", "updateAuthor": { "name": "dlewis23", "key": "dlewis23", "displayName": "Donovan Lewis", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-10-08T13:19:35.000+0000", "updated": "2020-10-08T13:19:35.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }