chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

AppleにBroadcastの許可申請を出したら、もうちょい詳しく説明しろと言われる・・・→承認された

Echonet Lite搭載機器を探し出すプログラムを開発しようとして、Multicast送信のためには許可が必要と分かった。Apple Developperサイトから適当な申請を出したら機器間でどんなメッセージを送るのか説明しろと返事が来た。。EchonetLiteの仕様を知らないのだろうか。。EchonetLite機器って日本だけの流通??

Thank you for your interest in Multicast Networking. 
Can you please provide more details on which multicast 
or broadcast protocol (IP address and port) you need to
 use? What messages are exchanged between devices?

ちゃんと返事しないと、、こじれると厄介だ。。。
引き続き日本語で返事してもいいのやら。。

■追記(2020/12/13)
以下のような説明用のPDFを作成して、「ECHONET Liteプロトコルで機器情報をやり取りします」といった内容で回答した。どういう判断になるのやら。。

■追記(2020/12/19)
催促しようかどうしようかと思っていたら、承認のメールが来た。よかった。これでiPhoneアプリでEchonet Lite機器のスキャナーが作れる。。UDP Multicastが正しく実装できれば、だけど。

Your request to use Multicast Networking was approved. You can now add
 the Multicast Networking entitlement with your Provisioning Profile.

Instructions for using the entitlement are available and, for more information 
on using multicast, please read How to use multicast networking in your app. 
If you have questions or issues, please use the “Network” tag on the Apple 
Developer Forums.

嬉しかったので、へなちょこ英語でお礼を書いた。

早速、Apple DeveloperのID管理ページでMulticastを有効にする
f:id:chakoku:20201219140249p:plain:w300
XCodeとAppleDeveloperは同期処理をしているようで、AppleDeveloper側で有効にしつつXCode側でEntitlementを修正していないと、不一致が起きていると怒ってくる。com.apple.developer.networking.multicast についてはプルダウンメニューから選べないようなので、entitlementファイルを手で修正する。

権限のところでこじらせてしまい、これまでビルドしてたProjectを破棄して、あらたに作り直した。ビルドが通りUDP MulticastもExceptionを吐かずに正常動作するようになった。以下はXCodeのコンソール画面

2020-12-19 16:42:58.212195+0900 ELDeviceFinder[3577:516244] [] nw_listener_socket_inbox_create_socket IP_DROP_MEMBERSHIP 224.0.23.0:3610 failed [49: Can't assign requested address]
Group entered state waiting(POSIXErrorCode: Network is down)
waiting
POSIXErrorCode: Network is down
Group entered state ready
ready
send...UDP
Send complete with error nil
Received message from Optional(192.168.10.158:52652)
Optional(8 bytes)
Group entered state cancelled
cancelled
bye

PC側ではUDP MulticastのClienteを走らせていて、以下の通りiOSから配信されたパケットを受信することができた。

---------------
[68][65][6C][6C][6F][41][6C][6C]
---------------

技術的に一番やっかいなUDP Multicatは動かせるようになったので、、残る処理は、UDPパケットを正しいECHONET Liteパケットに直すのと、ECHONET Lite機器からの応答パケットを解析してリストに追加する処理だ。これはそれほどトラブルもなく実装できると思ってるのだが。。


EchonetLite仕様書
https://echonet.jp/wp/wp-content/uploads/pdf/General/Standard/ECHONET_lite_V1_12_jp/ECHONET-Lite_Ver.1.12_02.pdf



ESV:0x62 , EPC:0xD6
UDP Multicast Addr: 224.0.23.0 Port:3610