概要
App Clipはアプリの軽量版で、アプリの機能の一部を必要なときに、必要な場面で提供するものです。特定の機能に絞って提供されるため、App Clipは高速起動、ユーザーのプライバシー保護、リソースの節約を実現できる設計になっています。そのため、App Clipには一定の制限事項があります。App Clipを開発する前に、まずApp Clipで利用できるテクノロジーを確認し、優れたApp Clipを生み出すにはどの機能が必要かを検討してください。
注意
完全版アプリに用意できるApp Clipは1つのみで、完全版アプリはApp Clipのすべての機能をサポートする必要があります。
App Clipで高速な起動体験を実現するには、App Clipのサイズを小さくする必要があります(非圧縮バイナリで10MB以下)。できれば、この制限を大幅に下回るようにApp Clipのサイズを抑えてください。詳しくは、「App Clipのサイズの抑制」を参照してください。
利用可能なフレームワークの確認
App ClipはSwiftUI(英語)およびUIKitを活用しており、完全版アプリと同じフレームワークにアクセスすることができます。ただし、以下のフレームワークでは、実行時にアクセスできる機能が一切ないか、制限されています。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のis
(英語)をApp Clipから呼び出すとfalse
が返ってきます。
ユーザープライバシーの保護
App Clipには、ユーザーのプライバシーを保護し、複数のアプリやApp Clipで行われるユーザートラッキングの防止に役立つ制限が設けられています。以下がその例です。
-
SKAd
(英語)で提供されている機能は利用できません。Network -
App Clipでは、「App Tracking Transparency(英語)」を使ってユーザーをトラッキングする許可をリクエストできません。
-
name
(英語)とidentifier
(英語)のどちらも、空の文字列が返ってきます。For Vendor -
App Clipでは、位置情報への継続的なアクセスをリクエストできません。ただし、
request
(英語)を実行して、アプリ利用時(When In Use)の許可をリクエストすることはできます。この許可は、翌日の午前4時に自動的にリセットされます。When In Use Authorization() -
App Clipでは、ウォレットアプリに保存されたパスを読み取る「
パス型IDのエンタイトルメント
(英語)」をリクエストすることはできません。ただし、ウォレットアプリにパスを追加する機能がApp Clipに搭載されている場合は、パスがすでに存在するかどうかをチェックできます。詳しくは、「パスがライブラリにあるかどうかチェックする(英語)」を参照してください。 -
App Clipでは、対応する完全版アプリ以外のアプリとデータを共有することはできません。詳しくは、「App Clipに対応するアプリでデータを利用可能にする」を参照してください。
上記に加えて、App Clipは以下にアクセスできません。
-
Apple Musicおよびメディア
-
カレンダー、連絡先、ファイル、ヘルスケア、メッセージ、リマインダー、写真などのアプリのデータ
-
モーションデータおよびフィットネスデータ
一定の機能を完全版アプリのみに限定する
リソースの節約とユーザープライバシーの保護のため、App Clipではバックグラウンドアクティビティを実行できません。たとえば、App Clipでは以下を利用することができません。
-
URLSession
(英語)を使ったバックグラウンドでのネットワーク接続 -
「バックグラウンドでのアプリアップデートのプッシュ(英語)」で説明されているバックグラウンドモードで有効にする機能
-
App Clipが使用されていない間のBluetooth接続の維持
App Clipはその時々に合わせた体験を提供し、日常的なタスクをできるだけすばやく解決する方法を提供することに特化しているため、一部の機能は完全版アプリで実行する方が適しています。以下の機能は完全版アプリで実行するようにしてください。
-
Bonjour(英語)などの高度なネットワーク機能や、
CFSocket
(英語)などの低レベルのネットワーク接続API、POSIXの各種機能。こうした機能の代わりに、URLSession
(英語)またはNetwork(英語)フレームワークを使用してください。 -
App Extension
-
カスタマイズと設定(例:設定バンドルの作成)
-
データのハンドオフとドキュメントの表示
-
アプリ内課金
-
低レベルのUnix機能(例:BSD通知)
-
iPad上の複数のシーン
-
オンデマンドリソース
-
ほかのアプリのプロモーション
-
カスタムURLスキームの登録
-
StoreKitの
request
(英語)メソッドを使って行う、完全版アプリのユーザーレビューを求めるリクエストReview(in:) -
ペアリングしているBluetooth対応デバイスの検出
App Clipは、Hotspot Configurationのエンタイトルメント
(英語)を使ってWi-Fiネットワークを構成することがある点に注意してください。さらに、認証プロバイダに接続するために、callback
(英語)と共にinit(url:
(英語)を使ってASWeb
(英語)を初期化する場合があります。