List
AR 카메라 사용시 승인 안한 경우. 이슈.
Posted Date: 2024-03-19 2:14     Edited Date: 2024-04-05 4:59     Writer: teiwoong

Please provide your development details as below;

1. SDK Version: 6.1.1
2. Development Environment: Unity-Android, Unity-iOS
3. Tracker/Scanner:
4. License Type(Free / Pro-One Time Fee / Pro-Subscription / Enterprise): Free
5. Target Device(Optional):

We can assist better if you attach screenshots of issues.

안녕하세요.

앱 실행하면서 카메라 승인 여부가 뜨는데, 승인 "거부"를 하면 다시 시스템 팝업이 떠서 괜찮습니다.

그런데, "거부 및 다시 묻지 않음"를 하게 됐을때 이슈가 좀 있습니다.

UI 팝업을 띄워서 클릭을 하려고 하는데, 내부적으로 SDK에서 무한 루프에 빠져서 그런데 UI쪽 버전이 전혀 동작하지 않습니다.

코루틴으로 소스는 실행이 되긴 하는데, UI에서 클릭시 설정으로 보내려고 하는데요. 이에 대한 해결 방법이 있을까요?

답변 부탁 드립니다. 감사합니다.

 

Posted Date: 2024-03-22 4:58     Edited Date: 2024-03-22 4:58     Writer: ecjeong

안녕하세요.

맥스트 AR SDK에 대한 의견을 보내주셔서 감사합니다.

문의하신 내용은 콜백 함수를 지정하여 무한 루프를 임시로 막을 수 있습니다.

 

"Assets/MaxstAR/Script/Wrapper/CameraDevice.cs” 의 Start 함수에서,


        if (!Permission.HasUserAuthorizedPermission(Permission.Camera))
        {
            Permission.RequestUserPermission(Permission.Camera);
        }

 

의 코드에 다음과 같은 내용을 추가하십시오.


        if (!Permission.HasUserAuthorizedPermission(Permission.Camera))
        {
            var callbacks = new PermissionCallbacks();
            callbacks.PermissionDenied += OnPermissionDenied;

            Permission.RequestUserPermission(Permission.Camera, callbacks);
        }
 

이후 CameraDevice.cs 에 다음과 같은 함수를 추가하여 승인 거부 시 설정으로 이동할 수 있도록 코드를 작성하시면 됩니다.

       private void OnPermissionDenied(string permissionName)
       {
           Debug.Log($"{permissionName} Permission Denied");
           // 설정으로 유도하는 UI 추가
       }

 

앞으로 더욱 편리하게 MAXST AR SDK를 사용할 수 있도록 노력하겠습니다.

감사합니다.

MAXST AR SDK Support Team 드림

Posted Date: 2024-03-25 1:07     Edited Date: 2024-03-25 1:07     Writer: teiwoong

안녕하세요. 

위에 방법으로 해봤는데요. 무한루프로 계속 호출되는 현상은 없어지지 않습니다.

로그를 보면, Native 코드에서 계속 체크를 하고 있는듯 합니다.

추가로 알려주신 부분에서는 Android에서만 실행되는 코드네요.

