iOS设备类型(Swift)

这段Swift代码定义了一个DeviceInfo结构体,用于获取iOS设备的型号,包括iPhone、iPod Touch和iPad等。通过设备的machine标识符判断具体的设备类型,并提供了获取系统版本和IDFV的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

//  DeviceInfo.swift

//

//  Created by A on 15/10/12.

//  Copyright © 2015 A. All rights reserved.

//


import Foundation

import SystemConfiguration.CaptiveNetwork


struct DeviceInfo {


    func getDeviceModel() -> String {

        let name = UnsafeMutablePointer<utsname>.alloc(1)

        uname(name)

        let machine = withUnsafePointer(&name.memory.machine, { (ptr) ->String? in

            let int8Ptr = unsafeBitCast(ptr, UnsafePointer<Int8>.self)

            return String.fromCString(int8Ptr)

        })

        name.dealloc(1)

        var deviceType: String = ""

        if let m = machine {

            switch m {

                // iPhones

            case "iPhone1,1":

                deviceType = "iPhone 2G (A1203)"

            case "iPhone1,2":

                deviceType = "iPhone 3G (A1241/A1324)"

            case "iPhone2,1":

                deviceType = "iPhone 3GS (A1303/A1325)"

            case "iPhone3,1":

                deviceType = "iPhone 4 (A1332)"

            case "iPhone3,2":

                deviceType = "iPhone 4 (A1332)"

            case "iPhone3,3":

                deviceType = "iPhone 4 (A1349)"

            case "iPhone4,1":

                deviceType = "iPhone 4S (A1387/A1431)"

            case "iPhone5,1":

                deviceType = "iPhone 5 (A1428)"

            case "iPhone5,2":

                deviceType = "iPhone 5 (A1429/A1442)"

            case "iPhone5,3":

                deviceType = "iPhone 5C (A1456/A1532)"

            case "iPhone5,4":

                deviceType = "iPhone 5C (A1507/A1516/A1526/A1529)"

            case "iPhone6,1":

                deviceType = "iPhone 5C (A1453/A1533)"

            case "iPhone6,2":

                deviceType = "iPhone 5S (A1457/A1518/A1528/A1530)"

            case "iPhone7,1":

                deviceType = "iPhone 6 Plus (A1522/A1524)"

            case "iPhone7,2":

                deviceType = "iPhone 6 (A1549/A1586)"

                

                // iPods

            case "iPod1,1":

                deviceType = "iPod Touch 1G (A1213)"

            case "iPod2,1":

                deviceType = "iPod Touch 2G (A1288)"

            case "iPod3,1":

                deviceType = "iPod Touch 3G (A1318)"

            case "iPod4,1":

                deviceType = "iPod Touch 4G (A1367)"

            case "iPod5,1":

                deviceType = "iPod Touch 5G (A1421/A1509)"

                

                // iPads

            case "iPad1,1":

                deviceType = "iPad 1G (A1219/A1337)"

            case "iPad2,1":

                deviceType = "iPad 2 (A1395)"

            case "iPad2,2":

                deviceType = "iPad 2 (A1396)"

            case "iPad2,3":

                deviceType = "iPad 2 (A1397)"

            case "iPad2,4":

                deviceType = "iPad 2 (A1395+New Chip)"

            case "iPad2,5":

                deviceType = "iPad Mini 1G (A1432)"

            case "iPad2,6":

                deviceType = "iPad Mini 1G (A1454)"

            case "iPad2,7":

                deviceType = "iPad Mini 1G (A1455)"

            case "iPad3,1":

                deviceType = "iPad 3 (A1416)"

            case "iPad3,2":

                deviceType = "iPad 3 (A1403)"

            case "iPad3,3":

                deviceType = "iPad 3 (A1430)"

            case "iPad3,4":

                deviceType = "iPad 4 (A1458)"

            case "iPad3,5":

                deviceType = "iPad 4 (A1459)"

            case "iPad3,6":

                deviceType = "iPad 4 (A1460)"

            case "iPad4,1":

                deviceType = "iPad Air (A1474)"

            case "iPad4,2":

                deviceType = "iPad Air (A1475)"

            case "iPad4,3":

                deviceType = "iPad Air (A1476)"

            case "iPad4,4":

                deviceType = "iPad Mini 2G (A1489)"

            case "iPad4,5":

                deviceType = "iPad Mini 2G (A1490)"

            case "iPad4,6":

                deviceType = "iPad Mini 2G (A1491)"

                

                // Simulators

            case "i386":

                deviceType = "iPhone Simulator 32Bit"

            case "x86_64":

                deviceType = "iPhone Simulator 64Bit"

                

                // 新机器等待更新列表

            default:

                deviceType = "watting to update"

            }

        }

        return deviceType

    }

    

    func getDeviceTypeOn456() -> Int {

        switch getDeviceModel() {

        case"iPhone 4 (A1332)", "iPhone 4 (A1332)","iPhone 4 (A1349)", "iPhone 4S (A1387/A1431)":

            return 4

        case"iPhone 5 (A1428)", "iPhone 5 (A1429/A1442)","iPhone 5C (A1456/A1532)", "iPhone 5C (A1507/A1516/A1526/A1529)",

            "iPhone 5C (A1453/A1533)","iPhone 5S (A1457/A1518/A1528/A1530)":

            return 5

        case"iPhone 6 Plus (A1522/A1524)", "iPhone 6 (A1549/A1586)":

            return 6

        default:

            return 4

        }

    }

    

    func getSystemVersion() -> String {

        return UIDevice.currentDevice().systemVersion

    }

    

    func getIdfv() -> String? {

        return UIDevice.currentDevice().identifierForVendor?.UUIDString

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值