質問
iOS アプリが iCloud バックアップから別の物理デバイスに復元されたときに UIDevice.current.identifierForVendor がどのように動作するかを理解しようとしています。
コンテクスト
新しく復元されたデバイス上で実行中 (たとえば、ユーザーが iCloud バックアップから新しい iPhone をセットアップした後など) を検出する必要がある iOS アプリを開発しています。
これを行うには、次の値を保存します。
UIDevice.current.identifierForVendor?.uuidString
永続ストレージ (UserDefaults など) に保存し、次回の起動時に比較して、変更されたかどうかを確認します。
質問
アプリをデバイス A にインストールし、その IDForVendor を保存して iCloud にバックアップし、そのバックアップをデバイス B に復元した場合、デバイス B に復元されたアプリには同じ識別子が表示されますか、それとも新しい識別子が表示されますか?
具体的には:
iCloud バックアップまたはデバイス移行では、identifierForVendor 値が保持されますか?
IDFV はベンダー プレフィックス (バンドル ID) のみに関連付けられていますか、それとも物理デバイスのハードウェアにも関連付けられていますか?
ユーザーがそのベンダーからすべてのアプリを削除し、後で再インストールまたは復元した場合はどうなりますか?
ゴール
アプリが別のデバイスに復元されたことを検出するために identifierForVendor を使用することが安全で信頼できるかどうかを知りたいです。たとえば、ユーザーのデバイスが変更されたときにバックエンドで Firebase トークンの更新をトリガーする場合などです。
これまでに見つけたこと
Apple のドキュメントには次のように書かれています。
このプロパティの値は、同じデバイス上で実行されている同じベンダーのアプリでは同じです。ユーザーがデバイスからそのベンダーのアプリをすべて削除し、その後 1 つ以上のアプリを再インストールすると、値が変わる可能性があります。
ただし、これには、iCloud バックアップを別の物理デバイスに復元した後に何が起こるかが明確に記載されていません。
フォーラムで矛盾した結果を見たことがあります。一部の開発者は変更を報告していますが、他の開発者は特定の移行方法では持続する可能性があると述べています。
Tldr;
iCloud を別の物理デバイスに復元した後、UIDevice.current.identifierForVendor は同じままですか、それとも変更されますか?
#swift #iCloud #バックアップと別の #iOS #デバイスでの復元後UIDevice.current.identifierForVendor #は変更されますか