ar이나 vr 게임 만들때


카메라 같은거 허용받으려고 permission 사용을 하잖아요


if (!Permission.HasUserAuthorizedPermission(Permission.Camera))

        {

            //카메라 권한을 요청합니다.

            Permission.RequestUserPermission(Permission.Camera);

        }


그래서 이런식으로 간단하게 만들었었는데


생각해보니 거절시엔 게임이 꺼지게 하고싶어서


좀 조악하게 짰었는데


private bool cameraPermissionRequested = false;

private void OnEnable()

{

    if (!Permission.HasUserAuthorizedPermission(Permission.Camera))

    {

        // 권한 요청 중인지 확인

        if (!cameraPermissionRequested)

        {

            // 권한 요청

            Permission.RequestUserPermission(Permission.Camera);

            cameraPermissionRequested = true;

        }

    }

}


private void Update()

{

    // 권한이 허용되지 않은 경우

    if (!Permission.HasUserAuthorizedPermission(Permission.Camera))

    {

        // 권한 요청 중인지 확인

        if (cameraPermissionRequested)

        {

            // 권한 요청 중인 상태에서 애플리케이션 종료 시도

            Application.Quit();

        }

    }

}


이런식으로 짜니


빌드&런 하니깐 권한 창만 달랑 올라오고 종료는 되버려서


어플리케이션은 꺼져서 폰 바탕화면만 보이더라구요


XR, AR 오리진을 써도 거부하면 아무 효과 없는게 같아서 Unity Docs를 뒤져서 찾아봤는데


using UnityEngine;

using UnityEngine.Android;


public class RequestPermissionScript : MonoBehaviour

{

    internal void PermissionCallbacks_PermissionDeniedAndDontAskAgain(string permissionName)

    {

        Debug.Log($"{permissionName} PermissionDeniedAndDontAskAgain");

    }

    internal void PermissionCallbacks_PermissionGranted(string permissionName)

    {

        Debug.Log($"{permissionName} PermissionCallbacks_PermissionGranted");

    }

    internal void PermissionCallbacks_PermissionDenied(string permissionName)

    {

        Debug.Log($"{permissionName} PermissionCallbacks_PermissionDenied");

    }


    void Start()

    {

        if (Permission.HasUserAuthorizedPermission(Permission.Microphone))

        {

            // The user authorized use of the microphone.

        }

        else

        {

            bool useCallbacks = false;

            if (!useCallbacks)

            {

                // We do not have permission to use the microphone.

                // Ask for permission or proceed without the functionality enabled.

                Permission.RequestUserPermission(Permission.Microphone);

            }

            else

            {

                var callbacks = new PermissionCallbacks();

                callbacks.PermissionDenied += PermissionCallbacks_PermissionDenied;

                callbacks.PermissionGranted += PermissionCallbacks_PermissionGranted;

                callbacks.PermissionDeniedAndDontAskAgain += PermissionCallbacks_PermissionDeniedAndDontAskAgain;

                Permission.RequestUserPermission(Permission.Microphone, callbacks);

            }

        }

    }

}


이런 예시가 있어서


콜백함수를 사용하는 방식으로 한번 해봤습니다.


그러나 결과는 똑같이


거부를 눌러도 아무 문제 없이 게임이 계속 실행이 되서요


혹시 모바일 게임에서 권한 거부하면 어플리케이션이 꺼지는거같은


기능 구현해보신적있으신분들 도움 부탁드립니다.