2015-11-03 24 views
7

Có rất nhiều giải pháp để tìm hiểu ứng dụng nào đang chạy trên thiết bị đang chạy.Cách lấy loại Iphone từ trình mô phỏng (IOS)

iOS: How to determine the current iPhone/device model in Swift?

Nhưng chạy trong mô phỏng, chúng tôi chỉ có thể phát hiện rằng nó là giả, nhưng không phải những gì loại mô phỏng (iphone5,6,6s vv)

Làm sao chúng ta có thể kiểm tra logic khác nhau tùy thuộc vào devicetype với giả lập? Hoặc làm thế nào tôi có thể phát hiện thiết bị nào được mô phỏng trong mã?

Trả lời

12

Dựa trên câu trả lời tôi thấy herehere, tôi đã viết ít chức năng Swift này dành cho bạn:

func getPlatformNSString() { 
    #if (arch(i386) || arch(x86_64)) && os(iOS) 
     let DEVICE_IS_SIMULATOR = true 
    #else 
     let DEVICE_IS_SIMULATOR = false 
    #endif 

    var machineSwiftString : String = "" 

    if DEVICE_IS_SIMULATOR == true 
    { 
     // this neat trick is found at http://kelan.io/2015/easier-getenv-in-swift/ 
     if let dir = NSProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] { 
      machineSwiftString = dir 
     } 
    } else { 
     var size : size_t = 0 
     sysctlbyname("hw.machine", nil, &size, nil, 0) 
     var machine = [CChar](count: Int(size), repeatedValue: 0) 
     sysctlbyname("hw.machine", &machine, &size, nil, 0) 
     machineSwiftString = String.fromCString(machine)! 
    } 

    print("machine is \(machineSwiftString)") 
} 

Tôi nhận được một kết quả của "iPhone8,2", mà chuyển đến một chiếc iPhone 6 + , đó là những gì giả lập của tôi được thiết lập.

There's open source code available that you can use that would convert strings like "iPhone8,2" to the proper iPhone model name.

Và nếu bạn muốn loại bỏ cảnh báo trình biên dịch để sử dụng phép thuật "DEVICE_IS_SIMULATOR", here's a better solution in the form of a class.

+0

Cảm ơn bạn rất nhiều vì đã giúp đỡ. –

Các vấn đề liên quan