
Androidとiosの両デバイス向けにフレームワークFlutterでのアプリ開発。
ベースとなるDart言語は慣れれば問題ないけど、それまでの理解の壁が少々高い…
レスポンシブとかも画面幅とって計算式あてはめたり、通知機能を実装するためのFirebaseとの連携する際も知りたい部分がブラックボックスになっていたり、大変!
そんな風に感じました。(おそらく、やり方を知らないだけ…)
Flutter開発する前に考慮するべき前提
Flutter開発のハードルを下げるハイブリッドアプリケーション
Flutterの情報は比較的出回っているように見受けられます。なので、凝ったのでもなければ簡単に実装できると思います。
でも、時間においても学習コストはさきたくないなら、Webページをアプリの画面にすることができます。
Webページのスマホ画面にあたる(media and screen(max-width:smartphone width){})部分を画面として表示できるようです。
ネイティブ開発よりWebページのほうがデザイン調整が簡単
以下、デバイスの横幅と縦幅を取得するコード
width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height
レスポンシブをサポートしてくれるWidgetもFlutterには存在していますが、Widget同士の組み合わせでうまくいかない場合もあるのでこちらのコードで計算式を作り、横幅を調整して、多数のWidgetごとにスマホ画面が変化しても対応できるようにしていました。
Webではこの点が非常に簡単です。
プラグインが豊富(ネイティブで開発)
http通信用のパッケージや機器操作や設定を変化させるようなプラグインが豊富にあるので、実現したいことが短時間で終わることができます。
開発環境のいいところで開発する
使っていた開発環境にAndroidStudioがありましたが、メモリ容量が無いとエミュレータ起動しながら、ビルドするたびにパソコンが死にます。
またios用にアプリを作るにはMAC一台は必ず必要なので注意が必要です。Xcodeというアプリを使うのでこれが使えるMacを購入してください。
FirebaseとFlutterとの連携の難点
ネット上のソースが古い
ネット上の情報が古いことが多くて、試行錯誤に時間がかかります。
情報として役立だったのはstackoverflowのような海外のQ&Aのほうがでした。
Firebaseもプラグインの一つなので、Flutter用のプラグイン公式サイトpub.devでExamplesにならった方法で書いていくほうが無難です。
Androidとiosの間の通知機能の違い
二間のOSは通知を処理したり、受取方法が違うので、同じ機能を実現しようとするとFirebaseのプロパティを捜索し続ける必要があります。自分としてはProrityとnotification.Titleとnotification.BodyとDataをjson構造でかけたら、充分かなと思うのですが、オプションがたくさんあるので苦労します。
特にバックグラウンド状態(アプリ起動をしているが実際にアプリは開いていない)にしているとAndroidではイベントが走るが、iosではそうではないときがあります。この点について、content-Avalableを有効にするとバックグラウンド用のイベントを発生させられます。
iosの準備の手間
iosで通知を送ろうとすると手間も費用も掛かります。appledeveloperのアカウントを準備する必要があります。このアカウント開設後にPush通知を送る設定ができます。
また基本的にエミュレータで通知受信ができないので、実機が必要になります。iosバージョンごとに確認したい場合、不便になります。
コメント