[Unity]UIWebView Deprecated 이슈 해결 법

2022. 4. 13. 00:26Tech/Unity

    목차

이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다.

 

서론

[그림 1. UIWebView 권고 메일 중 일부]

 어느 날부턴가가 iOS AppStore에 앱을 제출하면 위와 같은 경고 메일이 왔었습니다. 요약하자면 "UIWebView는 앞으로 사용되지 않으니 해당 이슈 처리를 미리미리 해달라"인데… 일반 네이티브 앱이라면 이미지의 설명처럼 "WKWebView"로 바꿔주면 되지만… 유니티로 뽑은 빌드는 그게 아니니… 어떻게 해결을 해야 할까요? 이번 글에서는 해결했던 과정에 대해 다뤄보려 합니다.

 


첫 번째 해결책

 일반적으로 Deprecate 되는 API나 라이브러리 등을 제거하거나 마이그레이션 할 때는 사용되는 곳을 찾는 게 우선이었습니니다. 그래서 해당 앱을 만들때 사용한 Third party SDK나 패키지들을 살펴보았습니다. 이 부분에서는 쉽게 찾을 수 있었습니다. Firebase와 Unity Ads에서 UIWebView를 사용 중이었죠. 다행히도 SDK와 패키지 버전을 업하여 쉽게 해결할 수… 있을 줄 알았습니다. 분명 버전업을 통해서 해당 모듈들에서는 UIWebView를 사용하지 않고 더 이상 XCode와 Unity 에디터에서는 UIWebView의 흔적을 찾아볼 수 없었습니다.

[그림 2. Firebase release note 중 일부]
[그림 3. UnityAds release note 중 일부]

참고로 함께 일하는 개발자분의 말씀으로는 Google Admob, Vungle SDK 에서도 발견됐었다고 합니다. 하지만 해당 프로젝트는 사용하지 않아 넘어갔지만, 만약 사용하시는 분이라면 참고하시면 될 것 같습니다.

 

[그림 4~5. GAM relase note 중 일부]

 

 Admob의 경우 iOS SDK 7.55.0 버전에서 해결했다고 합니다. 해당 버전 이상을 빌트인 하고 있는 Unity SDK를 사용하면 됩니다. Vungle 또한 마찬가지입니다. iOS SDK 6.4.3 에서 UIWebView 이슈를 해결했다고 하니, 해당 버전 이상이 빌트인 된 플러그인을 사용하도록 하면 될 것 같습니다. 당시 기준으로 release 된 Unity 플러그인은 6.4.3 이상이 빌트인 되어 있습니다.

[그림 5. Vungle SDK relase note]


두 번째 해결책 Third party가 아니라면…

 Unity내부에 내장된 빌트인 iOS 관련 부분이 아닐까 생각했습니다. 그래서 찾아보았습니다.

[그림 6. Unity에서 export한 Xcode프로젝트에 내장된 Unity lib 심볼 검색 결과]

 위 이미지는 유니티로 빌드한 XCode프로젝트의 모든 파일들 중 "UIWebView"라는 심벌을 찾은 결과입니다. 이미지에서 보듯이 'libiPhone-lib.a' 라이브러리와 'UnityAds' 모듈에서 "UIWebView"를 사용 중이었습니다. 라이브러리 쪽은 빌트인 된 녀석이고 모듈은 기본으로 설치된 유니티 패키지였습니다…

 

 UnityAds는 패키지 자체를 삭제하면 해결될 것입니다.(물론 저는 해당 광고 모듈을 사용하지 않기에 삭제한 것입니다.) 그렇다면 libiPhone-lib.a 는? 이 녀석은 빌트인 된 녀석이라 빌드할 때마다 갱신될 것입니다. 애초에 원본을 교체하거나 해결된 버전의 Unity 엔진을 사용하는 방법밖에는 없을 것입니다. 본인은 두 가지 방법을 모두 시도해 보았습니다.

 

 libiPhone-lib.a의 URLUtility.o라는 오브젝트 파일에서 "UIWebView"를 사용 중이라는 정보를 접한 뒤 해당 오브젝트 파일을 새로 빌드하여 교체해 보았지만… Unity 자체 API 인 Application.OpenURL() 이 정상적으로 작동하지 않았습니다. 역시 함부로 건드는 게 아니라는 걸 새삼 깨달았습니다. 사이드 이펙트가 너무 크네요.

 

 결국 선택한 건 엔진의 버전업… 아직 개발단계에서 부담스러운 선택이었지만 정책상의 이유로 어쩔 수 없이 업데이트를 강행할 수밖에 없었습니다. Unity 2019.3.10 f1 이후에서는 UIWebView 이슈가 해결된 상태입니다. 혹은 2018 LTS 버전에서도 해결되어 있다고 하니 참고하면 좋을 것 같습니다.


마무리

 이전 블로그에 이 글을 썼던 당시에는 심각한 문제였지만, 지금은 아마 대부분 해결되었지 않을까 싶습니다. 아무래도 해결하지 않으면 앱 제출을 할 수 없으니 말이죠.

 


리소스 출처

[그림 1~5] : 각 SDK의 Relase note

반응형
LIST

'Tech > Unity' 카테고리의 다른 글

[Unity]Addressable asset 기본 개념  (2) 2022.06.12
[Unity]Asset bundle 기본 개념  (2) 2022.06.12
[Unity]직렬화(Serialization)  (0) 2022.04.13
[Unity]로드된 리소스의 메모리 누수  (0) 2022.04.13
[Unity]Unity mobile native plugin  (0) 2022.04.12