メインコンテンツにスキップ

App Extensions

アプリ拡張機能を使用すると、メインアプリの外部でカスタム機能とコンテンツを提供できます。iOSにはさまざまな種類のアプリ拡張機能があり、それらはすべてApp Extension Programming Guideで説明されています。このガイドでは、iOSでのアプリ拡張機能の活用方法について簡単に説明します。

拡張機能でのメモリ使用量

これらの拡張機能は通常のアプリサンドボックスの外部でロードされるため、これらのアプリ拡張機能のいくつかが同時にロードされる可能性が高くなります。ご想像のとおり、これらの拡張機能にはメモリ使用量の制限が小さく設定されています。アプリ拡張機能を開発する際には、これらの点に注意してください。実際のデバイスでアプリケーションをテストすることを強くお勧めします。特にアプリ拡張機能を開発する場合はなおさらです。開発者は、iOSシミュレーターでは拡張機能が正常に動作するにもかかわらず、実際のデバイスでは拡張機能がロードされないというユーザーからの報告を受けることがあまりにも頻繁にあります。

このトピックの詳細については、Conrad Kramer氏の拡張機能でのメモリ使用量に関する講演を視聴することを強くお勧めします。

Todayウィジェット

Todayウィジェットのメモリ制限は16MBです。React Nativeを使用したTodayウィジェットの実装は、メモリ使用量が大きすぎる傾向があるため、不安定になる場合があります。「読み込めません」というメッセージが表示された場合は、Todayウィジェットがメモリ制限を超えている可能性があります。

必ず実際のデバイスでアプリ拡張機能をテストしてください。ただし、特にTodayウィジェットを扱う場合は、これだけでは不十分な可能性があることに注意してください。デバッグ構成のビルドはメモリ制限を超えやすく、リリース構成のビルドはすぐに失敗するわけではありません。実際のメモリ使用量を分析するにはXcodeのInstrumentsを使用することを強くお勧めします。リリース構成のビルドが16MBの制限に非常に近い可能性が高いためです。このような状況では、APIからデータをフェッチするなどの一般的な操作を実行することで、すぐに16MBの制限を超える可能性があります。

React Native Todayウィジェットの実装の制限を試すには、react-native-today-widgetのサンプルプロジェクトを拡張してみてください。

その他のアプリ拡張機能

他の種類のアプリ拡張機能は、Todayウィジェットよりも大きなメモリ制限があります。たとえば、カスタムキーボード拡張機能は48MBに制限されており、共有拡張機能は120MBに制限されています。React Nativeでこのようなアプリ拡張機能を実装する方がより実現可能です。概念実証の例としては、react-native-ios-share-extensionがあります。