AppsFlyerSDK / AppsFlyerFramework

AppsFlyer Apple SDK
https://support.appsflyer.com/hc/en-us/articles/207032066-AppsFlyer-SDK-Integration-iOS
Other
163 stars 90 forks source link

The Privacy manifest is not correctly bundled for the static library #281

Open scottlemke opened 2 months ago

scottlemke commented 2 months ago

Report

When the static library is integrated for Appsflyer, the Privacy manifest is not getting bundled into the app.

SDK Version

6.14.0

What did you do?

Add the static library to the app using SPM. Do an archive build of the app. Generate a privacy report.

What did you expect to happen?

Appsflyer's details should appear in the privacy report.

What happened instead?

Appsflyer's details do not appear in the privacy report.

Please provide any other relevant information.

For static libraries, a bundle needs to be included that contains the Privacy manifest file. This is done by specifying the manifest as a resource in the package file.

scottlemke commented 2 months ago

I am seeing this when integrating via SPM with Tuist. A standard SPM integration appears to be building a framework for Appsflyer with the Privacy manifest bundled into the framework and works correctly. I'm investigating workarounds for Tuist use.

joeycarmello commented 2 months ago

Same issue here with SPM

scottlemke commented 2 months ago

My test project integrating via vanilla SPM appears to include the framework, but Tuist using the Static framework results in no Privacy manifest. In my experience with other SDKs, specifying the manifest to be included as a resource so a bundle is created and included into the app package is what is done as Apple describes in their documentation.

aguiar-bruno commented 2 months ago

I'm having the same issue when adding the library with Cocoapods. All other libraries privacy manifest data is included in the privacy report generated by the Xcode archiver but AppsFlyer's manifest data is not included in that report. I can confirm that the manifest file is in the AppsFlyer's framework folder, it's just not being included in the bundle.

SDK version: 6.14.0

leontedev commented 2 months ago

+1

gaurav-gupta7 commented 2 months ago

Same issue on installing as static framework with Cocoapods. Podspec is missing resource bundle

FernandoReynoso commented 2 months ago

Same issue here guys. Any ETA would be appreciated.

AlexGarciaPinzon commented 2 months ago

We are also see the same issue here. And there is a date for apple in next two weeks that might get issues if there is no fix.

bonyadmitr commented 2 months ago

Same issue on installing as dynamic framework with Cocoapods. not visible in privacy report

af-obodovskyi commented 2 months ago

Hi, everybody, we have prepared to the April regulations update mentioned here. Right now, if I build and archive an application with Xcode 15.3 with 6.14.1 version of the SDK, it propperly generates the Privacy report

orbitekk commented 2 months ago

@af-obodovskyi how did you integrate the library? I've confirmed that when you add the AppsFlyerSDK to an Xcode project and select 'Embed & Sign', it works correctly. However, when you choose 'Do not Embed' (since it's a static framework), it doesn't generate the privacy report.

Xcode 15 introduced some changes for static framework support, as detailed here.

orbitekk commented 2 months ago

I just checked the integration through cocoapods. After integrating the static AppsFlyer library, the report generation does not work properly. After integrating the dynamic AppsFlyer library, the report generation works fine.

@bonyadmitr are you sure that you integrate dynamic framework (AppsFlyerFramework/Dynamic)?

bonyadmitr commented 2 months ago

@orbitekk checked for with Xcode 15.3 with 6.14.1 version of the SDK, cocoapods 1.15.2. there is no AppsFlyer framework under Device ID section of privacy report.

use_frameworks! # :linkage => :static
...
pod 'AppsFlyerFramework', '6.14.1'

static is not used.

what do you mean AppsFlyerFramework/Dynamic? is there special version of Dynamic SDK?

orbitekk commented 2 months ago

@bonyadmitr Yes. AppsFlyer library is precompiled and distributed as a binary framework. Check AppsFlyerFramework.podspec

pod 'AppsFlyerFramework' -> static framework (Main subspec) pod 'AppsFlyerFramework/Dynamic' -> dynamic framework (Dynamic subspec)

Edit: :linkage doesn't work with precompiled binaries :)

opera-ddrechny commented 2 months ago

@af-obodovskyi I've integrated version 6.14.1 through SPM (Xcode 15.3) and unfortunately AppsFlyer is still missing from the privacy report. I tried AppsFlyerFramework-Strict, AppsFlyerFramework-Static and AppsFlyerFramework-Dynamic.

orbitekk commented 2 months ago

CocoaPods/CocoaPods#12357

orbitekk commented 2 months ago

@opera-ddrechny It works for me. I've integrated version 6.14.1 and 6.14.2 through SPM. Both, static and dynamic, generates privacy report correctly. The only issue I found is integrating static framework through CocoaPods

opera-ddrechny commented 2 months ago

Thank you @orbitekk, it indeed does work... but only when AppsFlyerLib is added to the app target. It doesn't work it's added to a framework which is embedded in the app target. Strangely, this problem is not present for Firebase.

@af-obodovskyi Here's a project which demonstrates this problem: https://github.com/opera-ddrechny/appsflyer-privacy-report