Code Monkey home page Code Monkey logo

Comments (6)

addb avatar addb commented on August 20, 2024

Hi @wryphonedev,

AEPTarget does not support tvOS and currently there are no plans to add support for it. You can find all the information about the SDKs and supported platforms here. If you have a use case that you need tvOS for, please open a ticket with the customer support and we can bring this to the attention of our Product Managers, and also provide you any Adobe Platform (AEP) Solution alternatives we have.

from aepsdk-target-ios.

wryphonedev avatar wryphonedev commented on August 20, 2024

@addb It's understood that AEPTarget does not support tvOS. However, this issue is not that AEPTarget isn't compatible with tvOS, it is that it is strongly coupled with other components of AE library that are cross-platform.

The implication is that a project using other AECore in a multi-platform integration will not be able to use AEPTarget discretely on iOS.

Conceptually, the AEPTarget library simply needs to be marked/designated semantically as iOS-specific, so that a project attempting to compile it alongside its cross-platform components will succeed.

from aepsdk-target-ios.

addb avatar addb commented on August 20, 2024

@wryphonedev is it not possible for you to register and initialize the extensions in your shared code based on platform?

from aepsdk-target-ios.

cdhoffmann avatar cdhoffmann commented on August 20, 2024

"In our project, various AE libraries are linked adjacently in a shared service package ("shared" by all Apple platforms we support, including iOS and tvOS):AEPCore, AEPAnalytics, AEPMedia. AEPTarget must be linked with these in this shared package, because AEPTarget must use the common initializer alongside the other extensions in our shared package code."

You will need to break down your shared package. You will need to have one shared package for iOS and one for tvOS for instance, where the tvOS one excludes AEPTarget.

"Conceptually, the AEPTarget library simply needs to be marked/designated semantically as iOS-specific, so that a project attempting to compile it alongside its cross-platform components will succeed."

The AEPTarget library does not include any support for tvOS, therefore it is iOS specific already.

"It would appear that instances within AEPTarget which reference the FullScreenPresentable protocol also need to be wrapped in if os(iOS) at the call site. These appear to pertain to iOS specific view presentation (to which there is currently no equivalent tvOS behavior), so this appears to be a relatively straightforward and constrained change."

There is more to this. The view logic (which is unavailable in tvOS) is tightly coupled with foundational code throughout AEPTarget. We have made the decision to hold off on supporting tvOS for AEPTarget and it is a calculated one. That being said, this project is open source, and you are free to fork and put up a PR with the changes you see fit.

from aepsdk-target-ios.

wryphonedev avatar wryphonedev commented on August 20, 2024

Hi @addb and @cdhoffmann - thank you for your response.

The AEPTarget library does not include any support for tvOS, therefore it is iOS specific already.

Yes, the ask here is to make this explicit in the code rather than implicit. I understand that this is a small change but applied many places and would require ongoing adherence for any new source files introduced. There could also be a more concise or clever way to achieve this unilaterally with the AEPTarget project/workspace.

is it not possible for you to register and initialize the extensions in your shared code based on platform?

Indeed, this is necessary even with the suggested change, because once theAEPTarget type is undefined on tvOS, the common initializer referencing it can't be compiled for tvOS. However, it is a relatively small change for us to include two initializers in-line, each within the respective os flag.

You will need to break down your shared package. You will need to have one shared package for iOS and one for tvOS for instance, where the tvOS one excludes AEPTarget.

This is a good suggestion, but a cursory exploration indicates that for us it would involve considerably more up-front and some degree of ongoing effort. We have a fairly complex dependency matrix and have to weigh every additional fork.

For now, we've forked the project and made the necessary changes. I'm happy to open a PR with them if you'd like to incorporate them (this would of course make our ongoing maintenance easier), otherwise feel free to close the issue.

from aepsdk-target-ios.

cdhoffmann avatar cdhoffmann commented on August 20, 2024

@wryphonedev Thank you for making those changes. The issue with it (as you may have noticed) is that the public layer of the extension will now only be available in iOS. Both the Target.swift and Target+PublicAPI.swift files are completely wrapped in the macro. If / when we work on tvOS support for the extension, it would require us to make sure that we decouple the problematic code within those two classes so that we can keep them available for use in tvOS. Wrapping all of the problematic files with the macro will solve your use case but the extension is useless in tvOS targets now, which is what we would want to avoid if we implement this change. I will close the issue but we will be sure to let you know if / when we add tvOS support.

from aepsdk-target-ios.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.