79
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iPadOSの審査ではEthernet接続が使われている

Posted at

先日、iOSアプリを審査に出したところ「iPadOSで起動時に通信エラーで進めない」とリジェクトされました。
これまでこのようなリジェクトを受けたことはなく、特にサーバーも問題なく動作していました。

では、なぜ審査落ちになったのでしょう。審査落ちのメッセージに添付されていたスクリーンショットを確認したところ、通信インジケーターが出ていませんでした。通常、ここにはWi-FiやCellularのアイコンが表示されているはずです。

20220303194545.png

一応この点について指摘してみましたが「このデバイスは正しくインターネットに接続している。詳しくは教えられない。」という回答があったのみでした。

iPhone/iPadに有線LANをつなぐ

Wi-FiやCellularの表示がなくても接続できる状況ってあるか…?いや、そういえばEthernetがありました。

実はiOS 9.3以降で、Lightning to USB3 Camera Adapterを使い、そこにUSB-Ethernetアダプタを繋ぐことでEthernet、つまり有線LANに繋ぐことができるようになっています。もちろん、USB-Cポートを備えたiPad Proであれば、直接USB-CにUSB-CのEthernetアダプタをつなぐこともできます。

なぜEthernetで通信エラーになっていたのか

LightningポートにEthernetを挿せるように環境を整えました。Ethernetアダプタをポートに接続すると、設定アプリにEthernetの項目が増えます。

20220303194749.png

この状態にすることで、問題を再現できました。

このアプリは通信前にFBNetworkReachabilityライブラリでインターネットの疎通をチェックしていますが、このライブラリはCellular接続でない場合はIPアドレスを検出する動作をしていましたが、これがEthernetの環境ではうまく動作していませんでした。

GitHubの最新のコードではこの問題は解消されていましたが、このバージョンはCocoaPodsにリリースされていません。

GitHubを直接参照する形で更新することもできましたが、ライブラリがObjective-Cで記述されていること、現在のアプリはiOS12以降対応になっている等を鑑みて、NWPathMonitorに置き換えて対応することにしました。

今後、通信の疎通にはEthernet接続もあるというのを考慮に入れるようにしたほうが良いと思いました。

79
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?