Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Integrate 3DS2 as a static framework within the Checkout SDK #1500

Open
LauraBejan-Nestle opened this issue Dec 29, 2023 · 6 comments

Comments

@LauraBejan-Nestle
Copy link

Describe the bug
We are trying to build a host app that consumes a framework that will consume the Adyen package.
Host App -> Framework A -> Adyen-ios (Adyen and AdyenDropIn - the one that's crashing).
Unfortunately, at runtime, the app crashes with the error described in the screenshot below.

To Reproduce
Steps to reproduce the behavior:

  1. Create Host App with static embedded Framework A.
  2. Add Adyen-ios package 5.5.0 through SPM to Framework A.
  3. Select Adyen and Adyen DropIn modules
  4. Run Host App on device
  5. App will crash

Expected behavior
Between Framework A and Adyen-ios the linkage should be static and the app should not crash.

Screenshots
image

Environment

  • Device: Any device (not simulator)
  • iOS Version: 16.2
  • SDK Version: 5.5.0
  • Adyen API Version: -
  • Package management system: SPM
  • Xcode version: 14.2
  • Mac OS type: M1

Additional context
The behaviour described above happens only when running the app on device, the simulator does not encounter any issues.
The issue does not reproduce when Adyen package is imported directly in Host App.

@erenbesel
Copy link
Contributor

Hi @LauraBejan-Nestle
This is a hard one to test from our side.
Since the error seems to refer to the 3ds2 package, could you try experimenting with different packages in the Adyen package that does not link the Adyen3DS2, such as AdyenCard or AdyenComponent, instead of AdyenDropIn?

@LauraBejan-Nestle
Copy link
Author

LauraBejan-Nestle commented Jan 9, 2024

Hello @erenbesel,

I have tried the approach you recommended, but, unfortunately, it's not what I need. I need to have access to DropInComponent which is exposed in AdyenDropIn.
I have created a repo with the setup described in the issue. I hope it will help with the investigation. https://github.com/LauraBejan-Nestle/Adyen-ios-Runtime-issue/tree/main

@martyhoogendam
Copy link

Also experiencing this exact issue unfortunately (with SDK 5.6.0)...

@LauraBejan-Nestle Have you been able to find a solution or workaround?

@erenbesel Any chance you can look into this? With Laura's repo you should be able to reproduce the issue. Help would be greatly appreciated, as we're dealing with a deadline.

@robertdalmeida
Copy link
Contributor

Thanks for the sample app it helps to see the issue.

  • The sample app is trying to wrap Adyen-ios (which dynamically links to Adyen3ds2) into a framework which is a static framework. Which is why at during linking it cannot find Adyen3ds2 and hence the failure.

I don't think you can create a static framework to wrap a framework which dynamically links to another.

Suggestions:

  1. Make the wrapper framework dynamically linked to the main app.
  2. fork your own version of adyen-ios and make the link to Adyen3ds2 sdk a static one. A static framework is available in the repo.

@LauraBejan-Nestle
Copy link
Author

LauraBejan-Nestle commented Mar 18, 2024 via email

@martyhoogendam
Copy link

@robertdalmeida Thanks for your response.

I don't think solution 1 will actually work. In our project (and the sample app), the wrapper framework is already dynamically linked to the main app. As @LauraBejan-Nestle suggests, please offer both a static and dynamic target in the adyen-ios SPM package.

This is supported by many SPM packages (see screenshot for an excerpt from our dependencies) and would make the Adyen DropIn usable for our project.

Screenshot 2024-03-18 at 15 52 54

@goergisn goergisn changed the title [BUG] Runtime error while integrating Adyen DropIn package in framework [Feature] Integrate 3DS2 as a static framework within the Checkout SDK May 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants