App Store の審査で CallKit の使用が検出されたとしてリジェクトされた場合の対処 ( Xamarin.Forms / Xamarin.iOS )
復習帳 1.1.6 iOS版 のアップデートの際に審査で「メタデータでの却下」としてリジェクトされました。
内容は以下になります。
Guideline 5.0 - Legal
Recently, the Chinese Ministry of Industry and Information Technology (MIIT) requested that CallKit functionality be deactivated in all apps available on the China App Store.
During our review, we found that your app currently includes CallKit functionality and has China listed as an available territory in iTunes Connect.
Next Steps
This app cannot be approved with CallKit functionality active in China. Please make the appropriate changes and resubmit this app for review.
If you have already ensured that CallKit functionality is not active in China, you may reply to this message in Resolution Center to confirm.
Voice over Internet Protocol (VoIP) call functionality continues to be allowed but can no longer take advantage of CallKit’s intuitive look and feel. CallKit can continue to be used in apps outside of China.
中国への配信では、CallKit機能を使用したアプリは法律で禁止されていて公開ができない決まりだけど、あなたのアプリでCallKitの使用が検出されたので無効化してください。 というような内容です。
CallKitは良くわかりませんが、iOSの電話関連のAPIらしいです。しかし、そんなコードは1行も書いてません。
問題解決センターでやりとりするも、確かに検出されているが、具体的箇所は答えられないということでした。
結論から言えば、「使ってないのに検出された」という事実がすでに答えでそれは「リンカーの設定」でした。
iOSプロジェクトのビルド設定のリンカーの動作が「リンクしない」になっていたので
これを「フレームワークSDKのみをリンクする」にしてビルドして再提出すると無事審査を通過できました。
そもそもデフォルトは「フレームワークSDKのみをリンクする」なのですが、Xamarin Studio時代のとあるバージョンで急にリリースビルドで「リンクしない」に設定しないと即落ち現象に遭遇して、それ以来ずっとこの設定にしてたのが問題だったようです。今回、設定変更したら即落ち現象も発生せず何も問題なかったので、本来ならこのリジェクトは遭遇しないのだと思います。
ただgoogleで検索してもあまり情報がなかったので一応記事にしてみました。
また今回「メタデータでの却下」としてリジェクトされたのですが、それについて検索してみると、これはストア掲載データなどバイナリ以外での理由での却下なので、再提出しなくても大丈夫的な内容が結構ヒットしてました。 ですが今回は「メタデータでの却下」であっても既にバイナリに機能が含まれるという内容なので当然再ビルドが必要で、そのビルドの再提出が必要です。 問題解決センターでのやりとりだけでは確実に解決できないので注意が必要です。
まとめ
AppStoreの審査で中国配信でCallKitが〜と怒られたらリンカーの設定を見直しましょう。