본문 바로가기

EXPERIENCE/Unity

[Unity/iOS] 아이폰 버전 및 LiDAR 여부 체크하는 플러그인 코드

728x90
728x90

 

 

유니티에서 아이폰 버전을 확인할 수 있는 plugin이 필요했다.

스택플로우의 여러글들을 찾아 아래 코드를 작성할 수 있었다.

내 경우에는 라이다 체크를 위한 코드였으며,

세부 버전을 위한 함수가 필요하다면 내부를 조금 변경하면 될 것 같다

 

 

Script

 

  • DeviceChecker.cs
public class DeviceChecker : MonoBehaviour
{
#if UNITY_IOS
    [DllImport("__Internal")]
    public static extern bool DeviceCheck();
#endif
}

 

  • DeviceChecker.swift
@objc public class DeviceChecker: NSObject {
    @objc public static let shared = DeviceChecker()
    
    @objc public func DeviceCheck() -> Bool {
        var isLidar = true
        // iOS 13.4 이상의 버전일 경우
        if #available(iOS 13.4, *) {
            // 라이더 체크 함수
            let supportLiDAR = ARWorldTrackingConfiguration.supportsSceneReconstruction(.mesh)
            guard supportLiDAR else {
                // 라이더가 없을 경우 false
                isLidar = false
                return isLidar
            }
        }
        else { // iOS 13.4 미만일 경우
            isLidar = false
        }
        return isLidar
    }
}

 

  • DeviceChecker.mm (Object-C)
extern "C" {   
#pragma mark - Functions
    BOOL DeviceCheck() {
        return [[DeviceChecker shared] DeviceCheck];
    }
}

 

  • 프로젝트 추가

1. .cs 파일 위치
프로젝트 폴더 > Assets > Plugins
2. .swift, .mm 파일 위치
프로젝트 폴더 > Assets > Plugins > DeviceChecker

 

 

728x90

 

 

  • 사용 방법
if (DeviceChecker.DeviceCheck()) {
	// LiDAR 존재
} else {
	// LiDAR 없음 또는 iOS 13.4 미만
}

 

 

.cs 파일에 명시한 DeviceCheck() 함수를 사용하면 true 또는 false를 반환 받아 확인할 수 있으며,

특정 버전 확인을 위해서라면 좀 더 세부적인 반환 값을 통해 확인할 수 있을 것으로 생각 된다!

 

 

 

 

 

 

 

728x90
728x90