ご承知のとおり、iOS5ではuniqueIdentifier
inは非推奨になりました。UIDevice
私が探しているのは、iOS5と基本的に同じ機能です。
ドキュメントから私が理解していることは、アップルは私たち(開発者)が(CFUUIDCreate
私が推測するように)独自のUUIDを作成し、それをに保存することを望んでいるということですNSUserDefaults
。しかし、これは私を少し震えさせ、まったく救いを感じません。この場合、UUIDがあるのは少し無意味だと感じます。
UUIDが必要な理由は、認証プロセスでUUIDを含む一連の情報をサーバーに送信し、サーバーが次にアプリを起動したときにユーザーが誰であるかを「推測」できる場合は、いくつかの手順をスキップできるようにするためです。または再インストールするか、別のアプリが私のライブラリを実装します。CFUUIDCreate
これで私を助けていないようです。
gekitzもざっと見てみましたが、理解しているように、電話のイーサネット「カード」のMACアドレスのみに基づいています。MACアドレスが変更可能だと漠然と感じているので、これは適切ではありません。uniqueIdentifier
でしUIDevice
た_
さまざまなハードウェアの詳細に基づいて、各デバイスに固有の英数字の文字列。
現在、UUIDを取得するこのコードを作成しました。しかし、XCodeでクリーンアップして電話にアプリを再インストールするとすぐに、新しいUUIDが取得されます。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *UUID = @"";
if (![defaults valueForKey:@"UUID"])
{
CFUUIDRef UUIDRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDSRef = CFUUIDCreateString(kCFAllocatorDefault, UUIDRef);
UUID = [NSString stringWithFormat:@"%@", UUIDSRef];
[defaults setObject:UUID forKey:@"UUID"];
}
else {
UUID = [defaults valueForKey:@"UUID"];
}
[deviceInformation setObject:UUID forKey:@"UUID"];
要約すると、私の質問は次のとおり
です。改ざんが「困難」で、受信者として私に信頼できる信頼できるデバイスを提供するデバイスに基づくUUIDを作成する確実な方法はありますか?これはデバイスに基づく必要はありません。再インストール後も同じである限り、アプリのUUIDとしてアプリに基づくことができます。