如何使用 C# 从 IOS 设备获取 IMEI
How to get IMEI from IOS device using C#
我需要使用 C# 读取 IOS 设备的 IMEI...
这在 C#/Xamarin 中是否可行?
或者我可以使用其他值来识别设备吗?
现在无法从 iOS 的 public API 获取某些设备标识符:
IMSI - 国际移动用户身份(SIM 卡号码)
IMEI - 国际移动设备识别码(设备 ID)
UDID - Apple iDevices 的唯一设备标识符
MAC 地址 - 媒体访问控制地址(网络地址)
看这里:
http://studyswift.blogspot.gr/2015/12/asidentifiermanager-get-idfv-vendor.html
如果您可以使用任何提供的 ID,代码在 Swift 中,但如果您使用 C#/Xamarin,则转换起来并不困难。
希望对您有所帮助
我也试图找到一种方法来获取 IMEI,但我认为这是不可能的。我解决它的唯一方法是使用此代码,它 returns 序列号
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;
}
}
我需要使用 C# 读取 IOS 设备的 IMEI...
这在 C#/Xamarin 中是否可行? 或者我可以使用其他值来识别设备吗?
现在无法从 iOS 的 public API 获取某些设备标识符:
IMSI - 国际移动用户身份(SIM 卡号码)
IMEI - 国际移动设备识别码(设备 ID)
UDID - Apple iDevices 的唯一设备标识符
MAC 地址 - 媒体访问控制地址(网络地址)
看这里: http://studyswift.blogspot.gr/2015/12/asidentifiermanager-get-idfv-vendor.html
如果您可以使用任何提供的 ID,代码在 Swift 中,但如果您使用 C#/Xamarin,则转换起来并不困难。
希望对您有所帮助
我也试图找到一种方法来获取 IMEI,但我认为这是不可能的。我解决它的唯一方法是使用此代码,它 returns 序列号
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;
}
}