iOS with Swift - 앱에서 디바이스 버전에 따른 분기 처리

버전별 분기처리 #available

현재 버전 가져오기


if(UIDevice.current().systemVersion.hsPrefix("9"){
		//9버전만 사용가능
}
else if(UIDevice.current().systemVersion.hsPrefix("10"){
		//10버전만 사용가능
}

#available 구문으로 버전분기하기


// 마지막 *는 인자값이 끝났다는 의미
if #availavle(iOS 9, OSX 10.10, watchOS 1, *) {
	//IOS 9 , OS X 10.10 , watcchOS 1 만 사용가능
} else {
	// 그외에 버전에서의 처리
}
/* 블루투스 사용 가능한지 확인 */
    @objc
    func checkBleEnable(_ call: CAPPluginCall) {
        //TODO: 블루투스 사용 가능한지 확인 코드 구현
        
        call.resolve([
            "support": false,
            "permission": false,
            "bluetoothOn": false,
        ])
}

/* 블루투스 권한 요청 */
    @objc
    func requestBluetoothPermissions(_ call: CAPPluginCall) {
        //TODO: IOS 블루투스 권한 요청 구현
        call.resolve()
    }

public override func load() {
        //TODO: 격리이탈 클래스 초기화
        //TODO: AmoOmega 클래스 초기화
        //TODO: 컨텍스트 객체 초기화
        //TODO: 노티피케이션 초기화
    }

    /* IOS API Level 확인 */
    @objc
    func getSdkInt(_ call: CAPPluginCall) {
        //TODO: 버전구하는 구현 필요
        let level = 13;
        call.resolve(["sdkInt": level])
    }

    /* Retrofit 설정 (baseUrl, jwt) */
    @objc
    func setRetrofitConfig(_ call: CAPPluginCall) {
        let baseUrl: String = call.getString("BaseUrl") ?? ""
        let jwt: String = call.getString("jwt") ?? ""
        
        //TODO: baseUrl, jwt 로컬 저장, Retrofit interceptor 초기화
        
        call.resolve();
    }

    /* 노티피케이션, Exception 메세지 등 Locale 설정 */
    @objc
    func setLocale(_ call: CAPPluginCall) {
        let localeCode: String = call.getString("localeCode") ?? "";
        //TODO: IOS Locale 설정 코드 구현 필요
        call.resolve();
    }

    /* 격리 주소, 격리 반경 설정 */
    @objc
    func setQuarantineArea(_ call: CAPPluginCall){
        let latitude = call.getDouble("latitude");
        let longitude = call.getDouble("longitude");
        let radius = call.getInt("radius");

        //TODO: 격리 구역 로컬 저장 코드 구현
        call.resolve();
    }

    /* 알람 설정 */
    @objc
    func setAlarm(_ call: CAPPluginCall) {

        //TODO: IOS 백그라운드 반복주기 스레드 구현 필요
      
        call.resolve();
    }

    /* 등록된 알람이 있는지 확인 */
    @objc
    func isAlarmRegistered(_ call: CAPPluginCall) {
        //TODO: IOS 백그라운드 스레드가 동작하고 있는지 확인 코드 구현 필요
        let isRegistered: Bool = false
        call.resolve(["isRegistered": isRegistered])
    }

    /* 위치권한, 블루투스 권한 확인 */
    @objc
    override public func checkPermissions(_ call: CAPPluginCall) {
        let backGroundAccess: Bool = false
        let bluetoothPermissions: Bool = false
        //TODO: 위치권한, 블루투스 권환 확인 구현 필요
        call.resolve(["backGroundAccess": backGroundAccess, "bluetoothPermissions": bluetoothPermissions])
    }

    /* 위치 권한 요청 */
    @objc
    func requestLocationPermissions(_ call: CAPPluginCall) {
        //TODO: IOS 백그라운드 위치권한 요청 구현
        call.resolve()
    }

    /* 블루투스 권한 요청 */
    @objc
    func requestBluetoothPermissions(_ call: CAPPluginCall) {
        //TODO: IOS 블루투스 권한 요청 구현
        call.resolve()
    }

    /* GPS 지원되는지 확인 */
    @objc
    func checkGpsSupport(_ call: CAPPluginCall) {
        //TODO: GPS 지원되는지 확인 코드 구현
        call.resolve()
    }

    /* 블루투스 사용 가능한지 확인 */
    @objc
    func checkBleEnable(_ call: CAPPluginCall) {
        //TODO: 블루투스 사용 가능한지 확인 코드 구현
        
        call.resolve([
            "support": false,
            "permission": false,
            "bluetoothOn": false,
        ])
}