ひょんなことからZoomSDK使ったミーティングアプリをSwiftUIで実装するという素晴らしくチャレンジングな開発に関われたので忘備録も兼ねていろいろ書いていこうと思います。
今回はとりあえず動くものをと言うことで、Zoom client SDKのSwiftサンプルと同じレベルくらいに持っていきます。
##つまりポイント①:ライブラリが一元管理できない
Zoomさんの公式ドキュメントでは、FrameworkをXcodeに直入れする方法を丁寧に教えてくれています。
CocoaPodsで入れさせてくれ。。
同じことを思った先人がいたのか、方法はありました。他人のリポジトリを晒していいのか不安なので、気になる人は「zoomSDK CocoaPos」あたりで検索かけてみてください。多分一番上にきます。
##つまりポイント②: unrecognized selector sent to instance
まずは動作確認ということで、UIKitで組まれているclientSDKのサンプルにあるViewController.swift
を適当にリネーム&レイアウトをXibで書き換えてUIViewControllerRepresentable
に噛ませて動かしてみました。結果はタイトル通りです。
どうやらデフォルトのZoomミーティング画面を表示するタイミングでエラーになっているらしい。
Life CycleにUIKit App Delegateを選んでいたので、SceneDelegateが悪そう?と当たりをつけていくと案の定消したら動作しました。こちらの記事が大変参考になりました。
https://qiita.com/koogawa/items/3472398afd4d809148b0
##つまりポイント③:TextFieldを2つ含めたAlartがSwiftUIだけで組めない
clientSDKのサンプルとさよならするために上記のViewController.swift
に実装されていた内容をSwiftUIで実装し直します。しかしここでもまた問題が。
↓のようなミーティングIDとパスワードを入力させるAlartを出したかったのですが、そもそもTextField1つですら現時点で出すことができないという悲しみ。。
こちらの記事がTextField1つの時の実装方法を書かれていたので、参考にさせていただきました。
@Binding var text: String
を配列にして、UIAlertControllerにforEach
で配列分addTextField
してあげたりしたら複数並べられます。
https://www.yururiwork.net/%E3%80%90swiftui%E3%80%91textfield%E4%BB%98%E3%81%8Dalert%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/
##最後に
公式のリファレンスが難読性高かったり、実装例が全然見つからない難しさはありますが、走りきったらいい感じにハイになれそうです。次回はZoom色を削るためにUIのカスタマイズを行いたいと思います。