iOS 앱 첫 심사 요청 후,

하루도 채 안되서 시원하게 리젝 먹었다.


리젝 메일로 iTunes Connect > Resolution Center 통해서 자세한 사항을 읽어보니..


"ipv6 환경에서 테스트 하는데 네 앱에서 에러 메시지가 뜨더라."

라고 하며 ipv6 환경에 대한 가이드 라인을 blah-blah 적어놨더라.


심지어 친절하게 스크린샷까지 첨부해줬다.


 <- 전달받은 스크린샷의 일부.



1. 애플의 함정

 - ipv6 환경이라니. iOS 9부터 ipv6 환경은 필수적으로 지원해야 한다

애플에서 공식적으로 발표한 것은 알고 있었다. 하지만 막상 이렇게 닥치니 멘붕.


 - 정말 이 오류가 재현이 되는지 확인해보고 싶었다.


 - 그래서 리젝당한 메일을 따라 ipv6 환경 셋팅 방법 문서을 읽어내려갔다.

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


- 읽다보면 wifi 없이 네트워크에 연결된, 맥이 설치된 장비가 필요한데 나는 맥북밖에 없었고

랜선을 직접적으로 꽂을 수가 없었다.


- usb 이더넷 젠더를 따로 구매해야 하나 심각하게 고민하던 중에...


- 유니티 포럼에서 나와 비슷한 상황에 처한 사람들이 많은 것을 발견.

https://forum.unity.com/threads/solved-unity-5-6-1-iaps-cannot-initialize-on-ipv6-network.477122/ )


- 위 url 에서 unity 개발자가 마지막에 남긴 코멘트를 자세히 읽어보면..

"unity는 이미 ipv6를 지원하고 있으므로 애플이 던진 모든 리젝이 ipv6와 꼭 관련이 있는 건 아니다."


- 이 코멘트에 따르면 확실히 ipv6 문제가 아니다. 애플이 던진 함정에 빠진 것이었다.

문제를 다시 생각해보니.. 내가 전달받은 문제의 스크린샷이 실마리였다.



2. 실마리

- "구매 가능한 상품이 없습니다." 이게 해결의 실마리였다.

유니티 공식 문서에 따르면 다음과 같은 문구가 있다.

https://docs.unity3d.com/kr/current/Manual/UnityIAPiOSMAS.html )

NoProductsAvailable 초기화 오류가 발생하는 경우 다음의 사항을 확인해야 합니다.

  • - iTunes Connect 제품 식별자가 Unity IAP에 제공된 제품 식별자와 정확하게 일치해야 합니다.
  • - iTunes Connect 애플리케이션에 대해 애플리케이션 내 구매가 활성화되어 있어야 합니다.
  • - 해당 상품이 iTunes Connect에서 판매 중이어야 합니다.
  • - iTunes Connect 제품을 새로 생성한 경우 구매가 가능하려면 몇 시간이 소요될 수 있습니다.
  • - 최신 iTunes Connect 개발자 약관에 동의하고 유효한 계좌 정보를 등록해야 합니다.


- iTunes Connect 에서 '앱 내 구매' 메뉴를 들어가보니 이게 웬일...

첫 심사 때 같이 심사 받았던 인앱상품으로 등록해둔 상품들이 전부 리젝 먹으면서 "개발자의 조치가 필요함"

이라는 에러 메시지를 남기고 있었다.


- 문제가 되는 상품을 클릭해보니 현지화 부분에서 에러 표시가 남겨졌지만

정확히 어떤 부분이 문제가 되는지는 알 수가 없었다. 그래서 관련 검색 시작.

