web-dev-qa-db-ja.com

iOS7でプログラムでデバイスUDIDを取得する方法は?

IOS7でプログラムでデバイスUDIDを取得する方法。[[UIDevice currentDevice] uniqueIdentifier]私はこのコードを使用しましたこれは廃止されたiOS7です。デバイスのUDIDを取得する方法。アプリを削除して再インストールするとUDID文字列が変化するということは、UDIDが異なっていたことを意味します。

26
iSara

すべてのバージョンで100%動作します

Apple use ASIdentifierManager Class Reference が推奨するその他の最良のオプション

ios7-app-backward-compatible-with-ios5-regarding-unique-identifier

このリンクは、カスタムフレームワークの処理方法と使用方法を説明しています

idevice-uniqueidentifier-property-is-deprecated-what-now

iOS 9

NSUUID *uuid = [[NSUUID alloc]initWithUUIDString:@"20B0DDE7-6087-4607-842A-E97C72E4D522"];
NSLog(@"%@",uuid);
NSLog(@"%@",[uuid UUIDString]);

または

iOS 6.0以降のみをサポートします

使用するコード[[[UIDevice currentDevice] identifierForVendor] UUIDString];

NSUUID *deviceId;
#if TARGET_IPHONE_SIMULATOR
deviceId = [NSUUID initWithUUIDString:@"UUID-STRING-VALUE"];
#else
deviceId = [UIDevice currentDevice].identifierForVendor;
#endif

のように使用するiOS 5

 if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
    // This is will run if it is iOS6
    return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} else {
   // This is will run before iOS6 and you can use openUDID or other 
   // method to generate an identifier
}
34
codercat

セキュリティ/プライバシー上の理由により、UDIDはiOS 6以降では使用できなくなりました。代わりに、identifierForVendorまたはadvertisingIdentifierを使用してください。

this リンクをご覧ください。

   NSString* uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+
   NSLog(@"UDID:: %@", uniqueIdentifier);

IOS 8以降の更新

+ (NSString *)deviceUUID
{
    if([[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]])
        return [[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]];

    @autoreleasepool {

        CFUUIDRef uuidReference = CFUUIDCreate(nil);
        CFStringRef stringReference = CFUUIDCreateString(nil, uuidReference);
        NSString *uuidString = (__bridge NSString *)(stringReference);
        [[NSUserDefaults standardUserDefaults] setObject:uuidString forKey:[[NSBundle mainBundle] bundleIdentifier]];
        [[NSUserDefaults standardUserDefaults] synchronize];
        CFRelease(uuidReference);
        CFRelease(stringReference);
        return uuidString;
    }
}
19
Tapas Pal

Swiftでは、このようなデバイスUUIDを取得できます

let uuid = UIDevice.currentDevice().identifierForVendor.UUIDString
println(uuid)
6
jcpennypincher

IdentifierForVendorまたはAdvertisingIdentifierを使用します。

identifierForVendor:

An alphanumeric string that uniquely identifies a device to the app’s vendor. (read-only)

The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.

advertisingIdentifier:

An alphanumeric string unique to each device, used only for serving advertisements. (read-only)

Unlike the identifierForVendor property of UIDevice, the same value is returned to all vendors. This identifier may change—for example, if the user erases the device—so you should not cache it.

また、identifierForVendorおよびadvertisingIdentifierに関するAppleのドキュメントを参照してください。

2
Warrior

IOS 7では、Appleは、IDのベースとしてMACを明確に阻止するためにMACを照会するときに常に固定値を返すようになりましたスキーム:したがって、実際には -[UIDevice identifierForVendor] を使用するか、インストールごとのUUIDを作成する必要があります。

this SO Question。

1
Toseef Khilji

In Swift 3.0:

UIDevice.current.identifierForVendor!.uuidString

旧バージョン

UIDevice.currentDevice().identifierForVendor

文字列が必要です:

UIDevice.currentDevice().identifierForVendor!.UUIDString
1
Amul4608

[〜#〜] uuid [〜#〜] in Swift 3.を取得する場合:

let UUIDValue = UIDevice.current.identifierForVendor!.uuidString
0
Brahmaiah Thota

Swift 2.2+ UUIDを取得する適切な方法:

if let UUID = UIDevice.currentDevice().identifierForVendor {
  print("UUID: \(UUID.UUIDString)")
}
0
muhasturk

2つのソリューションがあります。

  • その後、identifierForVendorを使用してキーチェーンに保存し、後で使用できます。アプリを再インストールしてもキーチェーンの値は変わらないためです。
  • 試すことができます OpenUDID
0
Trinh Tran

DIDを取得する場合:(これを使用している場合、App Storeを使用している人は許可されません->私の懸念によると)

- (NSString *)udid
{
void *gestalt = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY);
CFStringRef (*MGCopyAnswer)(CFStringRef) = (CFStringRef (*)(CFStringRef))(dlsym(gestalt, "MGCopyAnswer"));
return CFBridgingRelease(MGCopyAnswer(CFSTR("UniqueDeviceID")));
}

 **Entitlements:**
 <key>com.Apple.private.MobileGestalt.AllowedProtectedKeys</key>
   <array>
<string>UniqueDeviceID</string>
</array>

IDの取得用

    self.uuidTxtFldRef.text = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
0
Mannam Brahmam