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);
}
}
}
}
이런 예시가 있어서
콜백함수를 사용하는 방식으로 한번 해봤습니다.
그러나 결과는 똑같이
거부를 눌러도 아무 문제 없이 게임이 계속 실행이 되서요
혹시 모바일 게임에서 권한 거부하면 어플리케이션이 꺼지는거같은
기능 구현해보신적있으신분들 도움 부탁드립니다.
아..보기 힘들다. 개행집어넣어서 다시 글을 쓰는게 좋지 않을까?
새로올렸습니다 ㅠ
Permission.RequestUserPermission가 자동으로 대기 걸어줌?? 그냥 코루틴으로 만드셈
start() -> 퍼미션 체크 진행. 권한 ㅇ -> 계속 진행. 권한 x -> 코루틴 하나 실행 -> 권한 허용할가요? 물어보기 -> ㅇㅇ 하면 진행. -> ㄴㄴ 하면 종료