繁体   English   中英

在iOS 8 +中获取UDID

[英]Get UDID in iOS 8 +

我需要在我的iOS应用程序中使用我的iPhone的UDID。

有关我的应用的一些信息:

  • 我的应用程序不是为了公众而且永远不会进入商店 ,所以我可以使用任何第三方库。 它只会被一些员工在工作中使用。

  • 当我的应用程序正在运行时,我的设备将始终插入Mac。

我看待它的方式,只有两种方法可以实现。

  1. 使用第三方库在我的iOS应用程序中获取UDID。
  2. 由于iPhone在我的应用程序运行时将始终插入Mac,如何通过Mac获取UDID并以某种方式将其传输到iPhone中的应用程序。

任何想法,将不胜感激。 谢谢。

编辑:问题是,你知道任何第三方库或更好的方法让我的应用程序在运行时自动获取iPhone的UDID吗?

编辑2:我知道这可以通过我的手机完成,因为这个网络应用程序: http//get.udid.io/

这是如何运作的?

如果您正在尝试读取UDID以在Mac上自动执行某些操作,那么您可以使用类似system_profiler SPUSBDataType来获取UDID,对于我的手机,可以使用以下条目:

          Product ID: 0x12a8
          Vendor ID: 0x05ac  (Apple Inc.)
          Version: 7.01
          Serial Number: 7bed*********************************33
          Speed: Up to 480 Mb/sec
          Manufacturer: Apple Inc.
          Location ID: 0x1d110000 / 6
          Current Available (mA): 500
          Current Required (mA): 500
          Extra Operating Current (mA): 1600

Serial NumberUDID (我已经主演了,因为我是愚蠢的偏执狂)。

请注意,如果没有UDID您可能永远不会将应用程序放到手机上。

你可以在mac上运行一个小的守护进程,读取这些信息并创建一个bonjour服务,为请求者提供信息 - 这是一个SMOP。

这很简单。 转到Xcode窗口并选择设备,或者您可以在管理器中找到它。 在此输入图像描述

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

从在线快速浏览看,您可以使用名为libMobileGestalt.dylib的私有框架。

链接库并导入标题后,您应该可以执行以下操作( 参考 ):

CFStringRef value = MGCopyAnswer(kMGUniqueDeviceID);
NSLog(@"Value: %@", value);
CFRelease(value);

在我的Mac上,我可以在这里找到特定的dylib:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libMobileGestalt.dylib

在ios 9中使用此代码

NSUUID *tempUUID = [[UIDevice currentDevice] identifierForVendor];
NSString *stringForUDID =  [tempUUID UUIDString];
NSCharacterSet *notAllowedChars = [[NSCharacterSet characterSetWithCharactersInString:@"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"] invertedSet];
NSString *resultString = [[stringForUDID componentsSeparatedByCharactersInSet:notAllowedChars] componentsJoinedByString:@""];
NSLog(@"Final string %@", resultString);

是github项目,似乎对您的要求是正确的

这是有效的代码

#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>
#import <liblockdown.h>
#include <stdio.h>

...
    LockdownConnectionRef connection = lockdown_connect();

    CFStringRef udid = (CFStringRef)lockdown_copy_value(connection, NULL, kLockdownUniqueDeviceIDKey);
    CFShow(udid);

    lockdown_disconnect(connection);

使用此: [[[UIDevice currentDevice] identifierForVendor] UUIDString];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM