App Extensions
App extensions 允许你在主应用之外提供自定义功能和内容。 iOS 上有不同类型的 app extensions,所有这些都在 App Extension Programming Guide 中进行了介绍。在本指南中,我们将简要介绍如何在 iOS 上利用 app extensions。
扩展中的内存使用
由于这些扩展在常规应用沙箱之外加载,因此很可能同时加载多个 app extensions。正如你可能预料到的那样,这些扩展的内存使用限制很小。在开发 app extensions 时,请记住这些。始终强烈建议在实际设备上测试你的应用程序,在开发 app extensions 时更是如此:开发人员经常发现他们的扩展在 iOS 模拟器中运行良好,但却收到用户报告称他们的扩展在实际设备上无法加载。
我们强烈建议你观看 Conrad Kramer 关于 扩展中的内存使用 的演讲,以了解有关此主题的更多信息。
今日小部件
Today widget 的内存限制为 16 MB。碰巧的是,使用 React Native 的 Today widget 实现可能无法可靠地工作,因为内存使用量往往过高。如果你的 Today widget 产生“无法加载”的消息,你可以判断它是否超过了内存限制。
始终确保在真机上测试你的 app extensions,但请注意,这可能不足够,尤其是在处理 Today widgets 时。调试配置的构建更有可能超过内存限制,而发布配置的构建不会立即失败。我们强烈建议你使用 Xcode 的 Instruments 来分析你的真实内存使用情况,因为你的发布配置的构建很可能非常接近 16 MB 限制。在这样的情况下,你可以通过执行常见操作(例如从 API 获取数据)快速超过 16 MB 限制。
要尝试 React Native Today widget 实现的限制,请尝试扩展 react-native-today-widget 中的示例项目。
其他 app extensions
其他类型的 app extensions 比 Today widget 具有更大的内存限制。例如,自定义键盘扩展限制为 48 MB,而共享扩展限制为 120 MB。使用 React Native 实现此类 app extensions 更加可行。一个概念验证示例是 react-native-ios-share-extension。