iPhoneアプリ開発 −iOS6からの「写真」へのアクセス問題−
※結構前の話を今更まとめてみる。
写真へのアクセス周りについて
iOS5まで
写真を扱うときによく使うフレームワーク「AssetsLibrary」。
これを利用している際に、「位置情報サービス」でオンになっている必要がありました。
iOS6から
「位置情報サービス」は「プライバシー」に統合されました。
「AssetsLibrary」を使っても、「位置情報サービス」については問われません。
代わりに「写真」にアクセスする許可のダイアログが表示されるようになりました。
※「AssetsLibrary」を使わなくても、「写真」にアクセスする場合はダイアログが表示されます。
問題点
アプリが「写真」へのアクセスをした際に表示されるダイアログ。
このダイアログで「いいえ」を選択してしまうとアプリが使えなくなってしまいます。
ただし、「写真」へのアクセスなので写真系のアプリでよくあるカメラ起動に関しては、(何も対処をしてなければ)起動してしまいます。
つまり、「カメラ起動」→「写真撮影」→「編集画面」という流れをしたくても編集画面に遷移するところでアクセスがNGになり動かなくなります。
ユーザが間違えて「いいえ」を教えてしまうケースはよくあるかと思います。
そこで、「写真」へのアクセスが不許可にされている際はアラートを表示させてユーザに気づいてもらうようにします。
対応方法
現在の状態を確認し、もし「いいえ」にしていたらアラートを表示させます。
(1)フレームワークの追加
「TARGETS」の「Build Phases」の「Link Binary With Libraries」でAssetsLibrary.frameworkを追加する。
(2)状態の確認
以下のコードで現在の状態が分かります。
ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
状態は以下。
ALAuthorizationStatusNotDetermined
まだ選択していない。
ALAuthorizationStatusRestricted
機能制限(ペアレンタルコントロール)で許可されていない。
参考:iPhone、iPad、iPod touch で機能制限を使う – Apple サポート
ALAuthorizationStatusDenied
「写真」へのアクセスを許可していない。
ALAuthorizationStatusAuthorized
「写真」へのアクセスを許可している。
(3)アラートの表示
そこで「写真」へアクセスする必要がある箇所で状態をチェックします。
if([ALAssetsLibrary respondsToSelector:@selector(authorizationStatus)]) { ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus]; if(status == ALAuthorizationStatusDenied) { //アラート表示 } }
※authorizationStatusはiOS6からであってiOS5では使えないので、respondsToSelectorで使えるかを確認します。
これで、ユーザにアラートを表示させて「写真」へのアクセスを許可するようお願いすることができます。
参考
広告
関連記事
-
iPhoneアプリにGoogle Analyticsを入れてみる -Google Analytics SDK for iOS導入-
* 導入経緯 iPhoneアプリをリリースして、を使って「ランキング」や「ダウンロード数」は適宜チ
-
MySQLのバックアップ手順 -消えたら困るものはバックアップ-
そろそろデータが消えてもらったら困るぐらいになっていたのでバックアップをとることにしました。 とい
-
Selenium2.0でUIテスト(2) -Rubyでやってみよう-
前回は、Selenium + PHPを試しました。 今後はRubyでやってみようということでSele
-
定期的にデータ取得のためにCakePHP1.3でシェル機能を利用
定期的にデータを取得する行為をするために、はじめてシェル機能を使ってみたのでメモ。 * ス
-
iPhoneアプリ開発 -利用するべきサービス-
iPhone(iOS)アプリ開発において使っているサービスを列挙。 この手のサービスがないと、開発中
-
Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法
* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス
-
TwitterAPI 1.1対応で困ったこと −フォロー・フォロワー一覧取得−
TwitterのAPI1.1に2013年の3月15日までには対応しないといけません。
-
jQuery Mobile1.2のPopupを試してみた -写真を表示-
jQuery Mobile1.2の「Popup」を試してみました。 他の機能である「Collaps
-
Facebookがちょっとコワイ vol.2 -本当にあなたはあなたなの?-
以下のブログを読んで、さらにコワイと思ったFacebook。 あなたが登録している「友
-
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –
* やりたいこと macのターミナルでgitをいじっていると -今のブランチってなんだっけ? -g