Adyen / adyen-ios

Adyen iOS Drop-in and Components
https://docs.adyen.com/checkout/ios
MIT License
151 stars 121 forks source link

[BUG] Privacy manifest in Package.swift has wrong path #1777

Closed Fab1n closed 2 months ago

Fab1n commented 3 months ago

Describe the bug The privacy manifest asset processing path is wrong in the package definition: https://github.com/Adyen/adyen-ios/blob/17820c15847335b5238c3ed7871b47979e669d70/Package.swift#L95

To Reproduce Steps to reproduce the behavior:

Expected behavior Path is correct

Screenshots

image

Environment

Relevant source code Add any source code causing the problem here.

nauaros commented 3 months ago

Hi there - Can you try to generate the privacy report following this documentation from Apple? Let us know if you have any issues. We believe the current location of the Privacy manifest is correct from archives we've submitted in the past.

Cheers

Fab1n commented 3 months ago

Thank you for your help @nauaros. I checked again and compared against a lib like FirebaseCrashlytics, which does it correctly.

First of all it doesn't really matter where in the repository the privacy info is located, so the root folder is ok. The problem is, that in Adyen's Package.swift the privacy manifest file is referenced as .process("PrivacyInfo.xcprivacy") expecting this is referring to the file at the root folder: https://github.com/Adyen/adyen-ios/blob/17820c15847335b5238c3ed7871b47979e669d70/Package.swift#L85-L96

But it is relative to the Adyen folder where there is no such file: https://github.com/Adyen/adyen-ios/blob/17820c15847335b5238c3ed7871b47979e669d70/Package.swift#L90

This is why when you build an App that includes the SPM package of Adyen there is no PrivacyInfo.xcprivacy contained in the resulting Adyen_Adyen.bundle inside the build products dir.

For Firebase Crashlytics this is the case though, as for all the others, which have set up the path correctly.

Here are some screenshots of the different bundles from the SPM packages built inside the build products dir:

Screenshot 2024-08-14 at 23 28 38 Screenshot 2024-08-14 at 23 28 53 Screenshot 2024-08-14 at 23 29 06

I have attached the AdyenTest app for you as a minimal project to demonstrate the issue for you. The screenshots of the build product above are from the actual build products folder of this project. AdyenTest.zip

The documentation you link to is not from Apple. Here is the official documentation for SPM: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/adding_a_privacy_manifest_to_your_app_or_third-party_sdk#4336749

Apple shows exactly what I mean. They do .process("PrivacyInfo.xcprivacy") like the Adyen package, but they have a different folder structure:

image

You should place PrivacyInfo.xcprivacy under the Adyen folder, then it works for the Adyen target.

Adyen3DS's XCFramework does it correctly, in the contents of the framework you can see a manifest for each of the architectures.

All of the other Adyen targets don't include a privacy manifest in their build output as far as I can see.

Firebase does include a privacy manifest for each of their package libs, it's a different one for each of them, depending on the privacy info each of the targets needs to make public.

I hope this is enough information, sorry for the long post.

nauaros commented 3 months ago

Hi @Fab1n! Thanks for the detailed explanation. We're gonna take a look into this by replicating what you've explained. I will get back to you as soon as we address it.

nauaros commented 3 months ago

Hey @Fab1n - I opened #1779 where we update the path to the correct one. I tested it and it looks like now it should be correct. Could you test in your project?

nauaros commented 2 months ago

Hey @Fab1n! After testing it, we see the issue is fixed. We're gonna close it, feel free to re-open if you find anything weird. Thanks for reporting!

Fab1n commented 2 months ago

@nauaros thank you for your support. I don't have too much bandwidth to test it now, but I will when updating the package. I am sure it has been fixed.