次の方法で共有


iOS エンタイトルメント

iOS では、.NET Multi-platform App UI (.NET MAUI) アプリはサンドボックスで実行されます。このサンドボックスでは、アプリケーションと特定のシステム リソースまたはユーザー データ間のアクセスを制限する一連の規則が提供されます。 エンタイトルメントは、Siri との統合などの追加機能をアプリに提供するためにサンドボックスの拡張を要求する場合に使用されます。 アプリで使用されるすべてのエンタイトルメントは、アプリの Entitlements.plist ファイルで指定する必要があります。 エンタイトルメントの詳細については、developer.apple.com の「エンタイトルメント」をご覧ください。

Entitlements.plist ファイルは、エンタイトルメントの指定やアプリのコード署名の際に使用されます。 アプリにコード署名すると、エンタイトルメント ファイルが Apple Developer アカウントの情報や他のプロジェクト情報と組み合わされ、エンタイトルメントの最終セットがアプリに適用されます。

エンタイトルメントは、機能の概念と密接に関連しています どちらの場合も、アプリを実行するサンドボックスの拡張を要求して、追加の機能を提供します。 通常、エンタイトルメントはアプリの開発時に追加されますが、機能は通常、配布用にアプリに署名するコード時に追加されます。 ただし、自動プロビジョニングが有効になっている場合、アプリに特定のエンタイトルメントを追加すると、そのプロビジョニング プロファイルでアプリの機能も更新されます。 詳細については、「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 で構成できます。

  1. ソリューション エクスプローラーで、.NET MAUI アプリ プロジェクトの [Platforms] > [iOS] フォルダーにある Entitlements.plist ファイルをダブルクリックして、エンタイトルメント エディターで開きます。

  2. エンタイトルメント エディターで、アプリに必要なすべてのエンタイトルメントを選択して構成します。

    Visual Studio iOS entitlements editor.

  3. Entitlements.plist ファイルへの変更を保存して、エンタイトルメント キーと値のペアをファイルに追加します。

また、特定のエンタイトルメントに対して、Info.plist でプライバシー キーを設定する必要がある場合もあります。

エンタイトルメントを使用する

Entitlements.plist ファイルで定義されているエンタイトルメントを使用するように .NET MAUI iOS アプリを構成する必要があります。

  1. [ソリューション エクスプローラー] で、.NET MAUI アプリ プロジェクトを右クリックし、[プロパティ] を選択します。 次に、[iOS] > [バンドル署名] タブに移動します。

  2. [バンドル署名] 設定で、"ユーザー設定の権利" フィールドの [参照...] ボタンをクリックします。

  3. [カスタム エンタイトルメント] ダイアログで、Entitlements.plist ファイルを含むフォルダーに移動し、ファイルを選択して、[開く] ボタンをクリックします。

  4. プロジェクトのプロパティで、"カスタム エンタイトルメント" フィールドにエンタイトルメント ファイルが設定されます。

    Visual Studio custom entitlements field set.

  5. プロジェクトのプロパティを閉じます。

Note

Visual Studio では、デバッグ ビルドとリリース ビルドの両方の "カスタム エンタイトルメント" フィールドが設定されます。

自動プロビジョニングが有効になっている場合、エンタイトルメントのサブセットも機能としてアプリのプロビジョニング プロファイルに追加されます。 詳細については、「Visual Studio に機能を追加する」をご覧ください。

キー参照

エンタイトルメント キーと値のペアを以下に示します。 Visual Studio では、Entitlements.plist ファイルを XML ファイルとして編集して追加できます。 Visual Studio for Mac では、エンタイトルメント エディターのソース ビューを使用して追加できます。

WiFi 情報へのアクセス

この Access WiFi 情報エンタイトルメントにより、アプリは現在接続されている WiFi ネットワークに関する情報を取得できます。

エンタイトルメントは、Boolean 型の com.apple.developer.networking.wifi-info キーを使用して定義されます。

<key>com.apple.developer.networking.wifi-info</key>
<true/>

詳細については、developer.apple.com の 「WiFi 情報エンタイトルメントにアクセスする」をご覧ください。

アプリ構成証明

アプリ構成証明のエンタイトルメントを使用すると、デバイスに特別な暗号化キーを生成し、それを使用してアプリの整合性を検証してから、サーバーが機密データにアクセスできるようになります。

エンタイトルメントは、String 型の com.apple.developer.devicecheck.appattest-environment キーを使用して定義されます。

<key>com.apple.developer.devicecheck.appattest-environment</key>
<string>development</string>

詳細については、developer.apple.com の「アプリ構成証明環境」をご覧ください。

アプリ グループ

アプリ グループのエンタイトルメントを使用すると、アプリは複数の関連アプリ間で共有されているグループ コンテナーにアクセスし、アプリ間におけるプロセス間の通信を実行できます。

エンタイトルメントは StringArray 型の com.apple.security.application-groups キーを使って定義されます。

<key>com.apple.security.application-groups</key>
<array>
  <string>group.MyAppGroups</string>
</array>

詳細については、developer.apple.com の「アプリ グループのエンタイトルメント」をご覧ください。

Apple Pay

Apple Pay エンタイトルメントでは、ユーザーは、デバイスに保存されている支払い情報を使用して、食料品、衣料品、チケット、予約などの物理的な商品やサービスに対して簡単かつ安全に支払うことができます。

エンタイトルメントは、StringArray 型の com.apple.developer.in-app-payments キーを使用して定義されます。

<key>com.apple.developer.in-app-payments</key>
<array>
  <string>merchant.your.merchantid</string>
</array>

詳細については、developer.apple.com の「マーチャント ID エンタイトルメント」をご覧ください。

関連するドメイン