추가해 봤지만, 호출도 안되는듯 합니다.

        public ResultCode Start()
        {
#if PLATFORM_ANDROID
#if UNITY_2018_3_OR_NEWER
            if (!Permission.HasUserAuthorizedPermission(Permission.Camera))
            {
                var callbacks = new PermissionCallbacks();
                callbacks.PermissionDenied += OnPermissionDenied;

                Permission.RequestUserPermission(Permission.Camera);
            }
#endif
#endif

참고로 로그도 같이 보내드립니다.

[로그]

2024/03/25 10:02:54.153 15371 15403 Info Unity StartRendering
2024/03/25 10:02:54.153 15371 15403 Info Unity maxstAR.AbstractCameraBackgroundBehaviour:StartRendering()
2024/03/25 10:02:54.153 15371 15403 Info Unity 
2024/03/25 10:02:54.156 15371 15403 Info Unity Camera id : 0
2024/03/25 10:02:54.156 15371 15403 Info Unity maxstAR.CameraDevice:Start()
2024/03/25 10:02:54.156 15371 15403 Info Unity ARBehaviour:StartCamera()
2024/03/25 10:02:54.156 15371 15403 Info Unity CloudTrackerSample:OnApplicationPause(Boolean)
2024/03/25 10:02:54.156 15371 15403 Info Unity 
2024/03/25 10:02:54.156 15371 15403 Info MaxstAR-Native start
2024/03/25 10:02:54.156 15371 15403 Info Camera1Controller Camera1 api
2024/03/25 10:02:54.157 15371 15403 Info Unity Unity StartCamera. result : CameraPermissionIsNotGranted
2024/03/25 10:02:54.157 15371 15403 Info Unity ARBehaviour:StartCamera()
2024/03/25 10:02:54.157 15371 15403 Info Unity CloudTrackerSample:OnApplicationPause(Boolean)
2024/03/25 10:02:54.157 15371 15403 Info Unity 
2024/03/25 10:02:54.184 15371 15371 Verbose MediaRouter Selecting route: RouteInfo{ name=????????????, description=null, status=null, category=RouteCategory{ name=????????? types=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO  groupable=false }, supportedTypes=ROUTE_TYPE_LIVE_AUDIO ROUTE_TYPE_LIVE_VIDEO , presentationDisplay=null }
2024/03/25 10:02:54.209 15371 15403 Info Unity StopRendering
2024/03/25 10:02:54.209 15371 15403 Info Unity maxstAR.AbstractCameraBackgroundBehaviour:StopRendering()
2024/03/25 10:02:54.209 15371 15403 Info Unity 
2024/03/25 10:02:54.209 15371 15403 Info MaxstAR-Native JNI Android camera stop
2024/03/25 10:02:54.210 15371 15403 Info Unity Unity StopCamera. result : UnknownError
2024/03/25 10:02:54.210 15371 15403 Info Unity ARBehaviour:StopCamera()
2024/03/25 10:02:54.210 15371 15403 Info Unity 
2024/03/25 10:02:54.221 15371 15403 Debug   PlayerBase::stop() from IPlayer
2024/03/25 10:02:54.221 15371 15403 Debug AudioTrack stop(416): called with 1536 frames delivered
2024/03/25 10:02:54.249 15371 15371 Info ViewRootImpl@4e699b7[UnityPlayerActivity] MSG_WINDOW_FOCUS_CHANGED 0 1
2024/03/25 10:02:54.249 15371 15371 Debug InputMethodManager prepareNavigationBarInfo() DecorView@a4a31bf[UnityPlayerActivity]
2024/03/25 10:02:54.249 15371 15371 Debug InputMethodManager getNavigationBarColor() -855310
2024/03/25 10:02:54.302 15371 15371 Info ViewRootImpl@4e699b7[UnityPlayerActivity] stopped(false) old=false
2024/03/25 10:02:54.325 15371 15371 Info ViewRootImpl@4e699b7[UnityPlayerActivity] Relayout returned: old=(0,0,1080,2220) new=(0,0,1080,2220) req=(1080,2220)0 dur=3 res=0x1 s={true 501938745344} ch=false
2024/03/25 10:02:54.325 15371 15371 Info ViewRootImpl@4e699b7[UnityPlayerActivity] MSG_WINDOW_FOCUS_CHANGED 1 1
2024/03/25 10:02:54.325 15371 15371 Debug InputMethodManager prepareNavigationBarInfo() DecorView@a4a31bf[UnityPlayerActivity]
2024/03/25 10:02:54.325 15371 15371 Debug InputMethodManager getNavigationBarColor() -855310
2024/03/25 10:02:54.336 15371 15403 Info Unity StartRendering
2024/03/25 10:02:54.336 15371 15403 Info Unity maxstAR.AbstractCameraBackgroundBehaviour:StartRendering()
2024/03/25 10:02:54.336 15371 15403 Info Unity 
2024/03/25 10:02:54.338 15371 15403 Info Unity Camera id : 0
2024/03/25 10:02:54.338 15371 15403 Info Unity maxstAR.CameraDevice:Start()
2024/03/25 10:02:54.338 15371 15403 Info Unity ARBehaviour:StartCamera()
2024/03/25 10:02:54.338 15371 15403 Info Unity CloudTrackerSample:OnApplicationPause(Boolean)

다시 한번 확인 부탁드립니다.

감사합니다.

 

Posted Date: 2024-03-25 5:15     Edited Date: 2024-03-25 5:15     Writer: ecjeong

안녕하세요.

MAXST AR SDK 팀입니다.

문의하신 내용 중 네이티브 코드에서 계속 체크가 되는 버그는 추후 업데이트 할 예정이며, 위에서 말씀 드린 방법은 이를 임시로 처리하기 위한 방법입니다.

 

혹시 OnPermissionDenied 함수 안의 내용을 잘 작성해주셨을까요?

저희 팀에서는 로그가 잘 찍히는 것을 확인했습니다.

 

또한, iOS 플랫폼에서도 테스트를 해보았는데요,

승인 거부 시 무한루프로 들어가는 현상이 없었습니다.

 

혹시 iOS에서도 이런 현상이 발견되나요?

iOS 의 경우에는 Start함수 내부(## PLATFORM_ANDROID ~ ##endif 이후 라인)에 다음과 같은 코드를 추가하여 설정으로 이동하기를 유도할 수 있습니다.

 

#if PLATFORM_IOS
            if (!Application.HasUserAuthorization(UserAuthorization.WebCam))
            {
                // 설정으로 유도
            }
#endif

 

내용 확인 후 답글 달아주시면 추가 답변해드리도록 하겠습니다.

 

MAXST AR SDK에 대한 많은 관심 감사드립니다.

MAXST AR SDK Support Team 드림.

Posted Date: 2024-03-26 8:11     Edited Date: 2024-03-26 8:11     Writer: teiwoong

네.. iOS도 다시 확인해 보겠습니다. 

팝업 UI를 다른 루틴에서 체크해서 띄웠는데, 버튼 클릭이 안되서요. 체크 후 다시 질문 사항 있으면 전달 드리겠습니다. 

감사합니다.

Posted Date: 2024-04-02 1:43     Edited Date: 2024-04-02 1:43     Writer: teiwoong

소스를 동일하게 써서 둘다 (Android, iOS) 자동으로 넘어가게 처리를 해놨었는데요.

SDK 6.1.1 쓰고 있는데, iOS는 팝업 띄운 다음에 UI에서 클릭이 잘되는것을 확인 했습니다. (카메라 체크를 위해 무한으로 로그가 뜨진 않네요.)

혹시 Android는 팝업 UI를 띄운 상태에서 버튼 클릭이 안되는데요. 

이것을 해결할 방법이 있을까요? SDK 업데이트를 기다려야 하는 상황이라면, 언제까지 될지 알고 싶습니다.

답변 부탁드립니다.

Posted Date: 2024-04-03 0:22     Edited Date: 2024-04-03 0:22     Writer: ecjeong

안녕하세요.

맥스트 AR SDK 에 대한 소중한 의견 감사합니다.

안드로이드 팝업 UI는 첫 번째 답변을 참고하셔서 CameraDevice.cs 에서 작성해보세요.

위 내용은 추후 수정 예정이며, 아직 정해진 업데이트 일정은 없습니다.

 

감사합니다.

MAXST AR SDK Support Team 드림.

Posted Date: 2024-04-03 5:08     Edited Date: 2024-04-03 5:08     Writer: teiwoong

안녕하세요.

안드로이드에서 팝업 UI를 띄우는것은 잘 되는데요.

제 질문은 이때 팝업띄운 UI에 버튼을 만들었는데, 이 버튼이 클릭이 안됩니다. (iOS는 클릭이 잘 됩니다.)

(현재는 팝업 띄우면서, 코루틴을 만들어서 세팅으로 가게만 처리를 했습니다.)

아무래도 무한루프에 빠지면서 클릭이 안되는듯 한데, 의뢰 업체에서는 이 부분을 해결하기를 원하고 있습니다.

현재 버전 (SDK 6.1.1)에서는 불가능한듯 한데, 정확한 답변 부탁드립니다.

혹시 SDK 6.2.0으로 올리면 해결이 되는 걸까요?

수고하세요.

 

Posted Date: 2024-04-05 4:58     Edited Date: 2024-04-05 4:59     Writer: ecjeong

안녕하세요.

작성해주신 내용 바탕으로 다시 확인을 해보았는데요,

CameraDevice.cs 스크립트에

 

    private bool isPermissionAsked = false;
 

의 bool 값을 하나 만들고,

 

            if (!Permission.HasUserAuthorizedPermission(Permission.Camera) && !isPermissionAsked)
            {
                var callbacks = new PermissionCallbacks();
                callbacks.PermissionDenied += OnPermissionDenied;
                Permission.RequestUserPermission(Permission.Camera);
                isPermissionAsked = true;
            }

 

와 같이 코드를 작성하시면 무한루프를 피할 수 있을 것 같습니다.

감사합니다.

 

MAXST AR SDK Support Team 드림.