因為審 Sign-in with Apple 被退了三次,所以來記錄一下發生什麼事。

因為四月初公司有遊戲先實裝 Sign-in with Apple 過審,所以我以為 Sign-in with Apple 已經結案了。沒想到這幾天另一支 App 竟然吃 4.0 - Design 的退審。一開始 Reviewer 就丟一個 Sign-in with Apple Human Interface Guidelines 叫我們自己看,可是我們也看不出個所以然,尤其是之前已經過審了很難推論是哪裡不對。網路上吃這種退審的也都是只收到 Guidelines 沒有任何解釋 (ex. https://github.com/firebase/FirebaseUI-iOS/issues/823)。在無數觀落陰跟鬼打牆,今天終於跟蘋果的人講到話。

確認過的條件有:

  • Sign-in with Apple 不一定要在版面的最上面
  • 公司自己的帳號系統登入按鈕可以比 Sign-in with Apple 按鈕大
  • 但是任何第三方登入的按鈕都不能超過 Sign-in with Apple 按鈕的大小,即不能有其他第三方登入選項如 Facebook、Twitter 登入比 Sign-in with Apple 搶眼,一樣大可以。
  • 按鈕大小、顏色、圓角樣式請參照 Buttons Guideline 做到盡量像,注意最小寬度 140pt、最小高度 30pt、最小 margin 1/10 按鈕高度。(iPhone X 螢幕是 375pt X 812pt 大概抓一下)
  • 必須要用系統字型,不能用 Noto 之類的字型顯示 Sign in with Apple
  • 必須要用蘋果的原生 Localization,遊戲支援的任何語言上面提示登入字樣都要跟原生 UI 的字樣一樣,像是繁體中文就一定要是 使用 Apple 登入,簡體中文就一定要是 通过Apple登录,一字不差

這次卡應該就是中最後兩項,如果是寫原生 iOS 就只要用系統 UI 元件就好,但是 Unity 沒辦法用原生元件要自己拚。更歡樂的地方在如果你的遊戲要支援泰文,蘋果在 iOS 13 把泰文系統字型切出去同時改變字型格式,然後 Unity 放棄支援:[IOS 13.0] SOME LANGUAGES SYMBOLS ARE REPLACED WITH A [?] MARKS

WRYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

最後想到的方法是去抓原生 UI 的截圖來做字圖。先去抓蘋果的 Sign-in with Apple 範例:

https://developer.apple.com/documentation/authenticationservices/implementing_user_authentication_with_sign_in_with_apple

改一下 Storyboard 找個好去背的顏色,調一下 Layout 改變 Sign-in with Apple 按鈕到適合大小,然後執行起來在 Simulator 裡面截圖 File / Save Screen

Sreenshot

切換語言找了一下,最後發現是在 Project / Info / Localization native development region 這裡修改。

Region

然後這個 key 雖然叫 CFBundleDevelopmentRegion 但是要輸入的是 ISO_639-1 language code 來改變在 Simulator 裡面的執行語言。

看是要把字樣騰出來還是截圖來去背,希望這樣這次可以真的過審…