nhn / gpm.unity

A brand of NHN providing free services required for game development.

Home Page:https://gameplatform.nhncloud.com/en/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Webview 이벤트 받지 못하는 현상에 대한 문의

luke7102 opened this issue · comments

Service

  • WebView
  • AssetManagement
  • Communicator
  • LogViewer
  • Manager
  • UI
  • Profiler
  • Adapter
  • DLST

Version

2.2.1

Summary

로그인이나 회원 가입 같은 인증 Flow를 GPM Webview를 사용하여 연동하려고 합니다.
하지만 처리하지 못한 이슈가 있어서 문의 드립니다.
테스트는 안드로이드 OS만 사용하고 있습니다.

현상

  • Webview가 뜬 상태에서 onPause 이벤트가 발생하면 웹뷰를 닫아야만 콜백 이벤트가 전달되는 문제
  • onPause가 발생하는 경우
    • 웹페이지에서 InputBox에 아이디를 입력하려고 할때 자동완성을 선택해서 아이디를 입력하는 경우
    • 홈 버튼을 눌러서 앱을 내려가게 한 후(onPause 발생) 다시 앱을 켜면(onResume)
    • 삼성패스 사용할 경우(자동 완성 기능이기 때문에 당연한 결과라고 생각합니다)
  • 단순히 InputBox에 아이디를 입력해서 테스트하면 정상 동작 합니다. (onPause 이벤트가 발생하지 않기 때문)

Screenshots

If applicable, add screenshots to help explain your question.

Additional context

Add any other context about the problem here.

@luke7102님 안녕하세요.
먼저 GPM을 사용해 주셔서 감사합니다.

정확한 현상 확인이 필요하여 내용 추가 부탁드립니다.
전달해 주신 내용 중 웹뷰를 닫아야만 전달되는 콜백 이벤트가 어떤 종류인지 알 수 있을까요?
또 해당 콜백 이벤트가 언제 전달되어야 하는지도 확인 부탁드립니다.

참고로 GPM WebView에서 사용하는 콜백은 README API문서에서 Example 아래에 있는 OnCallback 함수에서 확인하실 수 있습니다.

감사합니다.

네 태현님 답변 감사드립니다.

Callback Type은 Scheme (5)입니다.
custom scheme에 대한 값을 전달 받아서 인증 처리를 하고 있습니다.

콜백 이벤트는 웹뷰 내의 웹에서 custom scheme이 호출되었을 때 입니다.

평상시에는 정상적으로 다 오는데, onPause 이벤트가 걸렸을 때만 바로 오지않고 웹뷰를 강제로 닫아야만 오고 있습니다.

유니티와 연관되어 있는 것 같기도 합니다..

@luke7102 님 답변 감사합니다.

다만 전달해 주신 내용 중 onPause 이벤트가 걸렸을 때 callback이 오지 않는 상황 재현이 힘든 상태입니다.
혹시 해당 내용에 대한 영상이나 저희가 테스트해 볼 수 있는 방법이 있는지 확인 부탁드립니다.

감사합니다.

@taehyeon-nhn
제가 테스트하기 위해서 테스트 페이지를 만들어놨는데 한번 해봐주세요.
버튼에 custom scheme을 호출하도록 해놨습니다.

  • UnityApp을 하나 만들어 주시고 버튼에 ShowUrl 이벤트 하나 걸어주세요.
  • GpmWebView.ShowUrl 설정 해주세요.
  • OnCallback에 해당 ckytest:// 스킴이 오면 웹뷰를 닫도록 하시면 될 것 같습니다.
  • <정상 케이스>웹뷰를 띄우시고 테스트 페이지의 "테스트" 버튼을 누르시면 아마 이벤트가 전달되서 웹뷰가 닫힐겁니다.
  • <비정상 케이스> 다시 웹뷰를 열어서 "테스트" 버튼을 누르기 전에 UnityApp을 홈 버튼을 눌러 내려주세요.
  • 그리고 다시 앱을 Foreground로 올려주시고 "테스트" 버튼을 눌러주시면 아무 반응이 없는걸 확인 할 수 있습니다.
  • 강제로 웹뷰를 닫아주시면 오지 않았던 이벤트들이 모두 오는 것을 확인 할 수 있습니다.

@luke7102 님 답변 감사합니다.

전달해 주신 내용으로 테스트 및 현상 확인해 보겠습니다.

감사합니다.

@luke7102 님 안녕하세요.

전달해 주신 내용 중 홈 버튼을 눌러서 onPause가 되었을 때,
간헐적으로 scheme event가 Unity로 전달되지 않는 현상을 확인했습니다.

일반적인 경우 Android 디바이스에서 홈 버튼을 눌렀을 때 Unity 이벤트 함수인 OnApplicationPause의 매개변수에 true가 전달되고, 다시 앱을 Foreground로 변경하면 OnApplicationPause의 매개변수에 false가 전달되어야 합니다.

위 이슈의 경우 Unity 환경이 pause 상태에서 resume 상태로 변경되지 않아 OnApplicationPause나 OnApplicationFocus 등의 이벤트 함수가 호출되지 않으며 scheme event도 정상 전달되지 않았습니다.
(Android native에서는 onPause나 onResume 이벤트가 정상 전달되었습니다.)

