如何使用 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;
        }
    }