我需要使用C#...
读出IOS设备的IMEI这在C#中是否可行?或者还有另一个我可以使用instad的值吗?
答案 0 :(得分:1)
现在无法从iOS的公共API获取某些设备标识符:
IMSI - 国际移动用户识别码(SIM卡号码)
IMEI - 国际移动设备身份(设备ID)
UDID - Apple iDevices的唯一设备标识符
MAC地址 - 媒体访问控制地址(网络地址)
看看这里: http://studyswift.blogspot.gr/2015/12/asidentifiermanager-get-idfv-vendor.html
如果您可以使用任何提供的ID,则代码在Swift中,但如果您使用C#/ Xamarin,则难以转换。
希望这有帮助
答案 1 :(得分:0)
我也试图找到捕捉IMEI的方法,但我相信这是不可能的。我解决它的唯一方法是使用此代码,它返回序列号
public class IosDevice
{ [的DllImport(" /System/Library/Frameworks/IOKit.framework/IOKit")] private static extern uint IOServiceGetMatchingService(uint masterPort,IntPtr matching);
[DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
private static extern IntPtr IOServiceMatching(string s);
[DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
private static extern IntPtr IORegistryEntryCreateCFProperty(uint entry, IntPtr key, IntPtr allocator, uint options);
[DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
private static extern int IOObjectRelease(uint o);
public string GetIdentifier()
{
string serial = string.Empty;
uint platformExpert = IOServiceGetMatchingService(0, IOServiceMatching("IOPlatformExpertDevice"));
if (platformExpert != 0)
{
NSString key = (NSString)"IOPlatformSerialNumber";
IntPtr serialNumber = IORegistryEntryCreateCFProperty(platformExpert, key.Handle, IntPtr.Zero, 0);
if (serialNumber != IntPtr.Zero)
{
serial = NSString.FromHandle(serialNumber);
}
IOObjectRelease(platformExpert);
}
return serial;
}
}