38

I was wondering if it was possible to find out the UDID of the user's iPhone. Can someone shed some light?

4

10 に答える 10

67

注: Apple は、2013 年 5 月 1 日以降、デバイスの UDID にアクセスするアプリを受け入れなくなります

代わりに、新しいメソッドidentifierForVendorを使用しadvertisingIdentifier、iOS 6 以降でこれにアクセスする必要があります。詳しくはこちらの関連​​記事をご覧ください。


古い方法 (非推奨であり、App Store で拒否される可能性があります)

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];

iOS7 以降、このuniqueIdentifierプロパティは利用できなくなりました。

参照を参照してUIDeviceください。

于 2010-11-24T18:23:45.623 に答える
11

一部の人が言ったように、iOS5 ではこれは廃止されました。

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];

Appleには、デバイスのUUID (Universally Unique Identifier)を取得するための 3 つの API が用意されています。

代替案 1 (NSUUID クラス):

NSString *udid = [[NSUUID UUID] UUIDString];

代替 2 (UIDevice クラス):

NSString *udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

代替案 3 (ASIdentifierManager クラス、AdSupport フレームワークが必要):

NSUUID *UUID = [[ASIdentifierManager sharedManager] advertisingIdentifier];
NSString *udid = [UUID UUIDString];

ただし、それらはすべて英数字であり、典型的なデバイスの一意の識別子は数字のみです。つまり、これら 3 つの API は役に立たず、古い [[UIDevice currentDevice] uniqueIdentifier] は iOS6 でも機能しますが、どのくらいの期間使用できますか?

「非推奨」の警告が気になる場合は、次を追加してください。

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

それが役に立てば幸い!

于 2012-10-14T04:07:12.710 に答える
6

IOS5 以降では、これを使用して UDID を見つけます。

NSString *uuidString = nil;
CFUUIDRef uuid = CFUUIDCreate(NULL);
if (uuid) {
    uuidString = (__bridge NSString *)CFUUIDCreateString(NULL, uuid);
    CFRelease(uuid);
}
NSLog(@"UDID: [%@]", uuidString);
于 2012-10-17T11:39:12.373 に答える
3

identifierForVendor はデバイスに対して一意ではなく、最終的に変更される可能性があることに言及する価値があるかもしれません。

Apple はidentifierForVendorについて次のように述べています。

このプロパティの値は、同じデバイスで実行されている同じベンダーのアプリでも同じです。異なるベンダーから提供された同じデバイス上のアプリと、ベンダーに関係なく異なるデバイス上のアプリでは、異なる値が返されます。

値が nil の場合は、しばらく待ってから再度値を取得してください。これは、たとえば、デバイスが再起動された後、ユーザーがデバイスのロックを解除する前に発生します。

アプリ (または同じベンダーの別のアプリ) が iOS デバイスにインストールされている間、このプロパティの値は変わりません。ユーザーがデバイスからそのベンダーのアプリをすべて削除し、その後それらの 1 つ以上を再インストールすると、値が変わります。この値は、Xcode を使用してテスト ビルドをインストールするとき、またはアドホック ディストリビューションを使用してデバイスにアプリをインストールするときにも変更される可能性があります。したがって、アプリがこのプロパティの値をどこかに保存する場合は、識別子が変更された状況を適切に処理する必要があります。

しかし、さらに悪いことに、この AVG ブログによると、Apple は MAC アドレスを一意の識別子として使用するという最後の手段も削除しているようです。

デバイスを一意に識別したい場合、今何をすべきか - 例えば. ライセンス、設定、またはその他の目的のため??

于 2013-09-27T08:54:05.557 に答える
2

IOS5 以降では、これを使用して UDID を見つけます。

NSString *uuidString = nil;

CFUUIDRef uuid = CFUUIDCreate(NULL); ...

デバイスの一意の ID を取得するのではなく、一意の識別番号を生成する方法を示していると思います。

于 2013-01-11T21:58:22.663 に答える
2

最善の方法は、このようにすることです

NSString *udid = [[[UIDevice currentDevice]identifierForVendor]UUIDString];
于 2014-06-09T16:00:11.357 に答える
1

とても簡単です。Xcode ウィンドウに移動して [デバイス] を選択するか、オーガナイザーで見つけることができます。ここに画像の説明を入力

http://www.raywenderlich.com/2915/ios-code-signing-under-the-hood/organizerudid

于 2015-04-07T05:38:46.593 に答える
1

[OpenUDID] lib https://github.com/ylechelle/OpenUDIDを使用してみませんか?

于 2013-08-07T11:13:36.770 に答える