iOS 6 でアクセス許可を求めるときに独自のメッセージを表示する : Objective-C プログラミング

PROGRAM


アクセス許可を求めるときに独自のメッセージを表示する

iOS 6.0 以降からは、位置情報や連絡先、カレンダー、リマインダー、写真、Bluetooth 共有、Twitter, Facebook などの情報は、あらかじめユーザーが利用を許可したものに限って、アプリからアクセスできるようになっています。

これらのリソースへのアクセス許可をユーザーに求めるのは、iOS 6.0 SDK のそれぞれの機能に関係するものを使って行うことができますが、このときに表示されるメッセージはとてもシンプルなものになっています。

これだと、アプリによっては何のためにそれにアクセスしようとしているのか、ユーザーに判りにくい場合があります。

たとえば、ナビアプリが「位置情報」へのアクセスを求めていればすぐに察しがつきますが、ナビアプリがもしが「写真」にアクセスしようとしたら、何のために使うのかをユーザーが判断できず、許可してもらえないかもしれません。

 

そんなときは次のようにすることで、判断材料としてもらうための独自メッセージをメッセージボックス内に表示できます。

プライバシー設定の確認画面に詳細説明を追加表示する

許可を求める際に表示するメッセージは、アプリの Info.plist で設定することができます。

たとえば、連絡先へのアクセスを求める場合のメッセージであれば、"Privacy - Contacts Usage Description" (NSContactsUsageDescription) の行を追加して、説明文を String で指定します。

これだけで、アクセス許可を尋ねる画面の中に、ここで設定した補足説明が表示されるようになりました。

もしビルドしても Info.plist に登録したメッセージが表示されなかったり、古いメッセージが表示されるような場合は、言語設定を変更し直したり、アプリを削除してから再転送すると反映される様子です。

そもそもメッセージボックス自体が表示されない場合には、iOS 6 のプライバシー設定をリセットする で記したように、プライバシー設定のリセットが必要な場合もあります。

詳細説明をローカライズする

このようにして表示させたプライバシー設定の詳細説明は、ローカライズすることができます。

Info.plist をローカライズするために使われる文字列テーブルファイル InfoPlist.strings に、各言語での詳細説明を記載します。

ここで指定するキーはそれぞれ次の通りです。

NSCalendarsUsageDescription カレンダー
NSContactsUsageDescription 連絡先
NSLocationUsageDescription 位置情報
NSPhotoLibraryUsageDescription 写真
NSRemindersUsageDescription リマインダー

たとえば連絡先であれば NSContactsUsageDescription を使ってローカライズされた文字列を用意すれば、プライバシー設定のアクセスを求めるメッセージボックスにも、ローカライズされた説明を表示することができました。

[ もどる ]