web-dev-qa-db-ja.com

再インストール時のidentifierForVendorの変更

identityForVendorはnotアプリの再インストール時に変更されることになっています:

このプロパティの値は、アプリ(または同じベンダーの別のアプリ)がiOSデバイスにインストールされている間は同じままです。ユーザーがそのベンダーのアプリをすべてデバイスから削除し、その後1つ以上のアプリを再インストールすると、値が変化します。 Xcodeを使用してテストビルドをインストールするとき、またはアドホック配布を使用してデバイスにアプリをインストールするときにも、値が変わる可能性があります。したがって、アプリがこのプロパティの値をどこかに保存する場合は、識別子が変更される状況を適切に処理する必要があります。

https://developer.Apple.com/reference/uikit/uidevice/1620059-identifierforvendor

ただし、これはアプリストアのライブアプリの1つでテストしたところです。他の多くのアプリがまだデバイスにインストールされている場合でも、アプリAを再インストールすると、identifierForVendorから返されるUUIDが毎回変更されます。

こんな感じではなかった

これは以前は機能していました。しかし、ある時点で、UUIDは「単純な再インストール」で変更を開始したようです(上記のとおり)。これは既知のバグですか?上記のドキュメントと比較して、identifierForVendorが壊れていることがわかっていますか?回避策はありますか(UUIDをキーチェーンに保存する以外に、そのメソッドはiCloud同期で壊れます)?

15
Jonny

これは既知のバグです。 AppleがAppStoreを更新したため、5月28日頃にidentifierForVendorのこの新しい動作が発生したようです。AppDeveloperフォーラムで検索すると、同じ問題を報告している他の開発者がいます。

Appleの署名gcは、この問題について次の回答で返信しました: "これに関するバグレポートを https://developer.Apple.comに提出してください/ bug-reporting >。この問題を認識しており、調査中です。現時点では、既知の回避策はありません。」

8
user5018489

identifierForVendorは、すべてのベンダーのアプリがデバイスから削除されると変更されると予想されます。また、Xcodeから直接ビルドしてインストールする場合は、必ず変更されます。

このプロパティの値は、アプリ(または同じベンダーの別のアプリ)がiOSデバイスにインストールされている間は同じままです。ユーザーがそのベンダーのアプリをすべてデバイスから削除し、その後1つ以上のアプリを再インストールすると、値が変化します。 Xcodeを使用してテストビルドをインストールするとき、またはアドホック配布を使用してデバイスにアプリをインストールするときにも、値が変わる可能性があります。したがって、アプリがこのプロパティの値をどこかに保存する場合は、識別子が変更される状況を適切に処理する必要があります。

ソース:UIKit/UIDevice/identityForVendor

1
damirstuhec

アプリグループの資格を使用して再送信し、共有NSUserDefaultsを提供します。 App Group NSUserDefaults(keychain-access-groupやiCloud Key-Valueストレージ資格とは異なります)はデバイスで共有されているようですが、iCloudアカウントでは共有されていません。共有の「deviceid」NSUserDefaultキーが存在しない場合は、IdentifierForVendor IDを保存し、保存したらそれをすべてのアプリに使用します。

0
ChiokJarse