DirTy™의 하루일과/DirTy™의 가당찮은iOS

[IOS] IPv6 관련 검수 통과하기

DirTy™ 2017. 4. 17. 15:33

회사에서 서비스중인 앱이 socket통신으로 붙혀서 통신을 하고 있는데

이번에 예전 애플 계정이 만료되어 회사 법인 애플 계정으로 앱을 이관하기 위해

또 리뉴얼도 겸해서 수정과 기능추가를 하고 사내 QA까지고 마치고 앱스토어에 등록을 했다.


당연 안드로이드는 단 몇시간만에 통과되어 구글스토어에서 다운을 받을 수 있었고

나는 안드로이드보다 몇일전에 앱검수를 신청 해놓았는데 리젝을 당했다.


처음엔 단순히 외국이고 사내 테스트서버에 접근이 안되나 싶어서

네트워크팀에 문의하여 사내망에 접근할수 있도록 요청을 하였으나

또다시 2차 리젝을 당했다.


다시 요청했는데 또 3차 리젝을 당한다.

아이디가 한국어라 그런가?(이런말도안되는 생각조차 하게되었다.)

테스트아이디를 영어로 바꾸고 다시 요청. 또다시 반복되는 리젝.


애플 앱심사 하는애들도 답답했던건지 IPv6 대응 안해서 그렇다는 답변을 이제서야 해준다.

ㅡㅡ;;;; 아놔... 이것때문에 1주일이라는 시간이 훌쩍 지났다.


구글과 네이버에서 정보를 찾다보니 내 블로그에 2016년5월에 IPv6 대응 필수라는 포스팅이 있다.

헐~~~ 완벽하게 까먹고 있었다.


사실 이앱이 내가 첨부터 만든 앱이 아니고 인수인계 받은앱이라 내부사정까지 자세히 몰랐는데

socket 통신쪽으로 보니 IPv4 api와 IPv4전용 구조체등을 쓰고 있었다.


이에 수정.

크게 수정한점은 4가지.

1. IP Literal을 사용하지 말것. 211.111.111.111. 이런거 말이다. DNS를 통해서 받아와야 된단다.

회사에 도메인 요청하여 받았다.


2. IPv6사용시 getaddrinfo() 함수를 사용하여 도메인에서 정보 획득.

IPv6망에서 도메인으로 사용하여 붙혀보니 자동으로 IPv6가 할당되어 날라오더라.


3. IPv4용 in_addr, sockaddr_in 구초제와 IPv6용 in6_addr, socketaddr_in6도 대응.


4. IPv6 Only Network 상에서도 앱이 정상동작 할것.

IPv6망을 만드는 법은 간단하다. 아래의 페이지 참고.

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1


이정도 대응을 해주니 IPv6망에서도 로그인이 되는것을 확인하였다.

리젝당한것도 오랫만이라 참으로 난감했지만... 어찌됐던 공부는 되었네.