Permission Scope で写真のパーミッションを再取得する

More than 1 year has passed since last update.

このとき パーミッションをいちど拒否されると再許可してもらうには設定アプリを階層深くまで辿ってもらわねばなりません。

しかし Permission Scope を使うと 再許可までカンタンにナビゲーションできます。

Permission Scope とは

PermissionScope is a Swift framework for intelligently requesting permissions from users.It contains not only a simple UI to request permissions but also a unified permissions API that can tell you the status of any given system permission or easily request them.

パーミッション取得をカンタンにしてくれるのが Permission Scope です。
さまざまなパーミッションを取得するのに統一された API を提供してくれます。

インストールは CocoaPods と Carthage で出来ます。


README を読んでサンプルを書いてみました。
ビューにある imagePickerボタンを押すことで 下記の IBAction を起動しています:

    @IBAction func imagePickerButtonTapped(sender: AnyObject) {
        let permissions = PermissionScope()
        // ダイアログの表示に self(ViewController) を使う
        permissions.viewControllerForAlerts = self
        // 設定アプリ遷移後にパーミッションの設定が変わったときにコールバックされる
        permissions.onAuthChange = { [unowned self] (finished, results) in
            if results[0].status == .Authorized {  //再許可とれた
                self.presentImagePickerController()//ImagePickerController 起動

        switch permissions.statusPhotos() {  // 写真のパーミッションをチェック
        case .Authorized: // すでに写真へのアクセスを許可済みのとき
            presentImagePickerController()   // ImagePickerController 起動
        case .Unknown, .Unauthorized, .Disabled:
        // Unknown: パーミッション未設定, Unauthorized: アクセス拒否, 
        // Disabled: システムレベルで無効
            permissions.requestPhotos()  // 未設定やいちど拒否されたときは
                                         // 再度問い合わせする

requestPhotos メソッドのなかでは いまのパーミッションに応じたダイアログを表示してくれます。
たとえば 写真へのアクセスをいちど拒否したあとで再取得するときは"写真へのアクセスを拒否したけど どうする?"的な感じです:

Simulator Screen Shot 2015.12.02 20.32.23.png


今回は試していませんが、Camera と Notification など複数のパーミッションの組み合わせを取得したいときは いい感じにパーミッションを取得してくれるようです:

Simulator Screen Shot 2015.12.02 20.33.13.png

UI のカスタマイズもいろいろできるとのことです。


Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.