12

私が取り組んでいるプロジェクトでは、iPhoneまたはiPadに2つ(または3つ)の一意の識別子を要求しています。私は知っています、私は知っています... UDIDで十分なはずですが、使用できる他の一意の識別子があるかどうかを確認しようとしています。

IOKit.frameworkを使用して電話からIMEI、シリアル番号、MACアドレスなどを取得できますが、これはAppleによって嫌われているようで、このフレームワークを使用しているアプリはすべて拒否されます。

誰かが他のアイデア、または私が見逃している使用可能な識別子を持っていますか?

ありがとう!

4

6 に答える 6

3

アップル より:

アプリ (または同じベンダーの別のアプリ) が iOS デバイスにインストールされている間、このプロパティの値は変わりません。ユーザーがデバイスからそのベンダーのアプリをすべて削除し、その後それらの 1 つ以上を再インストールすると、値 が変わります。

したがって[UIDevice identifierForVendor]、ユーザーがアプリを削除して再インストールした場合、ID は異なります (したがって、実際の物理デバイスの追跡は行われません)。

なぜあなたは使わないのですSecureUDIDか?

NSString *domain = @"com.example.app";
NSString *key = @"mykey";
NSString *udid = [SecureUDID UDIDForDomain:domain usingKey:key];

これにより、ユーザーがアプリを削除して再インストールしても、UDID は同じになります。これにより、一貫した追跡 (または UDID でやりたいこと) が得られます。ところで、上記はまだAppleから許可されています。楽しむ。

于 2014-05-25T07:14:14.603 に答える
3

ICCID と IMSI (存在する場合) を取得できます。

NSString *commcenter = @"/private/var/wireless/Library/Preferences/com.apple.commcenter.plist";
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:commcenter];
NSString *ICCID = [dict valueForKey:@"ICCID"];
NSString *IMSI = [dict valueForKey:@"IMSI"];

私はそれがあなたが得る限りだと思います。ユニバーサル ID を取得するための他のオプションがわかりません。

UPDATE 2013-03-13: ほぼ 2 年前にこの回答を書いて以来、これはおそらく変更されています。現時点でiOSのバージョンが何であったかさえ覚えていません。また、@joshis がコメントで正しく指摘したように、「AppStore レビュー ガイドラインで指定されているように、アプリはアプリケーション サンドボックスの外部からデータを読み取るため、合法的にこれを行うことはできません。したがって、拒否されます...」.

于 2011-04-08T21:26:29.127 に答える
1

UDID を取得する方法は非推奨です。CFUUIDCreate必要に応じて複数の識別子を取得するために複数回使用できると思われる方法を使用する必要があります。

于 2012-02-01T10:31:17.843 に答える