我可以将整个iOS应用打包为一个框架吗?

我可以将整个iOS应用打包为一个框架吗?,ios,swift,frameworks,design-guidelines,Ios,Swift,Frameworks,Design Guidelines,我有一个应用程序是用本机iOS(Swift)实现的。该应用程序还有一个web版本。一个客户端想将我的应用嵌入到它自己的应用中,建议我使用iFrame并加载web版本。 我理解这是一个棘手的解决方案,因为苹果可能会因为不使用本机实现而拒绝该应用程序 我想问的是,是否有一种方法可以将我的应用程序完全打包为一个框架并以这种方式加载(应用程序的大小相当大,有几个ViewController和功能) 我知道我将无法访问AppDelegate之类的应用程序加载功能 如果我的应用程序具有库依赖项,会发生什么情

我有一个应用程序是用本机iOS(Swift)实现的。该应用程序还有一个web版本。一个客户端想将我的应用嵌入到它自己的应用中,建议我使用iFrame并加载web版本。 我理解这是一个棘手的解决方案,因为苹果可能会因为不使用本机实现而拒绝该应用程序

我想问的是,是否有一种方法可以将我的应用程序完全打包为一个框架并以这种方式加载(应用程序的大小相当大,有几个ViewController和功能)

我知道我将无法访问AppDelegate之类的应用程序加载功能

如果我的应用程序具有库依赖项,会发生什么情况?(如阿拉莫菲尔)

还有什么我应该关心的吗


谢谢

很明显,在设计/方法方面,有很多选择

我已经做了很多次了(应用商店上的应用程序都是实时的),实际上这就像开发任何框架一样

首先:
AppDelegate
。解决这个问题的简单方法是让应用程序的
AppDelegate
子类化框架的
AppDelegate

@UIApplicationMain类ParentAppDelegate:FrameworkAppDelegate{}

只需确保应用程序在所有相关方法上调用
super

Second:依赖项。这可能是最烦人的部分,因为框架不能嵌入其他框架。但您仍然有一些简单的选择:

  • 让封装的应用程序嵌入所需的框架
  • 将所需框架的源直接添加到您的框架中
  • 使用依赖关系管理器(例如)为您处理此问题
  • 其他问题:您很容易遇到的一个陷阱是使用捆绑包。无论何时动态加载图像/字符串/IB引用等,您都需要指定您正在使用框架的捆绑包,因为有时候它可以默认使用应用程序的捆绑包。最简单的方法是使用捆绑包(for:self.self)

    还要记住,父应用程序需要添加
    info.plist
    中的设置以及框架所需的权限

    对方法的一般评论:我的建议(要么接受,要么放弃☺️) 简单地将完整应用程序添加到客户端的应用程序中是值得注意的。除了IP和应用程序审查问题外,这可能会增加很多复杂性或增加当前应用程序的分支以支持它,使未来的维护成为一件麻烦事


    相反,我建议您只将客户端所需的应用程序部分放入一个单独的框架中,供您和客户端用于单独的应用程序。

    是的,正如您上面所说,您不会得到AppDelegate和其他类似通知功能的东西。但您可以做一件事,即转换ap的核心概念p到框架如果你的客户端不需要添加更多功能,你只需将你的应用部署为一个白标签,没有必要将整个项目嵌入到框架中。这不是一个品牌问题。需要嵌入应用而不是单独的应用。web应用做什么?它是本机应用的副本吗?