我在本机iOS(Swift(中实现了一个应用程序。该应用程序也有一个网络版本。客户端希望将我的应用程序嵌入自己的应用程序中,并建议我使用iframe并加载Web版本。我知道这是一个棘手的解决方案,因为Apple可能会拒绝该应用程序不使用本机实现。
我想问的是,是否有一种完全作为框架打包我的应用程序并以这种方式加载的方法(应用程序大小相当大,有几个ViewControllers和功能(。
我知道我无法访问诸如AppDelegate之类的App-Load功能。
如果我的应用具有库依赖关系,会发生什么?(例如Alamofire(
我应该关注的其他事情?
谢谢
就设计/方法而言,显然有很多选择。
我已经多次完成了此操作(应用程序在App Store上使用(,实际上就像开发任何框架一样。
首先: AppDelegate
。解决此问题的简单方法是让应用程序的AppDelegate
子类您的框架的AppDelegate
:
@UIApplicationMain class ParentAppDelegate: FrameworkAppDelegate { }
只需确保应用程序在所有相关方法上调用super
即可。
第二:依赖项。这可能是最令人讨厌的部分,因为框架无法嵌入其他框架。但是您仍然有一些简单的选择:
- 将封闭的应用程序嵌入了所需的框架
- 将所需框架的来源直接添加到您的框架中。
- 使用为您照顾的依赖项经理(例如Cocoapods(。
其他问题:您可以轻松遇到的一个陷阱是使用捆绑包。每当您动态加载图像/字符串/IB引用/等时。您需要指定使用 framework的捆绑包,因为有时可能默认使用 app的捆绑包。最简单的方法是与此初始化,例如Bundle(for: self.self)
还请记住,info.plist
和权利中的设置需要由父级应用程序添加。
关于方法的常规评论:我的建议(接受或留下☺️(会谨慎行事,只需将完整的应用程序添加到客户端的应用程序中即可。除了IP和应用程序审查问题外,它还可以增加当前应用程序的复杂性或叉子来支持它,从而使将来的维护变得麻烦。
相反>