iOS 10.3 から、アンインストールすると Keychain が削除される → されませんでした

顛末

  1. iOS 10.3 beta でアンインストールすると keychain が削除される問題が発見される
  2. これはバグか?という議論がなされる中、 Apple スタッフから 「これは仕様だ」とコメントが入る
  3. しかし iOS 10.3 beta7 でアンインストールしても keychain から消えない、元の仕様に戻った
  4. iOS 10.3 Public でもアンインストールしても keychain は消えない ← イマココ!

以下 keychain 削除について

nextstep.fm by nextstep.fm on iTunesiOS 10.3 について話されていて、どうやらアプリをアンインストールすると Keychain が削除されるらしい。
これはバグでそうなっている可能性もあるらしく、修正されるかもしれない。
→ 仕様とのこと。
iOS 10.3 beta7 からアンインストールしても消えなくなったとのこと…。

forums.developer.apple.com

友達の友達から聞いた情報によると、 iOS 11 からアンインストールで keychain が消えるらしいが、ググってもそれらしいのは見当たらなかったのでガセかもしれない。
判明したらまた追記します。

動作

  • いままで
    • アプリをアンインストールしても Keychain のログイン情報は残ったまま。
    • つまり再インストールすると前回のログイン情報を引き継ぐ。
      • (再インストール後の初回起動時に Keychain を削除することで引き継がせないアプリもある)
  • これから
    • アプリをアンインストールすると Keychain も消える。
    • 再インストールしても前回のログイン情報を引き継がなくなったため、常に初回起動と同じ動作になる
    • ただし、 keychain が他のアプリと共有されている場合、他のアプリも消さないと keychain は消えない。

バグの可能性

Keychain の変更は iOS 10.3 の仕様に記載されている事項ではなく、今後の 10.3 正式リリース時までに削除される可能性があると話されていた。
まあ beta 版での話なので、杞憂に終わればそれで良い。

コメントで教えていただいた、これは仕様とのこと。
→上記に書いた通り、仕様になったが beta7 からまた元に戻った。

https://forums.developer.apple.com/thread/72271 このスレッドに Apple スタッフからの回答がありましたよ。

This is an intentional change in iOS 10.3 to protect user privacy. Information that can identify a user should not be left on the device after the app that created it has been removed. It has never been a part of the API contract that keychain items created by an app would survive when the app is removed. This has always been an implementation detail. ユーザーのプライバシーを守るための意図的な変更とのことです。

対策

開発者的に何かすることはおそらくないと思う、常に初回起動と同じ挙動になるだけ。(Analytics のトラッキングが正常に動作しない可能性はある?)

ただ、「再インストール」というのを特定するために Keychain を使う必要があったが、それができなくなる。
アプリの再インストールを検出する - Qiita

一応 iOS10.3 以上とそれ以下で実装を気をつけたほうがよさそう。

参考

iOS 10.3 Beta 2 autodeletes keychain items afte... | Apple Developer Forums
iphone - iOS 10.3 beta 3 doesn’t persist data of KeychainItem - Stack Overflow