Unity

모바일 앱/게임 제작 시 필요한 Unity 권한 선언 종류

sungmin08 2025. 5. 28. 19:11

Unity에서 모바일 앱/게임 제작 시 네크워크, 카메라, 저장소 접근 등

특정 작업을 하기 위해선 Manifest에 선언하는 작업을 해야한다.

 

✅ 1. INTERNET

📌 Manifest 선언

<uses-permission android:name="android.permission.INTERNET" />

 

🧠 설명

Firebase, REST API, UnityWebRequest 등 모든 네트워크 통신에 필수 권한이야.
권한 요청 UI 없이 자동 적용됨.

 

💻 Unity 코드 예시

using UnityEngine.Networking;

IEnumerator SendData()
{
    UnityWebRequest request = UnityWebRequest.Get("https://api.example.com/data");
    yield return request.SendWebRequest();

    if (request.result == UnityWebRequest.Result.Success)
    {
        Debug.Log("받은 데이터: " + request.downloadHandler.text);
    }
    else
    {
        Debug.LogError("오류: " + request.error);
    }
}

 

✅ 2. ACCESS_NETWORK_STATE

📌 Manifest 선언

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

🧠 설명

기기가 인터넷에 연결되었는지 확인할 때 필요. 예: 자동 로그인, 알림 전송 시 체크.

 

💻 Unity 코드 예시

if (Application.internetReachability == NetworkReachability.NotReachable)
{
    Debug.Log("인터넷 연결 안 됨");
}
else
{
    Debug.Log("인터넷 연결 가능");
}

✅ 3. READ_EXTERNAL_STORAGE (Android 10 이하)

📌 Manifest 선언

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 

🧠 설명

갤러리에서 이미지 가져오기, 외부 저장소의 파일을 읽을 때 필요.
Android 11 이상은 Scoped Storage 방식으로 변경되어 별도 접근 필요.

 

💻 Unity 코드 예시 (갤러리 이미지 불러오기)

NativeGallery.GetImageFromGallery((path) =>
{
    if (!string.IsNullOrEmpty(path))
    {
        Texture2D tex = new Texture2D(2, 2);
        tex.LoadImage(File.ReadAllBytes(path));
        // UI 적용
    }
});

 

✅ 4. CAMERA

📌 Manifest 선언

<uses-permission android:name="android.permission.CAMERA" />

 

🧠 설명

AR 앱, 얼굴 인식, QR 코드 스캔 등에서 카메라 직접 접근 시 필요.
Unity AR Foundation, OpenCV 등에서도 필요함.

 

💻 Unity 코드 예시 (AR 카메라)

 
if (!Permission.HasUserAuthorizedPermission("android.permission.CAMERA"))
{
    Permission.RequestUserPermission("android.permission.CAMERA");
}
Unity에서는 Android 6.0 이상에서 사용자 동의 필요함

✅ 5. POST_NOTIFICATIONS (Android 13 이상)

📌 Manifest 선언

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

 

🧠 설명

Android 13부터 푸시 알림 권한은 사용자 동의가 필요해짐.
Firebase Cloud Messaging(FCM)을 사용하는 경우 반드시 필요.

 

💻 Unity 코드 예시

#if UNITY_ANDROID && !UNITY_EDITOR if (!Permission.HasUserAuthorizedPermission("android.permission.POST_NOTIFICATIONS")) { Permission.RequestUserPermission("android.permission.POST_NOTIFICATIONS"); } #endif

 

✅ 6. ACCESS_FINE_LOCATION

📌 Manifest 선언

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

 

🧠 설명

GPS 기반으로 사용자 위치를 가져올 때 필요.
AR 위치 기반 앱, 위치 기반 알림 등에 사용.

 

💻 Unity 코드 예시

IEnumerator StartLocation()
{
    if (!Input.location.isEnabledByUser)
    {
        Debug.Log("위치 서비스 꺼져 있음");
        yield break;
    }

    Input.location.Start();

    int maxWait = 10;
    while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
    {
        yield return new WaitForSeconds(1);
        maxWait--;
    }

    if (Input.location.status == LocationServiceStatus.Running)
    {
        Debug.Log("위도: " + Input.location.lastData.latitude);
    }
    else
    {
        Debug.Log("위치 서비스 사용 불가");
    }

    Input.location.Stop();
}

 

✅ 7. RECORD_AUDIO

📌 Manifest 선언

<uses-permission android:name="android.permission.RECORD_AUDIO" />

 

🧠 설명

음성 인식, 마이크 녹음 기능 사용 시 필요.
예: 캐릭터 음성 입력, 인터뷰 저장 등.

 

💻 Unity 코드 예시

 
if (Microphone.devices.Length > 0) { AudioClip audio = Microphone.Start(null, true, 10, 44100); Debug.Log("녹음 시작됨"); }

 

 

 

✅ 요약

 

권한 기능 Manifest 선언 사용자 요청 필요?
INTERNET 인터넷 통신
ACCESS_NETWORK_STATE 네트워크 상태 확인
READ_EXTERNAL_STORAGE 이미지 불러오기
CAMERA 카메라 사용
POST_NOTIFICATIONS 알림 표시 ✅ (Android 13+)
ACCESS_FINE_LOCATION 위치 정보
RECORD_AUDIO 마이크 녹음

 

 

✅ 예외: 사용자에게 권한 요청이 필요한 것들

아래 권한은 Android 6.0 (API 23) 이상부터는 **사용자 동의(Permission.RequestUserPermission)**가 필요하다.
그리하여 Unity 내에서 명시적으로 요청해야 작동함.

 

* 사용자에게 어떤 권한을 허용할지 안 할지 팝업을 띄우는 코드
if (!Permission.HasUserAuthorizedPermission("android.permission.CAMERA"))
{
    Permission.RequestUserPermission("android.permission.CAMERA");
}

 

'Unity' 카테고리의 다른 글

Unity 로딩씬 구현하기  (0) 2025.04.14
Unity 자동슬라이드 Text 구현하기  (0) 2025.04.14
Unity 출석체크 시스템 구현하기  (2) 2025.04.08
Unity 푸시 알람 기능 구현  (0) 2025.03.31
오클루전 컬링  (0) 2024.10.26