近距離で P2P 通信ができる MultipeerConnectivity.framework ですが、iOS14 でエラーが発生する場合があります。
MCNearbyServiceAdvertiser
や MCNearbyServiceBrowser
等が NSNetServicesErrorCode = "-72008";
的なエラーを返します。
このエラーは Xcode12 でビルドしたものを iOS14 の実機デバイスで動作させると発生します。シミュレータでは発生しません。
Xcode11 でビルドしたものを iOS14 の実機デバイスで動作させた場合は以下のようなダイアログが表示され、許可すると正常に動作します。
ですが、Xcode12 でビルドすると実機でのみエラーになります…。
いろいろ調べて以下のドキュメントを見つけました。
一部のレガシーデバイスおよびソフトウェアとの互換性を維持するには、カスタムマルチキャストおよびブロードキャストプロトコルを使用する必要があります。これらの機能はAppにユーザーのローカルネットワークへの完全なアクセス権を与えるため、そのようなアクセス権には 「com.apple.developer.networking.multicast」制限付きエンタイトルメントが必要です。 注:有効なエンタイトルメントがなくてもiOSシミュレータおよびiPadOSシミュレータを使用してテストできますが、物理ハードウェアでマルチキャストおよびブロードキャストネットワークを使用するには有効なエンタイトルメントが必要です。
たぶんこれのこと? com.apple.developer.networking.multicast
をエンタイトルメントに追加すると直りそうな気もしますが、このエンタイトルメントの使用には申請が必要で、簡単に試せません。
てか Xcode11 でビルドしたのと同じ挙動になってほしいので、修正されることを望みます。
↓解決編
iOS14でMultipeerConnectivity.frameworkがエラーになる件の解決編 - CatHand Blog