ユーザーの国によって動作が異なるアプリケーションを開発する必要があります。ユーザーがフランスにいる場合、いくつかの機能を利用できるとしましょう。ただし、ユーザーがインド出身の場合は、別の機能セットにアクセスできます。
言語ベースの制限のみであれば、NSLocale クラス メソッドを使用して機能を切り替えることができます。しかし、ライセンスと法的な理由により、私の機能は実際にはユーザーの国に依存しています。
この状況に対処するためのベスト プラクティスは何ですか?
ユーザーの国によって動作が異なるアプリケーションを開発する必要があります。ユーザーがフランスにいる場合、いくつかの機能を利用できるとしましょう。ただし、ユーザーがインド出身の場合は、別の機能セットにアクセスできます。
言語ベースの制限のみであれば、NSLocale クラス メソッドを使用して機能を切り替えることができます。しかし、ライセンスと法的な理由により、私の機能は実際にはユーザーの国に依存しています。
この状況に対処するためのベスト プラクティスは何ですか?
サードパーティのアプリは、デバイスのユーザーに関する情報や iTunes アカウントへのアクセスにはまったくアクセスできません。ユーザーの本当の国を知る方法はありません。いつでも、デバイスが 1 人の人物に関連付けられていない場合もあります。たとえば、iPod touch では、ユーザーがどの iTunes アカウントにもログインしていない場合があります。同じデバイスが最終的に複数の異なるアカウントの 1 つにログインする可能性があります。
アクセスできるのは、ユーザーの現在の GPS 位置 (ユーザーがアプリにその情報へのアクセスを許可している場合) または現在のロケールだけです。
基本的に、必要なことを行う方法はありません。もちろん、ユーザーにプロンプトを表示することはできますが、明らかにこの情報を確認する方法はありません。
市場固有のライセンスまたは法的な問題により特定の要件がある市場ごとに、iTunes Connect で個別のアプリを作成し、関連する市場でのみダウンロードできるようにすることができます。また、必要に応じて、市場固有の EULA を提供することもできます。これはメンテナンスの負担が大きくなりますが、特定の市場のユーザーのみがアプリにアクセスできるようになります。
XCode では、さまざまな構成 (XCode はこれを「ターゲット」と呼びます) からビルドされたプロジェクトの複数のバージョンをかなり簡単にビルド、デプロイ、および公開できるため、関連するいくつかのプリプロセッサ定義を追加するだけで、単一のコードベースでこれを実現できます。ターゲット定義と、#ifdef
差別化されたロジックが必要な場所にコードを配置します。