この記事は2018年07月08日に投稿しました。
目次
[改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)
- 作者: WINGSプロジェクト片渕彼富,山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2018/03/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
1. はじめに
PWEditorで設定値の保存/取得は、Keychainを利用して行なっています。
Keychainはセキュアで便利ですが、アプリを削除してもKeychainに設定した値は削除されません。
このことが問題になるケースが発生しました。
PWEditorでアプリロックのパスワードをKeychainに保存していますが、パスワードを忘れてしまった場合、アプリを再インストールしても復帰できません。
そのためアプリの再インストール時にアプリロックパスワードをクリアする方法を調べました。
2. アプリの再インストールの検出方法
Keychainだけではアプリの再インストールの検出ができないため、NSUserDefaultsを利用します。
NSUserDefaultsもKeychain同様、設定値の保存/取得が行なえます。
Keychainとの違いは、NSUserDefaultsはアプリの削除で設定値も削除されます。
そのためこの性質を利用して、アプリの再インストールを検出します。
以下がアプリの再インストールを検出する手順です。
前提としてKeychain、NSUserDefaultsで検出判定用のキーを決め、設定値をYES/NOとします。
- Keychain、NSUserDefaultsから検出判定用キーの値を読み込みます。この仕組みを導入直後は値は設定されていないため、この場合は設定値はNOとします。
- Keychain、NSUserDefaultsの検出判定用キーの値にYESを設定します。
この手順を行うと、以下の操作によってKeychain、NSUserDefaultsの値は以下のように変化します。
No | 操作 | Keychain | NSUserDefaults |
---|---|---|---|
1 | インストール後の初回起動 | NO | NO |
2 | インストール後に2回以上起動 | YES | YES |
3 | 再インストール後の初回起動 | YES | NO |
4 | 再インストール後に2回以上起動 | YES | YES |
5 | 再々インストール後の初回起動 | YES | NO |
6 | 再々インストール後に2回以上起動 | YES | YES |
7 | この仕組みを導入後、アプリのアップデート後の起動 | NO | NO |
この表をみると、No.3、5のアプリの再インストール、再々インストールで、KeychainとNSUserDefaultsに差異があることがわかります。
この差異を利用してアプリの再インストールを検出します。
注意点としては、No4、6の再インストール後、または再々インストール後に2回以上起動すると、Keychain、NSUserDefaultsに差異がなくなります。
そのため2回以上起動した状態では、アプリの再インストールは検出できなくなります。
3. おわりに
PWEditorでアプリロック機能を実装して公開した時、アプリロックパスワードを忘れた場合にアプリロック機能をクリアできない状態でした。
一応設定画面に注意書きをしたのですが、アプリロックパスワードを忘れたユーザから、クリアする方法について問い合わせがきてしまいました。
そのためアプリの再インストールでアプリロック機能をクリアするように修正しました。
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp
たった2日でマスターできる iOSアプリ開発集中講座 Xcode 9/Swift 4対応
- 作者: 藤治仁,小林加奈子,小林由憲
- 出版社/メーカー: ソシム
- 発売日: 2017/11/30
- メディア: 単行本
- この商品を含むブログを見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688