関連するドメイン エンタイトルメントでは、Safari へのアクセス、保存されたパスワード、アクティビティの継続など、特定のサービスの特定のドメイン にアプリを関連付けられます。

エンタイトルメントは、StringArray 型の com.apple.developer.associated-domains キーを使用して定義されます。

<key>com.apple.developer.associated-domains</key>
<array>
  <string>webcredentials:example.com</string>
</array>

詳細については、developer.apple.com の「関連付けられた ドメイン エンタイトルメント」をご覧ください。

オートフィル 資格情報プロバイダー

オートフィル 資格情報プロバイダー エンタイトルメントにより、ユーザー アクセス許可を得たアプリは、オートフィル 用のユーザー名とパスワードをアプリと Safari に提供できます。

エンタイトルメントは、Boolean 型の com.apple.developer.authentication-services.autofill-credential-provider キーを使用して定義されます。

<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>

詳細については、developer.apple.com の「オートフィル資格情報プロバイダーのエンタイトルメント」をご覧ください。

ClassKit

ClassKit エンタイトルメントでは、学校が管理する環境で、本の章を読んだり、小テストを受けるなど、割り当てられたアクティビティに関する学生の進捗状況について、教師とプライベートかつ安全に共有できます。

エンタイトルメントは、String 型の com.apple.developer.ClassKit-environment キーを使用して定義されます。

<key>com.apple.developer.ClassKit-environment</key>
<string>development</string>

詳細については、developer.apple.com の「ClassKit 環境のエンタイトルメント」をご覧ください。

ドライバーと通信する

ドライバー エンタイトルメントとの通信により、アプリと DriverKit ドライバーの間の通信が可能になります。

エンタイトルメントは、Boolean 型の com.apple.developer.driverkit.communicates-with-drivers キーを使用して定義されます。

<key>com.apple.developer.driverkit.communicates-with-drivers</key>
<true/>

詳細については、developer.apple.com の「ドライバーとの通信」をご覧ください。

通信通知

通信通知のエンタイトルメントでは、1 人から 1 人または 1 人から複数の人に通信通知を送信できます。

このエンタイトルメントは、Boolean 型の com.apple.developer.usernotifications.communication キーを使用して定義されます。

<key>com.apple.developer.usernotifications.communication</key>
<true/>

詳細については、developer.apple.com の「通知サービス要求のエンタイトルメント」をご覧ください

データ保護

データ保護のエンタイトルメントでは、アプリはサポートされているデバイスで組み込みの暗号化を使用できます。 ファイルを保護対象として指定すると、システムは暗号化された形式でファイルを格納します。

このエンタイトルメントは、String 型の com.apple.developer.default-data-protection キーを使用して定義されます。

<key>com.apple.developer.default-data-protection</key>
<string>NSFileProtectionComplete</string>

詳細については、developer.apple.com の「データ保護のエンタイトルメント」をご覧ください。

拡張仮想アドレス指定

拡張仮想アドレス指定のエンタイトルメントでは、アプリでより多くのアドレス空間を使用できます。

このエンタイトルメントは、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 テスト モードのエンタイトルメントにより、FileProvider 拡張機能がテスト中のシステムの動作をより細かく制御できるテスト モードが有効になります。

このエンタイトルメントは、Boolean 型の com.apple.developer.fileprovider.testing-mode キーを使用して定義されます。

<key>com.apple.developer.fileprovider.testing-mode</key>
<true/>

詳細については、developer.apple.com の「FileProvider テスト モードのエンタイトルメント」をご覧ください。

フォント

フォント エンタイトルメントにより、ユーザーのアクセス許可を持つアプリでカスタム フォントをインストールして使用できます。

このエンタイトルメントは、StringArray 型の 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 エンタイトルメントにより、アプリはクラウドにデータを格納できるため、ユーザーは複数のデバイス間でデータを共有できます。

このエンタイトルメントは、StringArray 型の 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 の「アプリ間オーディオ エンタイトルメント」をご覧ください。

重要

このエンタイトルメントは iOS 13 では非推奨となっており、macOS で iPad アプリを実行する場合は使用できません。

キーチェーン

キーチェーン エンタイトルメントを使用すると、同じチームによって作成された複数のアプリでパスワードを共有できます。

エンタイトルメントは、Array 型の String である 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) タグを読み取ります。

エンタイトルメントは、Array 型の String である 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」をご覧ください。

ネットワーク拡張機能

ネットワーク拡張機能のエンタイトルメントを使用すると、デバイスのネットワーク機能を拡張およびカスタマイズするアプリ拡張機能を作成できます。

エンタイトルメントは、Array 型の String である 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 接続を使用できます。

エンタイトルメントは、StringArray 型の 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 で認証できます。

エンタイトルメントは、Array 型の String である com.apple.developer.applesignin キーを使用して定義されます。

<key>com.apple.developer.applesignin</key>
<array>
  <string>Default</string>
</array>

詳細については、developer.apple.com の「Sign in with 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/>

ウォレット

ウォレットのエンタイトルメントにより、アプリはパス、チケット、ギフト カード、ロイヤルティ カードを管理できます。 さまざまなバー コード形式をサポートしています。

エンタイトルメントは、Array 型の String である 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 のエンタイトルメント」をご覧ください。

ワイヤレス アクセサリの構成

ワイヤレス アクセサリの構成エンタイトルメントでは、ご利用のアプリで WiFi アクセサリを構成できます。

エンタイトルメントは、Boolean 型の com.apple.external-accessory.wireless-configuration キーを使用して定義されます。

<key>com.apple.external-accessory.wireless-configuration</key>
<true/>

詳細については、developer.apple.com の「ワイヤレス アクセサリ構成のエンタイトルメント」をご覧ください。。