MDM 가이드 (IOS)
어드민 페이지 앱 등록
앱 관리
어드민 -> 시스템관리 -> 모바일 -> 앱 관리 https://chamomile.lotteinnovate.com/test/mob/
앱 등록
등록 완료
API
앱 정보 API 호출
API (GET) https://chamomile.lotteinnovate.com/mobile-app-test/mobile/\(앱아이디)/info?osType=ios ex) appID: chamomileapp
결과 값
디바이스 체크 여부
"deviceCheck" 가 true 일 경우, MDM을 대상 기기
기기등록 API 호출
API (POST) https://chamomile.lotteinnovate.com/mobile-app-test/mobile/\(앱아이디)/device ex) appID: chamomileapp
결과값(등록, 업데이트)
기기 등록 이후 프로세스
헤더
이후 API 사용시 헤더에 deviceID와 appID를 추가한 상태로 호출한다.(EX)
쿠키
WKWebView 로드시 쿠키에 삽입한다.
Device 정보
Device ID, Version, Type
Device ID
static func getDeviceId() -> String {
let keychain = Keychain(service: "kr.lay.HybridApp")
var result = [String: Any]()
guard keychain["UUID"] != nil else {
do {
try keychain
.accessibility(.afterFirstUnlock)
.set(UUID().uuidString, key: "UUID")
} catch let error {
print("error: \(error)")
}
let uuid = keychain["UUID"]!
return uuid
}
let uuid = keychain["UUID"]!
return uuid
}
Device Name
extension UIDevice {
var modelName: String {
var systemInfo = utsname()
uname(&systemInfo)
let modelCode = withUnsafePointer(to: &systemInfo.machine.0) { ptr in
return String(cString: ptr)
}
let modelMap : [String: String] = [
// iPhone
"iPhone3,1" : "iPhone 4",
"iPhone3,2" : "iPhone 4",
"iPhone3,3" : "iPhone 4",
"iPhone4,1" : "iPhone 4s",
"iPhone5,1" : "iPhone 5",
"iPhone5,2" : "iPhone 5",
"iPhone5,3" : "iPhone 5c",
"iPhone5,4" : "iPhone 5c",
"iPhone6,1" : "iPhone 5s",
"iPhone6,2" : "iPhone 5s",
"iPhone7,2" : "iPhone 6",
"iPhone7,1" : "iPhone 6 Plus",
"iPhone8,1" : "iPhone 6s",
"iPhone8,2" : "iPhone 6s Plus",
"iPhone8,4" : "iPhone SE",
"iPhone9,1" : "iPhone 7",
"iPhone9,3" : "iPhone 7",
"iPhone9,2" : "iPhone 7 Plus",
"iPhone9,4" : "iPhone 7 Plus",
"iPhone10,1": "iPhone 8",
"iPhone10,4": "iPhone 8",
"iPhone10,2": "iPhone 8 Plus",
"iPhone10,5": "iPhone 8 Plus",
"iPhone10,3": "iPhone X",
"iPhone10,6": "iPhone X",
"iPhone11,2": "iPhone XS",
"iPhone11,4": "iPhone XS Max",
"iPhone11,6": "iPhone XS Max",
"iPhone11,8": "iPhone XR",
"iPhone12,1": "iPhone 11",
"iPhone12,3": "iPhone 11 Pro",
"iPhone12,5": "iPhone 11 Pro Max",
"iPhone12,8": "iPhone SE (2nd generation)",
"iPhone13,1": "iPhone 12 mini",
"iPhone13,2": "iPhone 12",
"iPhone13,3": "iPhone 12 Pro",
"iPhone13,4": "iPhone 12 Pro Max",
"iPhone14,4": "iPhone 13 mini",
"iPhone14,5": "iPhone 13",
"iPhone14,2": "iPhone 13 Pro",
"iPhone14,3": "iPhone 13 Pro Max",
"iPhone14,6": "iPhone SE (3rd generation)",
"iPhone14,7": "iPhone 14",
"iPhone14,8": "iPhone 14 Plus",
"iPhone15,2": "iPhone 14 Pro",
"iPhone15,3": "iPhone 14 Pro Max",
"iPhone15,4": "iPhone 15",
"iPhone15,5": "iPhone 15 Plus",
"iPhone16,1": "iPhone 15 Pro",
"iPhone16,2": "iPhone 15 Pro Max",
// iPad
"iPad1,1": "iPad 1",
"iPad2,1": "iPad 2 (WiFi)",
"iPad2,2": "iPad 2",
"iPad2,3": "iPad 2 (CDMA)",
"iPad2,4": "iPad 2",
"iPad2,5": "iPad Mini 1",
"iPad2,6": "iPad Mini 1",
"iPad2,7": "iPad Mini 1",
"iPad3,1": "iPad 3 (WiFi)",
"iPad3,2": "iPad 3 (CDMA)",
"iPad3,3": "iPad 3",
"iPad3,4": "iPad 4 (WiFi)",
"iPad3,5": "iPad 4",
"iPad3,6": "iPad 4 (CDMA)",
"iPad4,1": "iPad Air (WiFi)",
"iPad4,2": "iPad Air (Cellular)",
"iPad4,3": "iPad Air",
"iPad4,4": "iPad Mini 2 (WiFi)",
"iPad4,5": "iPad Mini 2 (Cellular)",
"iPad4,6": "iPad Mini 2",
"iPad4,7": "iPad Mini 3",
"iPad4,8": "iPad Mini 3",
"iPad4,9": "iPad Mini 3",
"iPad5,1": "iPad Mini 4 (WiFi)",
"iPad5,2": "iPad Mini 4 (Cellular)",
"iPad5,3": "iPad Air 2",
"iPad5,4": "iPad Air 2",
"iPad6,3": "iPad Pro 9.7",
"iPad6,4": "iPad Pro 9.7",
"iPad6,7": "iPad Pro 12.9",
"iPad6,8": "iPad Pro 12.9",
"iPad6,11": "iPad 5 (WiFi)",
"iPad6,12": "iPad 5 (Cellular)",
"iPad7,1": "iPad Pro 12.9 (2nd generation) (WiFi)",
"iPad7,2": "iPad Pro 12.9 (2nd generation) (Cellular)",
"iPad7,3": "iPad Pro 10.5 (WiFi)",
"iPad7,4": "iPad Pro 10.5 (Cellular)",
"iPad7,5": "iPad 6 (WiFi)",
"iPad7,6": "iPad 6 (Cellular)",
"iPad7,11": "iPad 7 (WiFi)",
"iPad7,12": "iPad 7 (Cellular)",
"iPad8,1": "iPad Pro 11 (WiFi)",
"iPad8,2": "iPad Pro 11 (WiFi, 1TB)",
"iPad8,3": "iPad Pro 11 (WiFi, Cellular)",
"iPad8,4": "iPad Pro 11 (WiFi, Cellular, 1TB)",
"iPad8,5": "iPad Pro 12.9 (3rd generation) (WiFi)",
"iPad8,6": "iPad Pro 12.9 (3rd generation) (WiFi, 1TB)",
"iPad8,7": "iPad Pro 12.9 (3rd generation) (WiFi, Cellular)",
"iPad8,8": "iPad Pro 12.9 (3rd generation) (WiFi, Cellular, 1TB)",
"iPad11,1": "iPad Mini 5 (WiFi)",
"iPad11,2": "iPad Mini 5 (WiFi, Cellular)",
"iPad11,3": "iPad Air 3 (WiFi)",
"iPad11,4": "iPad Air 3 (WiFi, Cellular)",
"iPad11,6": "iPad 8 (WiFi)",
"iPad11,7": "iPad 8 (WiFi, Cellular)",
"iPad12,1": "iPad 9 (WiFi)",
"iPad12,2": "iPad 9 (WiFi, Cellular)",
"iPad14,1": "iPad Mini 6 (WiFi)",
"iPad14,2": "iPad Mini 6 (WiFi, Cellular)",
"iPad13,1": "iPad Air 4 (WiFi)",
"iPad13,2": "iPad Air 4 (WiFi, Cellular)",
"iPad13,4": "iPad Pro 11 (4th generation) (WiFi)",
"iPad13,5": "iPad Pro 11 (4th generation) (WiFi, Cellular)",
"iPad13,6": "iPad Pro 11 (4th generation) (WiFi)",
"iPad13,7": "iPad Pro 11 (4th generation) (WiFi, Cellular)",
"iPad13,8": "iPad Pro 12.9 (5th generation) (WiFi)",
"iPad13,9": "iPad Pro 12.9"
]
return modelMap[modelCode] ?? modelCode
}
}
OS 버전
static func getOsVersion() -> String {
return UIDevice.current.systemVersion
}
Devie Type
static func getDeviceType() -> String {
if UIDevice.current.userInterfaceIdiom == .phone {
return "iPhone"
} else if UIDevice.current.userInterfaceIdiom == .pad {
return "iPad"
} else {
return "Mac"
}
}
Last modified: 21 4월 2025