iOS エンタイトルメント
iOS では、.NET Multi-platform App UI (.NET MAUI) アプリはサンドボックスで実行されます。このサンドボックスでは、アプリケーションと特定のシステム リソースまたはユーザー データ間のアクセスを制限する一連の規則が提供されます。 エンタイトルメントは、Siri との統合などの追加機能をアプリに提供するためにサンドボックスの拡張を要求する場合に使用されます。 アプリで使用されるすべてのエンタイトルメントは、アプリの Entitlements.plist ファイルで指定する必要があります。 エンタイトルメントの詳細については、developer.apple.com で「エンタイトルメント」をご覧ください。
エンタイトルメントの指定に加え、Entitlements.plist ファイルはアプリのコード署名の際に使用されます。 アプリにコード署名する場合、エンタイトルメント ファイルは Apple 開発者アカウントの情報およびその他のプロジェクト情報と結合されて、最終的な一連のエンタイトルメントがアプリに適用されます。
エンタイトルメントは、機能の概念と密接に関連しています。 どちらの場合も、アプリが実行されるサンドボックスの拡張を要求して、追加の機能を提供します。 通常、エンタイトルメントはアプリの開発時に追加されますが、機能は通常、配布用にアプリに署名するコード時に追加されます。 ただし、自動プロビジョニングが有効になっている場合、アプリに特定のエンタイトルメントを追加すると、そのプロビジョニング プロファイルでアプリの機能も更新されます。 詳細については、「Visual Studio に機能を追加する」をご覧ください。
重要
Entitlements.plist ファイルが Apple Developer アカウントにリンクされていません。 そのため、アプリのプロビジョニング プロファイルを作成する場合は、アプリで使用されるエンタイトルメントがプロビジョニング プロファイルの機能としても指定されていることを確認する必要があります。 詳しくは、「Capabilities」をご覧ください。
Entitlements.plist ファイルを追加する
.NET MAUI アプリ プロジェクトに新しいエンタイトルメント ファイルを追加するには、Entitlements.plist という名前の新しい XML ファイルをアプリ プロジェクトの Platforms\iOS フォルダーに追加します。 それから、次の XML をそのファイルに追加します。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>
エンタイトルメントを設定する
エンタイトルメントは、エンタイトルメント エディターで Entitlements.plist ファイルをダブルクリックして開くことで、Visual Studio で構成できます。
ソリューション エクスプローラーで、.NET MAUI アプリ プロジェクトの [Platforms] > [iOS] フォルダーにある Entitlements.plist ファイルをダブルクリックして、エンタイトルメント エディターで開きます。
エンタイトルメント エディターで、アプリに必要なすべてのエンタイトルメントを選択して構成します。
Entitlements.plist ファイルへの変更を保存して、エンタイトルメント キーと値のペアをファイルに追加します。
また、特定の権利に対して Info.plist でプライバシー キーを設定する必要がある場合もあります。
エンタイトルメントを使用する
Entitlements.plist ファイルで定義されているエンタイトルメントを使用するように .NET MAUI iOS アプリを Visual Studio で構成する必要があります。
[ソリューション エクスプローラー] で、.NET MAUI アプリ プロジェクトを右クリックし、[プロパティ] を選択します。 次に、[iOS] > [バンドル署名] タブに移動します。
[バンドル署名] 設定で、"ユーザー設定の権利" フィールドの [参照...] ボタンをクリックします。
[カスタム エンタイトルメント] ダイアログで、Entitlements.plist ファイルを含むフォルダーに移動し、ファイルを選択して、[開く] ボタンをクリックします。
プロジェクトのプロパティで、"カスタム エンタイトルメント" フィールドにエンタイトルメント ファイルが設定されます。
プロジェクトのプロパティを閉じます。
Note
Visual Studio では、デバッグ ビルドとリリース ビルドの両方の "カスタム エンタイトルメント" フィールドが設定されます。
自動プロビジョニングが有効になっている場合、エンタイトルメントのサブセットも機能としてアプリのプロビジョニング プロファイルに追加されます。 詳細については、「Visual Studio に機能を追加する」をご覧ください。
キー参照
参照用に、エンタイトルメント キーと値のペアを以下に示します。 Visual Studio では、Entitlements.plist ファイルを XML ファイルとして編集することで追加できます。 Visual Studio Code では、Entitlements.plist ファイルで XML を編集することで追加できます。
Access WiFi 情報
この Access WiFi 情報エンタイトルメントにより、アプリは現在接続されている WiFi ネットワークに関する情報を取得できるようになります。
エンタイトルメントは、Boolean
型の com.apple.developer.networking.wifi-info
キーを使用して定義されます。
<key>com.apple.developer.networking.wifi-info</key>
<true/>
詳細については、developer.apple.com の「Access WiFi Information Entitlement」をご覧ください。
アプリの構成証明
アプリの構成証明のエンタイトルメントを使用すると、デバイスに特別な暗号化キーを生成し、それを使用してアプリの整合性を検証してから、サーバーが機密データにアクセスできるようになります。
エンタイトルメントは、String
型の com.apple.developer.devicecheck.appattest-environment
キーを使用して定義されます。
<key>com.apple.developer.devicecheck.appattest-environment</key>
<string>development</string>
詳細については、developer.apple.com の「App Attest Environment」をご覧ください。
アプリ グループ
アプリ グループのエンタイトルメントを使用すると、アプリは複数の関連アプリ間で共有されているグループ コンテナーにアクセスし、アプリ間におけるプロセス間の通信を実行できます。
エンタイトルメントは、String
の Array
型の com.apple.security.application-groups
キーを使用して定義されます。
<key>com.apple.security.application-groups</key>
<array>
<string>group.MyAppGroups</string>
</array>
詳細については、developer.apple.com の「App Groups Entitlement」をご覧ください。
Apple Pay
Apple Pay エンタイトルメントでは、ユーザーは、デバイスに保存されている支払い情報を使用して、食料品、衣料品、チケット、予約などの物理的な商品やサービスに対して簡単かつ安全に支払うことができます。
エンタイトルメントは、String
の Array
型の com.apple.developer.in-app-payments
キーを使用して定義されます。
<key>com.apple.developer.in-app-payments</key>
<array>
<string>merchant.your.merchantid</string>
</array>
詳細については、developer.apple.com の「Merchant IDs Entitlement」をご覧ください。
関連するドメイン
関連するドメイン エンタイトルメントでは、Safari へのアクセス、保存されたパスワード、アクティビティの継続など、特定のサービスの特定のドメインにアプリを関連付けられます。
エンタイトルメントは、String
の Array
型の com.apple.developer.associated-domains
キーを使用して定義されます。
<key>com.apple.developer.associated-domains</key>
<array>
<string>webcredentials:example.com</string>
</array>
詳細については、developer.apple.com の「Associated Domains Entitlement」をご覧ください。
オートフィル資格情報プロバイダー
オートフィル資格情報プロバイダーのエンタイトルメントにより、ユーザーのアクセス許可があるアプリは、オートフィルでユーザー名とパスワードをアプリと Safari に提供できます。
エンタイトルメントは、Boolean
型の com.apple.developer.authentication-services.autofill-credential-provider
キーを使用して定義されます。
<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>
詳細については、developer.apple.com での「AutoFill Credential Provider Entitlement」をご覧ください。
ClassKit
ClassKit エンタイトルメントでは、学校が管理する環境で、教科書の章を読んだり、小テストを受けるなど、割り当てられたアクティビティに関する学生の進捗状況について、教師とプライベートかつ安全に共有できます。
エンタイトルメントは、String
型の com.apple.developer.ClassKit-environment
キーを使用して定義されます。
<key>com.apple.developer.ClassKit-environment</key>
<string>development</string>
詳細については、developer.apple.com での「ClassKit Environment Entitlement」をご覧ください。
ドライバーと通信する
ドライバー エンタイトルメントとの通信により、アプリと DriverKit ドライバーの間で通信できるようになります。
エンタイトルメントは、Boolean
型の com.apple.developer.driverkit.communicates-with-drivers
キーを使用して定義されます。
<key>com.apple.developer.driverkit.communicates-with-drivers</key>
<true/>
詳細については、developer.apple.com の「Communicates with Drivers」をご覧ください。
通信通知
通信通知のエンタイトルメントでは、アプリのユーザーは 1 人または複数のユーザーに通信通知を送信できます。
エンタイトルメントは、Boolean
型の com.apple.developer.usernotifications.communication
キーを使用して定義されます。
<key>com.apple.developer.usernotifications.communication</key>
<true/>
詳細については、developer.apple.com で「Request Notification Service Entitlement」をご覧ください。
データ保護
データ保護のエンタイトルメントでは、アプリはサポートされているデバイスで組み込みの暗号化を使用できます。 ファイルを保護対象として指定すると、システムは暗号化された形式でファイルを格納します。
エンタイトルメントは、String
型の com.apple.developer.default-data-protection
キーを使用して定義されます。
<key>com.apple.developer.default-data-protection</key>
<string>NSFileProtectionComplete</string>
詳細については、developer.apple.com で「Data Protection Entitlement」をご覧ください。
拡張仮想アドレス指定
拡張仮想アドレス指定のエンタイトルメントでは、アプリでより多くのアドレス空間を使用できます。
エンタイトルメントは、Boolean
型の com.apple.developer.kernel.extended-virtual-addressing
キーを使用して定義されます。
<key>com.apple.developer.kernel.extended-virtual-addressing</key>
<true/>
詳細については、developer.apple.com の「拡張仮想アドレス指定エンタイトルメント」をご覧ください。
ファミリ コントロール
ファミリ コントロール エンタイトルメントにより、アプリで保護者による制限が可能になり、ScreenTime API で管理される設定およびデバイス アクティビティ フレームワークへのアクセスが許可されます。 ファミリ コントロールを使用するには、ユーザーの登録にファミリ共有が必要です。 アプリの削除を防ぎ、ネットワーク拡張機能からデバイス上のコンテンツ フィルターを有効にします。
エンタイトルメントは、Boolean
型の com.apple.developer.family-controls
キーを使用して定義されます。
<key>com.apple.developer.family-controls</key>
<true/>
詳細については、developer.apple.com の「ファミリ コントロール エンタイトルメント」をご覧ください。
FileProvider テスト モード
FileProvider テスト モードのエンタイトルメントは、ファイル プロバイダー拡張機能がテスト中にシステムの動作をよりコントロールできるようにするテスト モードを有効にします。
エンタイトルメントは、Boolean
型の com.apple.developer.fileprovider.testing-mode
キーを使用して定義されます。
<key>com.apple.developer.fileprovider.testing-mode</key>
<true/>
詳細については、developer.apple.com の 「FileProvider テスト モードのエンタイトルメント」をご覧ください。
フォント
フォントのエンタイトルメントを使用すると、ユーザーの許可を得て、アプリでカスタム フォントをインストールして使用できるようになります。
エンタイトルメントは、String
の Array
型の com.apple.developer.user-fonts
キーを使用して定義されます。
<key>com.apple.developer.user-fonts</key>
<array>
<string>system-installation</string>
</array>
詳細については、developer.apple.com の「カスタム フォントの構成」をご覧ください。
グループ アクティビティ
グループ アクティビティのエンタイトルメントは、アプリが1つ以上の他のデバイス上の同じアプリと通信し、FaceTime 通話内でグループ アクティビティを作成できるようにします。 FaceTime のグループ アクティビティでは、ユーザーは一緒にビデオを見たり、一緒に音楽を聴いたり、別の同期アクティビティを実行することができます。
エンタイトルメントは、Boolean
型の com.apple.developer.group-session
キーを使用して定義されます。
<key>com.apple.developer.group-session</key>
<true/>
詳細については、developer.apple.com の「グループ アクティビティのエンタイトルメント」をご覧ください。
HealthKit
HealthKit エンタイトルメントを使用すると、アプリはユーザーの許可を得て、個人の健康情報にアクセスできるようになります。
エンタイトルメントは、Boolean
型の com.apple.developer.healthkit
キーを使用して定義されます。
<key>com.apple.developer.healthkit</key>
<true/>
詳細については、developer.apple.com の「HealthKit エンタイトルメント」をご覧ください。
HomeKit
HomeKit エンタイトルメントを使用すると、アプリで HomeKit アクセサリを操作できます。
エンタイトルメントは、Boolean
型の com.apple.developer.homekit
キーを使用して定義されます。
<key>com.apple.developer.homekit</key>
<true/>
詳細については、developer.apple.com の「HomeKit エンタイトルメント」をご覧ください。
ホット スポットの構成
ホットスポット構成エンタイトルメントを使用すると、アプリで WiFi ネットワークを構成できます。
エンタイトルメントは、Boolean
型の com.apple.developer.networking.HotspotConfiguration
キーを使用して定義されます。
<key>com.apple.developer.networking.HotspotConfiguration</key>
<true/>
詳細については、developer.apple.com の 「ホットスポット構成のエンタイトルメント」をご覧ください。
iCloud
iCloud エンタイトルメントにより、アプリはクラウドにデータを格納できるため、ユーザーは複数のデバイス間でデータを共有できます。
エンタイトルメントは、String
の Array
型の com.apple.developer.icloud-container-development-container-identifiers
キー、およびコンテナー識別子を表す追加のキーを使用して定義されます。
<key>com.apple.developer.icloud-container-identifiers</key>
<array>
<string>iCloud.com.companyname.test</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
$(AppIdentifierPrefix)
および $(CFBundleIdentifier)
プレースホルダーは、ビルド時に正しい値に置き換えられます。
詳細については、developer.apple.com の「iCloud コンテナー識別子のエンタイトルメント」をご覧ください。
増加したメモリ制限
メモリ制限のエンタイトルメントを増やすと、アプリはサポートされているデバイスの既定のアプリ メモリ制限を超えることができるようになります。
エンタイトルメントは、Boolean
型の com.apple.developer.kernel.increased-memory-limit
キーを使用して定義されます。
<key>com.apple.developer.kernel.increased-memory-limit</key>
<true/>
詳細については、developer.apple.com の「増加したメモリ制限のエンタイトルメント」をご覧ください。
アプリ間オーディオ
アプリ間オーディオ エンタイトルメントを使用すると、アプリ間オーディオが有効になっている他のアプリとの間で音声を送受信できるようになります。
エンタイトルメントは、Boolean
型の inter-app-audio
キーを使用して定義されます。
<key>inter-app-audio</key>
<true/>
詳細については、developer.apple.com の 「Inter-App Audio Entitlement」をご覧ください。
重要
このエンタイトルメントは iOS 13 では非推奨となり、macOS で iPad アプリを実行する場合は使用できません。
キーチェーン
キーチェーン エンタイトルメントを使用すると、同じチームによって作成された複数のアプリがパスワードを共有できるようになります。
エンタイトルメントは、String
の Array
型の keychain-access-groups
キーを使用して定義されます。
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.companyname.test</string>
</array>
詳細については、developer.apple.com の「Keychain Access Groups entitlement」をご覧ください。
関連付けられた MDM マネージド ドメイン
モバイル開発管理 (MDM) が管理する関連ドメイン エンタイトルメントを使用すると、MDM は、環境に固有のサーバー名などの値を使用して、アプリに含まれる関連ドメインを補足できるようになります。
エンタイトルメントは、Boolean
型の com.apple.developer.associated-domains.mdm-managed
キーを使用して定義されます。
<key>com.apple.developer.associated-domains.mdm-managed</key>
<true/>
マルチパス
マルチパス エンタイトルメントを使用すると、アプリでマルチパス TCP などのマルチパス プロトコルを使用できます。これにより、あるインターフェイスから別のインターフェイスにトラフィックがシームレスに引き渡されます。
エンタイトルメントは、Boolean
型の com.apple.developer.networking.multipath
キーを使用して定義されます。
<key>com.apple.developer.networking.multipath</key>
<true/>
詳細については、developer.apple.com の「Multipath Entitlement」をご覧ください。
近距離通信タグ リーダー
近距離通信タグ リーダーのエンタイトルメントにより、アプリは NFC データ交換形式 (NDEF) 近距離通信 (NFC) タグを読み取ることができます。
エンタイトルメントは、String
の Array
型の com.apple.developer.nfc.readersession.formats
キーを使用して定義されます。
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
<string>TAG</string>
</array>
詳細については、developer.apple.com の「Near Field Communication Tag Reader Session Formats Entitlement」をご覧ください。
ネットワーク拡張機能
ネットワーク拡張機能のエンタイトルメントを使用すると、デバイスのネットワーク機能を拡張およびカスタマイズするアプリ拡張機能を作成できます。
エンタイトルメントは、String
の Array
型の com.apple.developer.networking.networkextension
キーを使用して定義されます。
<key>com.apple.developer.networking.networkextension</key>
<array>
<string>content-filter-provider</string>
</array>
詳細については、developer.apple.com の「Network Extensions Entitlement」をご覧ください。
個人の VPN
個人用 VPN のエンタイトルメントを使用すると、アプリでカスタム VPN 接続を使用できます。
エンタイトルメントは、String
の Array
型の com.apple.developer.networking.vpn.api
キーを使用して定義されます。
<key>com.apple.developer.networking.vpn.api</key>
<array>
<string>allow-vpn</string>
</array>
詳細については、developer.apple.com の「Personal VPN Entitlement」をご覧ください。
プッシュ通知
プッシュ通知のエンタイトルメントにより、アプリはプッシュ通知を受け取ります。
エンタイトルメントは、String
型の aps-environment
キーを使用して定義されます。
<key>aps-environment</key>
<string>development</string>
詳細については、developer.apple.com の「APS Environment Entitlement」をご覧ください。
プッシュツートーク
通話へのプッシュツートーク エンタイトルメントを使用すると、アプリは、バックグラウンド音声の送受信を処理できるように、プッシュツートーク チャネルをシステムに報告できます。
エンタイトルメントは、Boolean
型の com.apple.developer.push-to-talk
キーを使用して定義されます。
<key>com.apple.developer.push-to-talk</key>
<true/>
詳細については、developer.apple.com の 「Push to Talk Entitlement」をご覧ください。
ユーザーと共有
ユーザーと共有エンタイトルメントを使用すると、アプリはメッセージ会話で共有されているリンクを要求し、ユーザーと共有フレームワークを介してリンクを表示できます。
エンタイトルメントは、Boolean
型の com.apple.developer.shared-with-you
キーを使用して定義されます。
<key>com.apple.developer.shared-with-you</key>
<true/>
Apple でサインイン
Apple エンタイトルメントを使用してサインインすると、ユーザーは Apple ID で認証できます。
エンタイトルメントは、String
の Array
型の com.apple.developer.applesignin
キーを使用して定義されます。
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
詳細については、developer.apple.com の 「Apple Entitlement を使用したサインイン」をご覧ください。
Siri
Siri エンタイトルメントを使用すると、アプリで Siri 要求を処理できます。
エンタイトルメントは、Boolean
型の com.apple.developer.siri
キーを使用して定義されます。
<key>com.apple.developer.siri</key>
<true/>
詳細については、developer.apple.com の「Siri Entitlement」をご覧ください。
即時通知
即時通知のエンタイトルメントにより、アプリで即時通知を処理できます。 即時通知は、即時の注意を必要とする情報を配信し、通知を受信した瞬間に行動を起こすよう個人に直接促します。 即時アラートは常に直ちに配信され、他の通知よりも上に表示され、フォーカスと応答不可を中断できます。
エンタイトルメントは、Boolean
型の com.apple.developer.usernotifications.time-sensitive
キーを使用して定義されます。
<key>com.apple.developer.usernotifications.time-sensitive</key>
<true/>
ウォレット
ウォレットのエンタイトルメントにより、アプリはパス、チケット、ギフト カード、ロイヤルティ カードを管理できます。 さまざまなバー コード形式をサポートしています。
エンタイトルメントは、String
の Array
型の com.apple.developer.pass-type-identifiers
キーを使用して定義されます。
<key>com.apple.developer.pass-type-identifiers</key>
<array>
<string>$(TeamIdentifierPrefix)*</string>
</array>
この例では、アプリですべての渡す型を許可できるようになります。 アプリを制限し、一連のチームが渡す型のみを許可するには、$(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)
に文字列値を設定し、pass.$(CFBundleIdentifier)
にはパス ID を設定します。
詳細については、developer.apple.com の 「Pass Type IDs Entitlement」をご覧ください。
WeatherKit
WeatherKit エンタイトルメントを使用すると、アプリは現在の気象情報と予測気象情報を受信して処理できます。
エンタイトルメントは、Boolean
型の com.apple.developer.weatherkit
キーを使用して定義されます。
<key>com.apple.developer.weatherkit</key>
<true/>
詳細については、developer.apple.com の 「WeatherKit Entitlement」をご覧ください。
ワイヤレス アクセサリ構成
ワイヤレス アクセサリ構成のエンタイトルメントを使用すると、アプリで Wi-Fi アクセサリを構成できます。
エンタイトルメントは、Boolean
型の com.apple.external-accessory.wireless-configuration
キーを使用して定義されます。
<key>com.apple.external-accessory.wireless-configuration</key>
<true/>
詳細については、developer.apple.com の「Wireless Accessory Configuration Entitlement」をご覧ください。
.NET MAUI