【问题标题】:Embedding apps into an app in IOS将应用程序嵌入到 IOS 中的应用程序中
【发布时间】:2013-10-05 01:57:12
【问题描述】:

我正在尝试将应用程序嵌入到应用程序中。基本上我想要类似于divide.com的应用程序所做的事情:

,但他们构建了自己的邮件、日历应用程序等。是否可以将这些应用程序包含在另一个应用程序中,但它们本身就是单独的应用程序?我对 IOS 有点陌生,我已经查看了自定义 url 方案 - 但是一旦调用链接的应用程序,控制应用程序就会失去控制。

我查看了Launch an app from within another (iPhone),它建议了我提到的 url 方案,但这并不是我真正想要的。我也可以考虑,如果没有办法实现原生应用程序是在 ipad 上安装应用程序,然后从主应用程序链接到它们。但是有没有一种将应用程序放入另一个应用程序的本地方法。

【问题讨论】:

  • 看起来该图像倾向于虚假广告。 iOS 应用程序没有关于其他应用程序的固有知识,并且您不能将一个应用程序嵌入到另一个应用程序中。看起来divide创建了他们自己的聪明的应用程序,可以做很多事情。
  • 感谢您的回复,不胜感激。基本上,他们创建了一个启动器,然后创建了指向他们自己的邮件和日历代码的链接。 :) 这是一个好方法,但我不想重新发明轮子并创建自己的邮件和日历代码。是否可以链接到通常在 ipad 外部的应用程序(比如车库乐队),提供使用启动器链接到它,然后锁定对它的访问,而不是通过这个启动器访问它?
  • @iosnoob 不,你不能启动车库乐队。你的应用甚至不能知道是否安装了garage band,更不用说与之交互了。唯一的例外是大多数应用程序不提供的 URL 协议。您只能与专门设计用于交互的应用(如 Dropbox)进行交互。
  • 抱歉,Apple 的安全模型(防止恶意软件)和隐私模型(防止间谍软件)和审查指南(防止应用程序绕过技术障碍)都是从头开始构建的以某种方式使您的建议成为不可能。

标签: ios ipad app-store


【解决方案1】:

现有应用如何做到这一点

在幕后,作为示例引用的应用程序内的应用程序实际上是父应用程序内的独立模块。实际上,它们是将多个应用程序集成到一个应用程序、一个可执行文件中。

目前已经提出了几种方法。但每个人都有自己的问题。

在您的应用程序包中嵌入另一个应用程序

虽然技术上可行,但实际上不能在 iOS 上将另一个应用嵌入到另一个应用中,因为 App Store 指南和操作系统本身都禁止这样做。

启动网址

正如@BlackRider 所说,您可以使用启动 URL 启动其他应用程序。但是,您不能按照您的要求禁止从您的启动器外部启动其他应用程序。用户仍然可以从 Springboard 启动其他应用程序,并且其他应用程序也可以使用启动 URL。

应用包装

我必须承认,我对应用程序包装的机制并不是很熟悉。但是,在我阅读它的工作原理时,它需要企业 IT 的干预才能启用。如果您打算将应用直接出售给公司,这可能会奏效,但如果您打算在 iTunes App Store 中将其出售给普通大众,这将不起作用。

【讨论】:

  • 感谢您的回答。欣赏它。但是这种情况是否有可能 - 1.)一个应用程序说车库带安装在 ipad 上,2.)指向它的链接被放入另一个应用程序,这是一个启动器应用程序 3.)禁止访问这个应用程序,除了从发射器。也许 ios 7 中的某些东西可以允许这样做?
  • @iosnoob 不,那不可能
  • 应用包装怎么样?
  • 根据我对应用程序包装的理解,它可能适合也可能不适合,我已经更详细地更新了我的答案。
【解决方案2】:

@BergQuester 说您不能将一个应用程序嵌入到 iOS 中的另一个独立应用程序中是正确的。 iOS 安全模型可以防止这种情况发生,其中应用对其他应用以及它们自己的沙盒之外的任何内容的了解极为有限。

也就是说,有些应用可以通过使用应用启动网址巧妙地解决这个问题。这个Apple document 描述了如何做到这一点。例如,您可以从您的应用程序启动 Instagram(前提是您的手机上安装了 Instagram)。许多应用程序都有自己的 URL 方案,您可以使用这些方案从您自己的应用程序中启动这些应用程序。在许多情况下,您还可以将一些数据传递给这些应用程序(例如,用于 Instagram 创建新帖子的图像和一些文本)。

Launch Center Pro 是使用这种方法的一个很好的应用示例。

【讨论】:

【解决方案3】:

正确的技术方法是使用 NSBundle:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html

一个包可以做很多事情,包括保存您的应用可以加载和执行的任意代码。基本上你将一些可以做任何事情的代码编译成一个包,然后你把那个包放在你的启动器中,它就会被它启动。

但是,应用商店规则严格禁止你做很多技术上可行的事情。您的应用可能会或可能不会被允许进入 App Store。

因此,您需要研究指南,尤其是第 2 部分。还有其他应用程序可以完成您想做的事情,因此显然可以完成 - 但您正在推动指南的边缘。也许您的想法以前从未做过,因为这是不允许的。

最糟糕的是,指南可能随时更改。今天允许的,明天可能就不允许了。如果你打算从这个项目中赚钱……那你真的是在玩火。他们可能会在您的应用发布之前就将其杀死,或者在您发布应用一周或六个月后,他们可能会改变主意并杀死它。

尝试查找 NSBundle 如何在 OS X/Cocoa 应用上工作的示例。它在 iOS 上完全相同,但在 Mac 应用程序中更常用,因此有更多示例代码可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2017-10-06
    • 2011-11-22
    • 2013-05-29
    • 2018-12-21
    相关资源
    最近更新 更多