CBT인원과 기간이 확정되면서 고난의 앱심사 과정의 문을 두드렸다. 그렇게 맞은 첫 번째 Reject. 앱 출시 심사보다야 훨씬 강도가 마이너(?)하겠지만 그래도 한 번에 통과될리는 없을 줄 알고 있었다. 하나씩 처내려가는 과정을 기록해 둔다.
ITMS-90683 : Missing Purpose String in Info.plist
해달라는 대로, Plist Info에 해당 키값을 추가하면 된다. 그런데 앱에는 딱히 사용자 photo library를 사용하는 부분이 없긴 한데.. 아마 사용중인 API 일부에서 이 프로토콜을 쓰는지도 모르겠다. 정상적인 처리방법이라면야 이 API들을 긁어내 Deprecate시키는게 이상적이겠으나, 나에겐 시간이 없었다. 고분고분히 말을 들어주자.
ITMS-90809 : Deprecated API Usage
이 포스팅을 쓴 이유이기도 하다. 더 이상 지원하지 않는 API를 쓰고 있단 사유로, 소셜로그인에 쓰인 "UIWebView"가 이에 해당했다.
이 경우는 간단했다. UIWebView를 우리는 어디에 쓰고 있는지 이미 알고 있었으니, 시간이 걸릴지라도 그것을 교체해주면 된다. WebView SDK중 WKWebView를 추천하길래 알아보다가, 시간을 절약할 셈으로 NHN에서 내놓은 오픈소스 라이브러리인 GPM을 차용하기로 결정했다.
GPM(Game Package Manager) : https://github.com/nhn/gpm.unity
잠시 한탄을 해보자면.. 새로운 API 혹은 SDK를 프로젝트에 추가한다면 정말정말 면밀한 검토가 필요하겠구나, 느꼈다. 이 오픈소스 혹은 라이브러리가 검증된 것인지, Reference는 충분한지, 인지도가 있는지, 사용하기 쉬운지 등등.. 새로운 SDK가 추가된다면 해당 추가된 빌드를 가지고 수시로 TestFlight에 등록해두는 편이 나을 것 같다. 그것을 간과했으니 일정계산에 차질이 생길 수 밖에.
어쨌든 이걸로 해결봤다고 생각했으나 문제는 더 있었다. UIWebView Plugin을 프로젝트에서 모조리 삭제했으나 다시 한번 심사거부가 난 것. 아니, 우리는 안 쓰고 있다니까요?! 그래. 한번 Project에서 찾아보기로 했다. 콘솔에서 grep -r "UIWebView" /Dir 명령어로 해당 프로젝트의 문자열 참조를 모두 검색할 수 있다.
지금은 이미 해결이 된 상태에서 쓰는 글이기 때문에 ^^ 표시는 되지 않지만 만약 프로젝트에 문자열이 있다면 어디에 포함이 되어있는지 표시가 된다. 우리의 경우엔 GoogleSignIn (또..또!!!)이 문제였고, 해당 SDK 문서에서 WebView 항목을 찾을 수 있었다. GoogleSignIn은 5.0.0 이후로 WebView의 참조를 중단하고 있었고 현재 쓰는 버전은 4.3.0이었다. pod으로 해당 SDK를 업데이트해주고, 몇 가지 이슈를 해결보았다.
사실 이 과정에서도 좀 앓았는데, SDK 업데이트 이후 xCode에서 자꾸 빌드실패가 뜨는 것. Library 참조가 이상한건지, Swift 코드들이 서로 오류를 일으키는 것... 그래서 github의 changeLog를 보고 직접 코드를 수정했다.
https://github.com/googlesamples/google-signin-unity/pull/126/files
다만 위 로그는 iOS Native코드이기 때문에 Unity에서 사용되는 Object-C코드를 봐야 한다. GoogleSignInAppController.mm에서 해당 코드를 수정봤다. 그리고 빌드성공이 뜨고, 업로드!
.
.
.
.
.
그래 다음 리젝 사유가 왔다. Push Notification Certificate가 잘못되었다고 하는 그런 종류의. 나는 이 인증서가 만료되었거니~ 하고 개발자콘솔에 들어가봤지만 인증서와 키들은 그대로 온전히 남아있는 상태였다. 아니 왜지? 싶으면서 몇십분 삽질을 하다가 아! 젠킨스 빌드가 xCode프로젝트를 덮어씌우면서 Capability 속성이 초기화가 된 것이렸다.
그리고 다시 심사를 위해 업로드했고, 그리고 통과됐다. 저 망할 GoogleSignIn때문에 이틀간 삽질한걸 생각하니 열불이 뻗쳐.
'Works > Programming' 카테고리의 다른 글
코드리뷰에 관하여 (1) | 2022.01.06 |
---|---|
Unity MainThread Socket Queue 처리에 관하여 (0) | 2021.11.25 |
VRChat 아바타 Parameter / FX Layer 자동 생성 (0) | 2021.08.22 |
Unity + Firebase Google 로그인 구현하기 (4) | 2021.08.11 |
Unity :: UniRx 라이브러리 사용기 (0) | 2021.03.30 |