chakokuのブログ(rev4)

日々のごった煮ブログです

EchoneLite 機器を検出するアプリを開発・・・iOS上ではSwift Crash→申請が必要だった

理解不十分なまま、SwiftUIのプログラムと前回試作したUDP Multicastのプログラムを連結してiOS上で動かしてみた。すると、、ConnectionGroupのcancel()を呼んだ時点でcrashが発生。終了タイミングとか、資源解放の仕方とかが悪いのだろうか。。原因が分からず。

2020-12-09 20:38:26.284702+0900 ELDeviceFinder[6169:1234144] [] __nwlog_err_simulate_crash simulate crash already simulated "nw_connection_group_send_message_block_invoke called with null client_queue"
2020-12-09 20:38:26.285496+0900 ELDeviceFinder[6169:1234144] [] nw_connection_group_send_message_block_invoke called with null client_queue, dumping backtrace:

以下のような記事があった。理解がついていかない対策案なのだが。。
エラー:プロトコルが利用できない、バックトレースをダンプする

Developer Forumでも話題になっている(過去の記事だけど)
Odd network error/warning in lates… | Apple Developer Forums

■追記
さらに調べていると、LocalNetowrkでマルチキャストするアプリを作るには、アプリ用のIDにPermissionを設定する必要があることが分かった。LocalNetworkの利用はどんどん厳しくなっており、許可が必要らしいとは認識していたけど、プログラムのレベルでは有効化できないようである。知らなかった。。

Multicast Networking Entitlement Request から申請する必要あり
https://developer.apple.com/contact/request/networking-multicast

AppStoreのURLが必要なようで、AppStoreConnectにリリースのためのページを作成して、URLを決定した。なぜMulticastが必要かを説明する必要があり、「マルチキャストで機器を探し出すため」と日本語で理由を書きました。。


■参考記事、SwiftUI + Network
Naked Networking with SwiftUI. Network | by Mark Lucking | Medium

Multicastをするためにやるべきことの説明
iOS 14でローカルネットワークの利用 - Qiita
この記事のおかげで原因がわかりました。ありがたや。。