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