해당 현상에 대한 정확한 원인 파악 및 해결 방법을 확인 중이며, 변경 또는 수정 사항이 발생하면 댓글을 통해 내용 전달드리겠습니다.

감사합니다.

@taehyeon-nhn 님 안녕하세요.

답변 감사드립니다.

참고로 iOS는 문제 없었습니다.

수정 되길 기다리겠습니다.

@taehyeon-nhn 님 안녕하세요.

혹시 이 이슈 확인은 얼마나 진행되었는지 그리고 수정 예상 일정을 대략 알 수 있을까요?

제가 진행하고 있는 프로젝트에 GPM을 사용하고 있고 오픈을 앞두고 있어서 일정 확인이 필요합니다.
안드로이드에서는 100% 재현이 되는 상황이라 수정되는 일정이 맞지 않는다면 다른 방안을 찾아야 하는 상황이라서요.

죄송하지만 확인 부탁 드리겠습니다.

@luke7102 님 안녕하세요.

해당 이슈에 대해 다방면으로 테스트 중입니다.
Android navtive에서 WebView를 제거하고 단순 UI만 띄웠을 때에도 동일한 현상이 발생하는 것을 확인하고,
다른 방향으로 원인을 찾고 있습니다.
아직 정확한 원인 파악이 되지 않아 수정 일정을 전달드리기 어려운 점 양해 부탁드립니다.

다만 해당 이슈를 완전하게 해결하기 전에 WebView Close 등의 제한적인 명령을 Android native에서 처리할 수 있는 기능을 추가할 수는 있습니다.
이 경우 GPM WebView의 Configuration 또는 API가 수정 또는 추가됩니다.
가능하시면 위 내용에 대한 의견 부탁드립니다.

감사합니다.

@taehyeon-nhn 님 답변 감사 드립니다.

말씀하신 부분 중 아래 내용이 이해가 잘 되지 않는데 추가 설명 좀 부탁 드려도 될까요?
다만 해당 이슈를 완전하게 해결하기 전에 WebView Close 등의 제한적인 명령을 Android native에서 처리할 수 있는 기능을 추가할 수는 있습니다.

임시로 처리하기 위해서 GPM WebView에 Configuration 또는 API가 수정되는 걸 원하지는 않습니다.

@luke7102 님 의견 전달 감사드립니다.

추가 기능의 경우 Unity script에서 Android custom scheme과 연결되는 native 명령을 미리 등록해두고,
해당 scheme이 호출되면 native에서 명령이 처리되는 기능입니다.

예를 들면 아래와 같습니다.

  1. Unity GpmWebView에서 native 명령 등록
  2. Android native custom scheme 호출
  3. Android native에서 등록된 명령 실행
  4. Unity로 custom scheme 전달

임시로 추가되는 기능은 아니지만 GPM 사용자의 경우 WebView가 업데이트되는 방향에 따라 수정이 필요할 수 있습니다.

전달 주신 이슈가 해결되면 댓글을 통해 내용 전달드리겠습니다.
감사합니다.

@taehyeon-nhn 님 답변 감사드립니다.

이해했습니다. 그 방법도 괜찮은 방법이고 그 부분이 적용된다면 현재 이슈도 해결 가능할 것 같습니다.
말씀하신 방법이 GPM에 적용되려면 얼마나 걸릴까요?

재촉하는것 같아 죄송합니다 ( _ _ )

전달드린 기능의 경우 차주 중으로 업데이트 및 배포 가능할 것 같습니다.

혹시나 하여 첨부 드리자면 위에서 예를 들어 설명한 기능의 경우 Android native 명령에 Close가 전달된다면 3번 단계에서 Gpm WebView가 닫히게 됩니다. 참고 부탁드리며 내용이 생각하시는 기능과 다르다면 전달 부탁드립니다.

감사합니다.

넵 감사합니다.

업데이트해서 배포해주시면 적용해서 테스트 해보도록 하겠습니다.

감사합니다.

@luke7102님 안녕하세요.

GPM WebView v1.11.0 이 배포되었습니다.
가이드 문서릴리스 노트 참고 부탁드립니다.

샘플 코드는 Assets/GPM/WebView/Sample/SampleWebView.cs 파일을 참고 부탁드립니다.
Custom scheme과 연결된 native 명령이 GpmWebViewRequest.Configuration 내에 CustomSchemePostCommand 항목으로 추가되었습니다.

GpmWebViewRequest.CustomSchemePostCommand customSchemePostCommand = new GpmWebViewRequest.CustomSchemePostCommand();
customSchemePostCommand.Close("CUSTOM_SCHEME");

new GpmWebViewRequest.Configuration()
{
    ...
    customSchemePostCommand = customSchemePostCommand,
    ...
};

GpmWebView.ShowUrl(URL, Configuration, Callback, "CUSTOM_SCHEME");

감사합니다.

네 감사합니다 태현님.
적용해서 테스트 해보겠습니다!

@taehyeon-nhn 님 테스트해서 정상동작 확인 했습니다.

감사드립니다.

@luke7102님 안녕하세요.
답변이 늦었습니다. 확인 및 내용 전달 감사드립니다.