プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

Swiftでアプリの再インストールを検出する。

この記事は2018年07月08日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. アプリの再インストールの検出方法
  3. おわりに

[改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

[改訂新版]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とします。

  1. Keychain、NSUserDefaultsから検出判定用キーの値を読み込みます。この仕組みを導入直後は値は設定されていないため、この場合は設定値はNOとします。
  2. 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対応

たった2日でマスターできる iOSアプリ開発集中講座 Xcode 9/Swift 4対応

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