jarinosuke blog

about software engineering, mostly about iOS

JRNPrivacyChecker をつくりました

iOS のプライバシー設定

写真、現在地情報、カレンダーなどユーザ個人の情報をアプリ内で使用したい場合が多々あります。 これらの個人情報には iOS 6 より全体的に(一部は iOS 4.2 から)プライバシー制限がかかり、ユーザの許可無しに利用することができなくなりました。 これらの許可をユーザに要求するには、それらの情報を利用する機能を使用する時に勝手にアラートを表示してくれます。

プライバシー設定の確認

現状のユーザのプライバシー設定を知るためには、それらの機能を含むフレームワークを用いて確認します。

電話帳だったら AddressBook.framework の

ABAddressBookGetAuthorizationStatus()

写真だったら AssetsLibrary.framework の

[ALAssetsLibrary authorizationStatus];

だったりとそれぞれのフレームワークに設定状況を確認するための API が散らばっているため、僕は分かり辛いと感じていました。

JRNPrivacyChecker

そのような問題を解決するために、 JRNPrivacyChecker はプライバシー設定状況を確認するための統一的なインターフェースを提供します。 https://github.com/jarinosuke/JRNPrivacyChecker

使い方

例えば写真のプライバシー設定を確認するためには以下のコードを書くだけです。

[[JRNPrivacyChecker defaultChecker] photoAccessAuthorization];

もし上記の返り値である authorisation status を用いたアクション(設定変更を促すアラート表示など)を行いたい場合は、以下のようにして blocks として引数に渡してあげることもできます。

[[JRNPrivacyChecker defaultChecker] checkPhotoAccess:^(ALAuthorizationStatus authorizationStatus) {
    //handle authorizationStatus
}];

インストール方法

CocoaPods に登録したので、pod install してください。 嫌な方は JRNPrivacyChecker フォルダ以下の JRNPrivacyChecker.h と JRNPrivacyChecker.m をプロジェクトに追加して下さい。

今後の実装予定

現状はプライバシー設定の確認しかできませんが、プライバシー設定の要求に関しても1クラスから一元的に出来た方が便利だと思うので実装したいと思っています。JRNPrivacyChecker 内に実装するかは分かりませんが。 また iOS 7 のリリースに合わせて新たに追加されるプライバシー設定の確認を実装します。