第10章 React Native iOS App 扩展开发指南
App Extensions
App 扩展让你能在主应用之外提供自定义功能与内容。iOS 上有多种类型的 app 扩展,详细信息可参考 App Extension Programming Guide。本指南将简要介绍如何在 iOS 上利用 app 扩展。
扩展中的内存占用
由于这些扩展运行在常规应用沙盒之外,很可能会同时加载多个扩展。可以预见,扩展的内存使用上限很小,开发时要牢记这一点。强烈建议在真机上测试应用,开发 app 扩展时更是如此:开发者经常发现扩展在 iOS 模拟器上运行正常,但用户反馈在真机上无法加载。
Today 小组件
Today 小组件的内存上限是 16 MB。而使用 React Native 实现的 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 小组件。例如,Custom Keyboard 扩展上限为 48 MB,Share 扩展为 120 MB。用 React Native 实现这类扩展更可行,概念验证示例可参考 react-native-ios-share-extension。