1. ホーム
  2. ios

[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?

2022-03-19 20:24:59

質問

今、明らかになったことですが UIDevice uniqueIdentifier プロパティは非推奨です。 iOS 5 であり、iOS 7 以降では利用できない。代替の方法やプロパティはないようで、近々公開される予定です。

私たちの既存アプリの多くは、特定のデバイスを一意に識別するためにこのプロパティに強く依存しています。 今後、この問題にどのように対処したらよいでしょうか?

からの提案は 2011年から2012年にかけてのドキュメント でした。

特別な配慮

uniqueIdentifierプロパティは使用しないでください。特定の一意な識別子を作成するには を呼び出すと、アプリの CFUUIDCreate 関数を使用して UUID を作成し を使用してデフォルトのデータベースに保存します。 NSUserDefaults クラスがあります。

ただし、ユーザーがアプリをアンインストールして再インストールした場合、この値は同じにはなりません。

解決方法は?

で作成されたUUIDは CFUUIDCreate は、ユーザーがアプリをアンインストールして再インストールした場合、一意である:あなたは毎回新しいものを取得します。

<ストライク しかし、あなたはそれが ではない つまり、ユーザーがアプリをアンインストールしても、再インストールしても、同じ値である必要があります。デバイスを識別する最も信頼性の高い情報はMACアドレスであるため、これにはちょっとした工夫が必要です。次のような方法があります。 MACを問い合わせる それをUUIDとして使用します。

<ストライク

<ストライク 編集する もちろん、常に同じインターフェースのMACを問い合わせる必要があります。一番いいのは en0 . MACは、たとえインターフェイスがIPを持たず、ダウンしていても、常に存在するのです。

2を編集します。 他の方も指摘されているように、iOS 6 以降で推奨されている解決策は -[UIDevice identifierForVendor] です。 . ほとんどの場合、旧来の -[UIDevice uniqueIdentifier] (しかし、アプリの初回起動時に作成されるUUIDは、Appleが使って欲しいと思っているようです)。

<ストライク 3を編集します。 この重要なポイントは、コメントノイズの中に紛れ込まないようにするためです。 MAC をUUIDとして作成し を使用してハッシュを作成します。 . このハッシュは、再インストールやアプリの種類を問わず、常に同じ結果を作成します(ハッシュが同じ方法で行われた場合)。いずれにせよ、現在(2013年)では、iOS 6.0上で"stable"デバイス識別子が必要な場合を除き、これはもう必要ではありません。

4を編集します。 iOS 7 では、Apple は MAC を問い合わせる際に常に固定値を返すようにし、特に MACをIDのベースとする スキームです。そのため、現在では -[UIDevice identifierForVendor] です。 または、インストールごとのUUIDを作成します。