ドキュメント

App Clipに最適な機能の選択

App Clipで利用できるフレームワークを確認し、優れたApp Clipに必要な機能を特定します。

概要

App ClipはAppの軽量版で、Appの機能の一部を必要なときに、必要な場面で提供するものです。特定の機能に絞って提供されるため、App Clipは高速起動、ユーザーのプライバシー保護、リソースの節約を実現できる設計になっています。そのため、App Clipには一定の制限事項があります。App Clipを開発する前に、まずApp Clipで利用できるテクノロジーを確認し、優れたApp Clipを生み出すにはどの機能が必要かを検討してください。

App Clipで高速な起動体験を実現するには、App Clipのサイズを小さくする必要があります(非圧縮バイナリで10MB以下)。できれば、この制限を大幅に下回るようにApp Clipのサイズを抑えてください。詳しくは、「App Clipのサイズの抑制」を参照してください。

利用可能なフレームワークの確認

App ClipはSwiftUI(英語)およびUIKitを活用しており、完全版Appと同じフレームワークにアクセスすることができます。ただし、以下のフレームワークでは、実行時にアクセスできる機能が一切ないか、制限されています。Assets Library(英語)Background Tasks(英語)CallKit(英語)CareKit(英語)CloudKit(英語)Contacts(英語)Contacts UI(英語)Core Motion(英語)EventKit(英語)EventKit UI(英語)File Provider(英語)File Provider UI(英語)HealthKit(英語)HomeKit(英語)Media Player(英語)Messages(英語)Message UI(英語)PhotoKit(英語)ResearchKit(英語)SensorKit(英語)Speech(英語)

上記のフレームワークをApp Clipで利用してもコンパイル時にエラーは出ませんが、実行時にAPIから機能が利用できないことを示す値や、空のデータ、エラーコードが返ってきます。たとえば、HealthKitのisHealthDataAvailable()(英語)をApp Clipから呼び出すとfalseが返ってきます。

ユーザープライバシーの保護

App Clipには、ユーザーのプライバシーを保護し、複数のAppやApp Clipで行われるユーザートラッキングの防止に役立つ制限が設けられています。以下がその例です。

上記に加えて、App Clipは以下にアクセスできません。

  • Apple Musicおよびメディア

  • カレンダー、連絡先、ファイル、ヘルスケア、メッセージ、リマインダー、写真などのAppのデータ

  • モーションデータおよびフィットネスデータ

一定の機能を完全版Appのみに限定する

リソースの節約とユーザープライバシーの保護のため、App Clipではバックグラウンドアクティビティを実行できません。たとえば、App Clipでは以下を利用することができません。

App Clipはその時々に合わせた体験を提供し、日常的なタスクをできるだけすばやく解決する方法を提供することに特化しているため、一部の機能は完全版Appで実行する方が適しています。以下の機能は完全版Appで実行するようにしてください。

  • Bonjour(英語)などの高度なネットワーク機能や、CFSocket(英語)などの低レベルのネットワーク接続API、POSIXの各種機能。こうした機能の代わりに、URLSession(英語)またはNetwork(英語)フレームワークを使用してください。

  • App Extension

  • カスタマイズと設定(例:設定バンドルの作成)

  • データのハンドオフとドキュメントの表示

  • App内課金

  • 低レベルのUnix機能(例:BSD通知)

  • iPad上の複数のシーン

  • オンデマンドリソース

  • ほかのAppのプロモーション

  • カスタムURLスキームの登録

  • StoreKitのrequestReview(in:)(英語)メソッドを使って行う、完全版Appのユーザーレビューを求めるリクエスト

  • ペアリングしているBluetooth対応デバイスの検出

App Clipは、Hotspot Configurationのエンタイトルメント(英語)を使ってWi-Fiネットワークを構成することがある点に注意してください。さらに、認証プロバイダに接続するために、callbackURLScheme(英語)と共にinit(url:callbackURLScheme:completionHandler:)(英語)を使ってASWebAuthenticationSession(英語)を初期化する場合があります。