App Extensions
App Extensions を使用すると、メインアプリの外部でカスタム機能とコンテンツを提供できます。iOS にはさまざまな種類の App Extensions があり、それらはすべてApp Extension Programming Guideで説明されています。このガイドでは、iOS で App Extensions を活用する方法について簡単に説明します。
拡張機能でのメモリ使用
これらの拡張機能は通常のアプリサンドボックスの外部で読み込まれるため、これらの App Extensions のいくつかが同時に読み込まれる可能性が非常に高いです。ご想像のとおり、これらの拡張機能には小さなメモリ使用量制限があります。App Extensions を開発する際は、これらを念頭に置いてください。常に実際のデバイスでアプリケーションをテストすることを強くお勧めします。特に App Extensions を開発する際は、その傾向が強まります。開発者は、iOS シミュレータでは拡張機能が正常に動作しても、実際のデバイスでは拡張機能が読み込まれないというユーザー報告を受けることがよくあります。
このトピックについて詳しく学ぶには、Conrad Kramer 氏の拡張機能でのメモリ使用に関する講演をご覧になることを強くお勧めします。
今日のウィジェット
今日のウィジェットのメモリ制限は 16 MB です。今日のウィジェットの実装は React Native を使用すると、メモリ使用量が高すぎる傾向があるため、動作が不安定になる可能性があります。今日のウィジェットがメモリ制限を超過している場合、「読み込みできません」というメッセージが表示されます。
常に実際のデバイスで App Extensions をテストするようにしてください。ただし、これは特に今日のウィジェットを扱う場合には十分ではない可能性があることに注意してください。デバッグ構成のビルドはメモリ制限を超過する可能性が高く、リリース構成のビルドはすぐに失敗することはありません。実際のメモリ使用量を分析するためにXcode の Instrumentsを使用することを強くお勧めします。なぜなら、リリース構成のビルドは 16 MB の制限に非常に近い可能性が高いからです。このような状況では、API からデータを取得するなどの一般的な操作を実行するだけで、すぐに 16 MB の制限を超える可能性があります。
React Native の今日のウィジェット実装の限界を試すには、react-native-today-widgetのサンプルプロジェクトを拡張してみてください。
その他の App Extensions
他の種類の App Extensions は、今日のウィジェットよりも大きなメモリ制限を持っています。例えば、カスタムキーボード拡張機能は 48 MB に制限され、共有拡張機能は 120 MB に制限されています。React Native を使ってこのような App Extensions を実装することはより実現可能です。概念実証の例としては、react-native-ios-share-extensionがあります。