😺

【Flutter】Android向けSDKとの接続をMethodChannelで実現した話

に公開3

Discussion

Shin.WShin.W

コメント失礼致します。
医療系プロダクト開発のPdMをしているものです。
医療機器をRFIDで読み取る機能を実装しようと考えております。

ユーザーはiOSもいればandroidもいるので、flutterを使って、一つのアプリで両方に対応できるUHF帯のRFID読み取り機能を作りたいと考えております。

質問としてはshukubotaさまが今回作られたものの延長でiPhoneでも動くようにすることはできるものでしょうか?
ご相談させていただけましたら幸いです。

よろしくお願い致します。

shukubotashukubota

コメントありがとうございます!

>shukubotaさまが今回作られたものの延長でiPhoneでも動くようにすることはできるものでしょうか?

iOS用のSDKが用意されているRFIDリーダーであればできると思います!(逆にSDKが用意されていなければ厳しいと思います)

記事で紹介したRFIDリーダーの場合、iOS用のObjective-Cで書かれたSDKがあるので、SDKとのやり取りをする処理はnative層のObjective-Cで書き、あとはandroidと同じようにFlutterのmethod channelの仕組みに乗ってdart側とデータのやり取りをすればできます。https://docs.flutter.dev/development/platform-integration/platform-channels?tab=type-mappings-obj-c-tab

この場合、

  • iOSのnative層でSDKと接続するハンドラー等をObjective-c、swiftで実装
  • Androidのnative層でSDKと接続するハンドラー等をJava, kotlinで実装
  • dart側でiOS, android用のmethod channelを別々に用意する。platformがiOS, androidかを判定して、よぶchannelを条件分岐させる

という手順が少なくとも必要なように思えます。
すみませんがiOSに関しては実際に書いたことはないので、documentや他記事を読んだ範囲での範囲になりますができそうです。
(ちなみにReactNativeでは method channelに相当するnative層とのやり取りはiOSでもできることは確認しました。)

Shin.WShin.W

大変ご丁寧に返信頂戴しましてありがとうございます。調査させていただきます!また質問等させていただくかもしれませんがよろしくお願い致します。