( 1 : http://mmzzuu.tistory.com/67 )

( 2 : https://swifteyes.blogspot.kr/2017/04/itunes-connect.html )


- 미리 경험해 본 선배님들의 글에 따르면 표시 이름(display name)에 문제가 있다고 한다.

그래서 나도 수정했다. 어떻게 수정해야 될지 몰라서 일단 기존에 표시 이름과 설명이 동일하게 해둔 것을

설명은 그대로 두고 표시 이름만 짤막한 단어 형식으로 변경했다.


- 그 외는 건드리지 말라고 해서 인앱 상품 에러만 수정해서 다시 재심사 요청.

(display name 수정 + 혹시 몰라서 수정한 display name이 출력되는 스크린샷 재첨부)



3. 승인

- 하루가 지나고 애플의 답변이 왔다. 24시간 이내로 앱이 출시될 거라는 메일이..

남들은 3차 이상 리젝 먹고 출시하는 경우도 허다했지만 그래도 그동안 고생한 것 생각하면 무척 기뻤다..


- 이 일을 계기로 2가지의 교훈을 얻었다.

(1) 문제를 해결하려고 하기 전에 문제가 정확히 무엇인지 파악하자.

(2) 화면에 에러 메시지 출력하는 것을 절대 귀찮아 하지 말자.


- 만약 내가 에러 핸들링 제대로 안 하고(대충 로그만 박는다든가) 심사 요청했으면 

과연 어떤 리젝이 날아왔을지.. 실마리 못 찾고 하마터면 ipv6 연결해서 테스트 해보고 좌절하고 

온갖 쓴맛을 다 봤을지도.. 생각만 해도 소름..


by kelicia 2018. 2. 19. 01:41

https://developer.apple.com/support/itunes-connect/kr/


대부분 iOS 앱 출시 준비하다가 발생하는 에러들을 보면..

위 가이드 대로 충실히(?) 이행하지 않아서 발생하는 경우가 대부분이다.

'~카더라' 통신 보다는 공식 가이드 문서를 잘 읽도록 하자.. (영어라 하더라도 orz...)


- 앱 거절 : 앱 아이콘 투명 라운딩 처리 

  => 투명 제거 아이콘을 유니티에서 올리고 자동으로 리사이징 맡김

  => iOS 7 이후 부터(?) '.png, 알파없음' 포맷만 허용하는 듯 (xcode 업로딩 실패 메시지로 뜬다)


- 앱 거절 : 앱스토어 아이콘 파일을 찾을 수 없다 

  => 1024x1024 앱스토어용 아이콘 이미지 파일 준비 (.png, 알파없음)

  => xcode 에서 프로젝트 Resources 우클릭 후 이미지 파일 추가

  => images.xcassets 에서 앱 아이콘에 추가한 파일 등록


- 앱 경고 : Missing push notification xx => 별도 포스팅 (http://secretroute.tistory.com/entry/1802101737)

- 인앱 결제 : 

  => 아이튠즈 커넥트 - 계약, 세금 및 금융 정보 등록 및 승인

  => app id : 앱내구입 활성화

  => 프로젝트에서 결제 구현

  => xcode9 빌드 설정 - Capabilities - 인앱 결제 활성화 - 빌드 후 업로드

  => 아이튠즈 커넥트 - 나의 앱 - 앱내 추가기능 - 앱내구입 - 상품 등록

  => 아이튠즈 커넥트 - 사용자 및 역할 - 테스터로 초대할 사람 추가 (iTunes connect 사용자(관리자급) / sand box 테스터)

  => test flight 에서 업로드 된 빌드에 대해 테스터 추가 (iTunes connect 그룹은 빌드 업로드시 자동 메일 알림 옴)

  => 테스터는 test flight 앱 설치 후 수신한 테스터 메일을 통해 초대 승인, 설치, 테스트 개시

  => 테스터가 결제하는 경우 iOS 팝업 상에 '베타 테스터에게는..(어쩌구저쩌구)' 가 추가로 기입되어있다.

   (Development 버전의 경우에는 [Environment: SandBox] 로, Production은 위와 같이 알림 표시 확인 -> 실제 결제x)


  => 구글 플레이는 가짜 영수증 발행해주는데.. 애플 스토어는 결제 안 될 거라고 표시만 해주고 아무런 알림도, 영수증도 없었다.


by kelicia 2018. 2. 10. 20:20


xcode 에서 빌드하고 앱스토어에 앱을 업로드할 때..

업로드는 됐긴 했어도 "Missing Push Notification Entitlement" 라는

경고 메일이 애플로부터 날아올 때가 있다.


이건 대체 뭔 소리인지..


- 요약 이슈 : 당신의 앱은 push 를 사용하지만 app id 상에서는 push가 활성화되어있지 않다.

이를 체크해서 검사한 뒤 다시 업로드 해라. (업로드 거절까지는 아니고 경고 메시지임)


- 경고 메시지이나 무시하면 앱 심사 거절 사유 + 업로드할 때마다 매번 경고 메일 날아옴.


- 해결 : 아래 절차대로 수행

(1) 애플 개발자 로그인 - app id 수정 - push 활성화 - push 용 개발자 인증서 생성 및 빌드머신에 인증서 설치

  : provisioning 상에서 entitlement: aps-environment 표시 확인 가능

(2) xcode 에서 프로젝트 열고 설정 창 - Capabilities 탭에서 Push Notifications 활성화

  : 아래 이미지처럼 앱 업로드 할 때 확인 가능


- 참고 링크 : http://blog.themuser.xyz/ios-missing-push-notification-entitlement-이슈-해결/


- (1)만 했더니 계속 경고 메일 날아와서 완전 멘붕했었는데.. xcode 8 부터 푸시 인증서 따로 요구 했다고 한다..

애플 진짜 짜증.. 이메일에서 참고하라는 링크 따라가면 xcode 설정 얘긴 없어서 헤맬 뻔했다.. 검색/공유 만세.


by kelicia 2018. 2. 10. 17:37