Xamarin.iOS での権利の使用
権利は特殊なアプリの機能およびセキュリティのアクセス許可であり、これらを使用するように正しく構成されたアプリケーションに付与されます。
iOS では、アプリはサンドボックスで実行されます。このサンドボックスでは、アプリケーションと特定のシステム リソースまたはユーザー データ間のアクセスを制限する一連の規則が提供されます。 権利は、アプリに追加機能を提供するためにシステムでサンドボックスを拡張することを要求する場合に使用されます。
アプリの機能を拡張するには、アプリの Entitlements.plist ファイルで権利を指定する必要があります。 特定の機能のみを拡張することができ、これらの機能については、「機能の使用」ガイドにリストされており、以下で説明します。 権利はキー/値ペアとしてシステムに渡され、通常は機能ごとに 1 つだけ必要になります。 特定のキーと値については、このガイドの後述の「権利キー参照」で説明します。 Visual Studio for Mac と Visual Studio では、Entitlements.plist エディターを介して Xamarin.iOS アプリで権利を追加するためのわかりやすいインターフェイスが提供されます。 このガイドでは、Entitlements.plist エディターおよびその使用方法を紹介します。 また、機能ごとに iOS プロジェクトに追加可能なすべての権利の参照も提供します。
権利とプロビジョニング
Entitlements.plist ファイルは権利の指定と、アプリケーション バンドルへの署名の際に使用されます。
ただし、アプリが正しくコード署名されていることを確認するには、追加のプロビジョニングがいくつか必要になります。 使用するプロビジョニング プロファイルに、必要な機能が有効になっているアプリ ID を含める必要があります。 これを行う方法については、「機能の使用」ガイドを参照してください。
重要
Entitlements.plist ファイルは、機能を使用してアプリケーションに適切なプロパティを入力する際に役立ちますが、Apple 開発者アカウントにリンクされていないため、プロビジョニング プロファイルを生成することはできません。 そのため、アプリケーションを展開して配布するには、開発者ポータルを使用してプロビジョニング プロファイルを生成する必要があります。
Xamarin.iOS プロジェクトで権利を設定する
アプリ ID を定義する際に必要なアプリケーション サービスを選択して構成するだけでなく、権利を Xamarin.iOS プロジェクトで構成する必要もあります。その場合は、Info.plist ファイルと Entitlements.plist ファイルを編集します。
Visual Studio for Mac で権利を構成するには、次の操作を行います。
Solution Pad で、Info.plist ファイルをダブルクリックして開きします。
[ID] セクションで、アプリケーションの名前を入力し、アプリ ID が定義されたときに作成されたバンドル ID を入力します。
変更内容を Info.plist ファイルに保存します。
Solution Pad で、Entitlements.plist ファイルをダブルクリックして開き、編集します。
Xamarin.iOS アプリケーションに必要な権利を選択して構成し、アプリ ID が作成されたときに定義された設定と一致するようにします。
変更内容を Entitlements.plist ファイルに保存します。
新しい Entitlements.plist ファイルの追加
権利は、Entitlements.plist ファイルを介してアプリに追加されます。 このファイルは、既定で Xamarin.iOS プロジェクトに含まれますが、古いプロジェクトには存在しない可能性があります。
Xamarin.iOS に Entitlements.plist ファイルを追加するには、次の操作を行います。
プロジェクト ファイルを右クリックし、[追加] > [新しいファイル] の順に参照します。
[新しいファイル] ダイアログで、[iOS] > [プロパティ一覧] の順に選択し、Entitlements という名前を付けます:
権利キー参照
Entitlements.plist エディターの [ソース] パネルを使用して、権利キーを追加することができます。 必要なキーは通常、Entitlements.plist エディターを使用する際に追加されますが、参考までに以下にリストします。
ウォレット
説明: 正式には Passbook として知られるウォレットは、パスを格納して管理するアプリです。 これらのパスには、クレジット カード、ストア カード、搭乗券、チケットなどがあります。
- パスの種類の識別子
- キー: com.apple.developer.pass-type-identifiers
- 文字列:
$(TeamIdentifierPrefix)*
- パスの種類の識別子
注:
- これにより、アプリはすべてのパスの種類を許可できるようになります。 アプリを制限し、チームのパスの種類のサブセットのみを許可するには、文字列値を
$(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)
に設定します。
この pass.$(CFBundleIdentifier) は、ここで作成されたパス ID です。
- これにより、アプリはすべてのパスの種類を許可できるようになります。 アプリを制限し、チームのパスの種類のサブセットのみを許可するには、文字列値を
iCloud
説明: iCloud は、iOS ユーザーに自分のコンテンツを格納し、デバイス間で共有するための便利で簡単な方法を提供します。 開発者が iCloud を使用して、ユーザーにストレージの手段を提供できる方法は 4 つあります。つまり、Key-Value ストレージ、UIDocument ストレージ、CoreData、および CloudKit を直接使用して個別のファイルとディレクトリにストレージを提供できます。 これらの詳細については、iCloud の概要に関するガイドを参照してください。
- iCloud ドキュメントと CloudKit
- キー: com.apple.developer.ubiquity-container-identifiers
- 文字列:
$(TeamIdentifierPrefix)$(CFBundleIdentifier)
- iCloud KeyValue ストレージ
- キー: com.apple.developer.ubiquity-kvstore-identifier
- 文字列:
$(TeamIdentifierPrefix)$(CFBundleIdentifier)
- iCloud ドキュメントと CloudKit
注:
$(TeamIdentifierPrefix)
文字列を見つけるには、developer.apple.com にログインし、[メンバー センター] > [あなたのアカウント] > [開発者アカウントの概要] の順に移動して、チーム ID (または開発者の個別の ID) を取得します。 これは 10 桁の文字列 (A93A5CM278 など) になります。$(CFBundleIdentifier)
文字列はiCloud
で始まり、iCloud コンテナーは「機能の使用」ガイドの手順に従って作成されるときに設定されます。- $
(TeamIdentifierPrefix)
および$(CFBundleIdentifier)
プレースホルダーを使用することができ、ビルド時に適切な値に置き換えられます。
重要
Apple からは、開発者が欧州連合の一般データ保護規則 (GDPR) を適切に処理するためのツールが提供されています。
アプリ グループ
説明: アプリ グループを使用すると、さまざまなアプリケーション (またはアプリケーションとその拡張機能) から共有ファイルの保存場所にアクセスできます。
- キー: com.apple.security.application-groups
- 文字列: group.$(CFBundleIdentifier)
Apple Pay
- 説明: Apple Pay を使用すると、ユーザーは自分の iOS デバイスから物理的な商品の支払いができます。
- キー: com.apple.developer.in-app-payments
- 文字列: merchant.your.mechantid
プッシュ通知
- キー: aps-environment
- 文字列:
development
またはproduction
Siri
- 説明: SiriKit を使用すると、iOS アプリは、アプリ拡張機能と新しい Intents および Intents UI フレームワークを使用して、iOS デバイス上のマップ アプリと Siri にアクセス可能なサービスを提供できます。 詳細については、SiriKit の概要に関するガイドを参照してください。
- キー: com.apple.developer.siri
個人の VPN
- キー: com.apple.developer.networking.vpn.api
- 文字列: allow-vpn
キーチェーンの共有
- 説明: キーチェーンの共有を使用すると、アプリ開発者は、デバイス キーチェーンに格納されているパスワードを、同じチームによって開発された他のアプリと共有できます。 文字列にキーチェーン アクセス グループ識別子を渡すことで、アクセスを制限することができます。
- キー: keychain-access-groups
- 文字列: $(AppIdentifierPrefix) $(CFBundleIdentifier)
Inter-App オーディオ
- 説明: Inter-App オーディオを使用すると、開発者はアプリ間でオーディオをストリーミングできます。
- キー: inter-app-audio
- ブール値: YES
関連するドメイン
- 説明: ユニバーサル リンクとして処理する必要がある関連付けられているドメインは、この権利と共に渡す必要があります。 ユニバーサル リンクを実装することで、アプリと Web サイト間にディープ リンクを設定できます。 アプリでサポートされる各ドメインにエントリを指定する必要があり、各エントリは
applinks:
で始まる必要があります。- キー: com.apple.developer.associated-domains
- 文字列: webcredentials:example.com
データ保護
- 説明: データの保護を有効にする場合は、組み込みの暗号化ハードウェアを使用して、暗号化された形式でアプリで使用される機密データを格納します。 既定では、保護レベルは完全な保護に設定されます (デバイスのロックが解除されたときにのみ、ファイルにアクセスできます)。
- キー: com.apple.developer.default-data-protection
- 文字列: NSFileProtectionComplete
HomeKit
- 説明: HomeKit フレームワークでは、サポートされているホーム オートメーション デバイス (iOS デバイスのものすべて) を設定、構成、および管理するためのプラットフォームが提供されます。 HomeKit の使用の詳細については、HomeKit の概要に関するガイドを参照してください。
- キー: com.apple.developer.homekit
- ブール値: YES
HealthKit
- 説明: HealthKit は iOS 8 で導入されたフレームワークです。正常性に関する情報のための集中型の調整されたセキュア データ ストアを提供します。 HealthKit の使用の詳細については、HealthKit の概要に関するガイドを参照してください。
- キー: com.apple.developer.healthkit
- ブール値: YES
Wireless Accessory Configuration
- 説明: Wireless Accessory Configuration を使用すると、アプリケーションで MFi Wi-Fi アクセサリを構成できます。
- キー: com.apple.external-accessory.wireless-configuration
- ブール値: YES
ClassKit
- 説明: ClassKit を使用すると、教師はアプリで割り当てられた活動に対する学生の進捗状況を表示できます。
- キー: com.apple.developer.ClassKit-environment
- 文字列:
development
またはproduction
まとめ
このガイドでは、権利について説明し、Visual Studio for Mac と Visual Studio での権利の使用方法について紹介しました。 また、機能ごとにキー/値ペアの参照も提供しました。