iTunes Artwork for 1Password - Password Manager and Secure Wallet

先日、Swiftで書いた自作のログイン画面を1Password対応にする方法を書きました。

せっかくなので、今度はUIWebView、WKWebViewを1Password対応にする手順も書いておきます。

こちらの方が簡単かと思います。

① まず、1PasswordのExtension SDKを以下のページからダウンロードします。↓↓

GitHub - agilebits/onepassword-app-extension: 1Password Extension for iOS Apps

② ダウンロードした中身をプロジェクトにドラッグしてコピーします。↓↓

1Password SDK

③ 1Password Extension SDKはObjective-Cで書かれているため、Swiftのコードで使えるようにするためにBridging-Header.hに以下のヘッダーを追記します。↓↓

#import "OnePasswordExtension.h"

④ UIButtonのactionをfillUsing1Passwordに来るように設定します。

onePasswordBtn.addTarget(self, action: #selector(self.fillUsing1Password(sender:)), for: .touchUpInside)

⑤ 以下のfillUsing1PasswordメソッドをViewControllerに追記します。

@IBAction func fillUsing1Password(sender :AnyObject) -> Void {
        OnePasswordExtension.shared().fillItem(intoWebView: self.webView!, for: self, sender: sender, showOnlyLogins: true, completion: {(success, error) in
            if success == false {
                print(error.debugDescription)
                return
            }
        })
    }

補足: intoWebView: のところで、UIWebViewもしくはWKWebViewを指定ことで使えるようになります。ちなみに、showOnlyLoginsをtrueにすると1Passwordをはじめとした最小限のアイコンボタンのみを表示します。falseにすると、iPhoneに入っている連携可能なアイコンボタンも表示されます。

⑤ Info.plistに「org-appextension-feature-password-management」を追記しておくこともお忘れなく。これがないと連携が許可されないので1Passwordが起動しません。↓↓

info.plistを設定

⑥ ちなみに1Passwordを持っていないデバイスでは連携ボタンを非表示にしたい場合は、以下のコードをUIButtonなどに設定しておくと良いです。(1Password Extension SDKのコードにも書いてありますが)↓↓

onePasswordBtn.isHidden = (false == OnePasswordExtension.shared().isAppExtensionAvailable())

アプリ内ブラウザを持っているアプリはぜひ1Password対応してほしいなぁと。特にTwitterとかFacebookとか。