4

uniqueIdentifier が非推奨になる前は、アプリを削除したり、iPhone を消去したりしても、同じ識別子を使用するのが適切でした。その後、MACアドレスを使用し、iOS 7より前でも機能していましたが、iOS 7では2c:00:00:00:00:00になります。そのため、一意の識別子を取得する方法がありません。IdentifierForVender を使用する場合: 同じベンダーのすべてのアプリを削除すると、別の識別子が与えられます。

MAC アドレス : 正常に動作しますが、iOS 7 では動作しません。

UniqueIdentifier : 非推奨。

アプリの削除やiPhoneの消去(工場出荷時の復元など)でも独自の値を取得する方法を教えてください

4

5 に答える 5

4

編集3

UUID をキーチェーンに保存することは、これに対する次の一般的な解決策のようです。これにより、iOS7 の問題が解決する場合があります。


編集2

注: iOS 7 では uniqueIdentifier が使用できなくなったため、このソリューションは iOS 7 では役に立ちません。


ここでは、すべての可能性とさまざまな ID メンテナンスについて説明します。

ここに画像の説明を入力

詳細については、このリンクを参照してください。


編集1

これは古いアプローチですが、システムがリセットされてもIDを保持する必要がある場合. それならこれを見ればいい。これはあなたを助けるかもしれません。

この人気のあるリンクで見てほしい

1) MAC+CFBundleIdentifierのMD5

[[UIDevice currentDevice] uniqueDeviceIdentifier]

これはアプリごとに同じですが、アプリごとに異なります。アプリを削除して再インストールすると、アプリごとに同じになります。システムをリセットすると、アプリごとに同じになります。

2) MACのMD5

[[UIDevice currentDevice] uniqueGlobalDeviceIdentifier]

これは、同じデバイスのすべてのアプリで同じままです。アプリを削除して再インストールすると、デバイスごとに同じになります。システムをリセットすると、デバイスごとに同じになります。

于 2013-11-15T07:32:31.667 に答える
2

これを実現する唯一の方法は、自分でランダム ID (UUID など) を生成し、iOS キーチェーンに保存することです。

アプリをアンインストールしてもキーチェーンはクリアされないため、再インストール後も値を読み取ることができるはずです。

他のより単純な永続 ID メカニズムは、Apple によってブロックまたは禁止されています。

于 2013-11-15T07:40:25.547 に答える
1

identifierForVendor はアプリケーションがデバイスから削除されるまで一意であるため、そのために identifierForVendor を使用できます。アプリケーションがデバイスに再度インストールされると、identifierForVendor が変更されます。

一意性のために、identifierForVendor をデバイス キーチェーンに保存し、次にアプリケーションをデバイスにインストールするときに、identifierForVendor がすでにデバイス キーチェーンに保存されていることを確認します。

「はい」の場合は、保存された identifierForVendor を使用します。それ以外の場合は、新しい identifierForVendor をデバイスのキーチェーンに保存して、後で使用できるようにします。

-(void)checkAndSetDefaultKeychainsOfAppAndSetSecurityStatus
{
 KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] init];
 if (![wrapper searchKeychainCopyMatching:@"DeviceId"]) {
    [wrapper createKeychainValue:[UIDevice currentDevice].identifierForVendor.UUIDString forIdentifier:@"DeviceId"];
}
 self.strDeviceid = [wrapper getDataFromKeychainMatching:@"DeviceId"];
 NSLog(@"%@",self.strDeviceid);
 [ラッパーリリース];
}

-(NSString *)stringforDeviceId
{
 KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] init];
 if (![wrapper searchKeychainCopyMatching:@"
    [wrapper createKeychainValue:[UIDevice currentDevice].identifierForVendor.UUIDString forIdentifier:@"DeviceId"];
 }
 return [wrapper getDataFromKeychainMatching:@"DeviceId"];
}

ご不明な点がございましたらお知らせください。クリアできたらもっと嬉しいです。

于 2014-02-18T05:57:15.040 に答える
-2

私は答えを見つけました。iPhoneを削除または消去しても同じになる一意のIDが必要でした。デバイスのシリアル番号を使用して、常に一意の値を取得できるようにします。

カテゴリがありUIDeviceます。

于 2013-11-19T13:44:15.800 に答える