跳到主要内容

App 扩展

App 扩展允许你在主应用之外提供自定义的功能和内容。iOS 上有不同类型的 App 扩展,它们都包含在App Extension Programming Guide(App 扩展编程指南)中。在本指南中,我们将简要介绍如何在 iOS 上利用 App 扩展。

扩展中的内存使用

由于这些扩展是在常规应用沙箱之外加载的,因此很可能同时加载多个 App 扩展。正如你可能预期的那样,这些扩展的内存使用限制很小。在开发 App 扩展时请记住这些限制。始终强烈建议在真机上测试你的应用程序,在开发 App 扩展时更是如此:开发者经常发现他们的扩展在 iOS 模拟器中运行良好,但却收到用户报告称他们的扩展在真机上无法加载。

我们强烈建议你观看 Conrad Kramer 关于 Memory Use in Extensions(扩展中的内存使用)的演讲,以了解更多关于此主题的信息。

Today 小组件

Today 小组件的内存限制为 16 MB。碰巧的是,使用 React Native 实现的 Today 小组件可能无法可靠地工作,因为内存使用量往往过高。如果你的 Today 小组件超出内存限制,它会显示“Unable to Load”(无法加载)消息。

始终确保在真机上测试你的 App 扩展,但请注意,这可能不足够,尤其是在处理 Today 小组件时。Debug 配置的构建版本更可能超出内存限制,而 Release 配置的构建版本不会立即失败。我们强烈建议你使用 Xcode 的 Instruments 来分析你的真实世界内存使用情况,因为你的 Release 配置的构建版本很可能非常接近 16 MB 的限制。在这些情况下,执行常见操作(例如从 API 获取数据)可能会迅速超过 16 MB 的限制。

要试验 React Native Today 小组件实现的限制,请尝试扩展 react-native-today-widget 中的示例项目。

其他 App 扩展

其他类型的 App 扩展比 Today 小组件具有更大的内存限制。例如,自定义键盘扩展的限制为 48 MB,而共享扩展的限制为 120 MB。使用 React Native 实现此类 App 扩展更可行。一个概念验证示例是 react-native-ios-share-extension