IOS7でプログラムでデバイスUDIDを取得する方法。[[UIDevice currentDevice] uniqueIdentifier]
私はこのコードを使用しましたこれは廃止されたiOS7です。デバイスのUDIDを取得する方法。アプリを削除して再インストールするとUDID文字列が変化するということは、UDIDが異なっていたことを意味します。
すべてのバージョンで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
}
セキュリティ/プライバシー上の理由により、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;
}
}
Swiftでは、このようなデバイスUUIDを取得できます
let uuid = UIDevice.currentDevice().identifierForVendor.UUIDString
println(uuid)
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のドキュメントを参照してください。
IOS 7では、Appleは、IDのベースとしてMACを明確に阻止するためにMACを照会するときに常に固定値を返すようになりましたスキーム:したがって、実際には -[UIDevice identifierForVendor] を使用するか、インストールごとのUUIDを作成する必要があります。
this SO Question。
In Swift 3.0:
UIDevice.current.identifierForVendor!.uuidString
旧バージョン
UIDevice.currentDevice().identifierForVendor
文字列が必要です:
UIDevice.currentDevice().identifierForVendor!.UUIDString
[〜#〜] uuid [〜#〜] in Swift 3.を取得する場合:
let UUIDValue = UIDevice.current.identifierForVendor!.uuidString
Swift 2.2+ UUIDを取得する適切な方法:
if let UUID = UIDevice.currentDevice().identifierForVendor {
print("UUID: \(UUID.UUIDString)")
}
2つのソリューションがあります。
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];