有 2 个 iPhone 应用程序。一个应用程序在前台运行,另一个在后台运行。有没有办法让后台应用程序通过 USB 发送数据而不进入前台?理想情况下,我们希望将前台应用程序保持在前台,而后台应用程序处理一些数据。处理完数据后,它将通知前台应用程序数据已被处理。
3 回答
不,它不能。如果不使用私有框架,它甚至无法做到这一点,除非您在 Made for iPhone 程序中。如果您是,那么您的组织将根据向您提供的文档了解您可以访问和不能访问的内容、访问时间和方式。
如果您参与了 Made for iPhone 计划,并且不清楚您可以访问哪些内容以及何时访问,请联系您组织中与 Apple 就该计划进行技术联系的人员,他们将能够为您提供详细信息。
如果任务在应用程序处于前台时启动并且您调用适当的 beginBackgroundTask/endBackgroundTask 方法,您应该能够在应用程序后台运行后继续运行。
请注意,对 USB 的访问受到限制(请参阅 jer 的回答),并且没有官方认可的方式可以在同一设备上的不同应用程序之间进行通信。此外,您一次只能在 App Store 中购买/下载一个应用程序,而且我看不到 Apple 批准需要您下载第二个应用程序才能运行的应用程序。所以你可能有更大的问题需要先解决。
如果您告诉我们您真正想要实现的目标,将会有很大帮助。例如,“我希望用户手机上的 MyApp 与用户计算机上的 MyApp 通信”。
最简单的方法是在手机和计算机之间发送数据是要求它们都在同一个 Wi-Fi 网络上。一些 iPhone 应用程序包含 Web 服务器(这是 OS 3.2 之前“文件共享”的最简单方式),还有更多 iPhone 应用程序连接到运行服务器软件的计算机。
您的其他选择或多或少:
- 对 GameKit 的蓝牙端进行逆向工程并在计算机端重新实现。我不知道有谁做过这件事。松散地说,我认为它是蓝牙 PAN 上的 IP 加上某种蓝牙服务发现。
- 音频输入/输出,例如耳机插孔或基座连接器上的某些引脚。我不完全确定麦克风侧是如何工作的(当我检查时,碳麦克风的电阻有点高),但你可能会很幸运并找到一种方法将其变成“线路输入”或找到“线路输入”坞站连接器上的引脚。
- 指向 iDevice 屏幕的网络摄像头(以及指向计算机屏幕的 iDevice 摄像头)。呜呜呜。
- 加入 MFi 计划。