Appleが特定したこのセキュリティ違反にパッチを当てようとしています。のみ、それらが提供するサンプルコード(VerificationController)は次の行を使用します。
[UIDevice currentDevice].uniqueIdentifier
これは非推奨になり、アプリがアプリストアから拒否されました。これが再び大丈夫かどうか何か考えはありますか?またはここで何が起こっているのですか?
Appleが特定したこのセキュリティ違反にパッチを当てようとしています。のみ、それらが提供するサンプルコード(VerificationController)は次の行を使用します。
[UIDevice currentDevice].uniqueIdentifier
これは非推奨になり、アプリがアプリストアから拒否されました。これが再び大丈夫かどうか何か考えはありますか?またはここで何が起こっているのですか?
Appleは、UDIDが使用されていた行を削除するサンプルコードを更新しました。
私の理解では、Appleは、UDID(一意のデバイス識別子)がアプリのサンドボックス内にないため、開発者がUDID(一意のデバイス識別子)にアクセスすることを望んでいません。
ユーザーが(異なるUDIDを持つ)新しいiOSデバイスを入手する状況を考えてみてください。新しいデバイスがあるからといって、必ずしも新しいユーザーがいるとは限りません。また、誰かが以前に他の誰かによって使用されていたデバイスを入手した場合、同じデバイスを使用しているため、同じユーザーがそのデバイスを使用している必要があるとは考えたくありません。
代わりに、アプリにUUID(ユニバーサル一意識別子)を使用することをお勧めします。Appleが以前にUDIDの使用を許可した唯一の理由は、UUIDをまだ実装していないか、上記の状況を考慮していなかったためです(私の理解では)。UUIDは、追跡するオブジェクト(ユーザーなど)に対して生成されます。
基本的に、 Appleの考え方は、デバイスではなく、ユーザー(または他のインスタンス)を追跡する必要があるということです。
UUIDを生成するには、クラスメソッドとして以下を含めてみてください。
+ (NSString *)GetUUID
{
CFUUIDRef uuidReference = CFUUIDCreate(kCFAllocatorDefault);
NSString *theUUID = [(NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuidReference) autorelease];
CFRelease(uuidReference);
return theUUID;
}
私の経験では、このメソッドをメソッドで呼び出し、作成したばかりのインスタンスのプロパティとしてinit
結果を保存しました。NSString
使用したためにアプリが拒否されたとどこで聞きましたか?悪意を持って使用していたのかもしれませんが、これはパブリックAPIです。 また、リンク先のページのメモもご覧ください。
注:このリストでは、パブリックAPIではないシンボルkSecTrustInfoExtendedValidationKeyおよびSecTrustCopyInfoを使用しています。アプリは、この特定の目的でそれらを使用することが許可されています。
彼らがこの目的のためにプライベートAPIを使用することを喜んで許可するのであれば、パブリックAPIを気にすることはないと思います。
AppleのUDIDに関する問題は、常にそれを個人情報と見なしていることでした。そのため、最初に許可を求めずに、たとえばサーバーにUDIDを送信したアプリを拒否していました。ローカルで使用しているだけなら、問題ないと思います。