作ろうとしたアプリ
簡単に言うとアラームを一定の時間までに止められないと連絡先の人に電話をかけちゃうアプリです。迷惑アプリです。
GitHub: Stickers-hackathon/mezamashi-denwa
このアプリの開発は3人で行いました。その進行についても記事にしています。
チーム開発でアプリ作ろうとしたけど失敗した
機能
アラームの追加
アラームをかける時間と電話をかける相手を決めて、それを一つのアラームとして追加します。かける相手は指定することもできますがランダムで指定するということもできます。
アラーム一覧の表示
追加したアラームの一覧を表示します。ここでON/OFF切り替えと削除ができます。
通知と発信
指定された時間になったらアラームが鳴り、止められなかった場合は数秒後に設定された連絡先に電話がかかります。
使った技術
flutterを使いました。開発のメンバーは3人で全員flutterを使うのは初めてだったので、まずはMVP(Minimum Viable Product)の考え方に基づいてコアとなる最低限の機能を洗い出し役割を分担して開発しました。
状態管理
- StateNotifier, freezedを使用
データの保存
- Shared preferencesを使用
通知
- flutter_local_notificationsを使用
- flutter_local_notificationsで指定時刻にローカル通知
連絡先の取得
- contacts serviceを使用。
- 連絡先にアクセスするための権限の確認にpermission handlerを使用
- こちらの記事を参考にして作りました。
完成には至らず...
アラームや連絡先の取得、電話をかける機能などはできたものの、バックグラウンドの状態から電話をかけるのが僕たちの技術ではどうにも実装することができず、ここで断念することになりました。
仕様としては「指定時刻に通知を出して60秒以内に操作をしなければ誰かに電話をかける」というのを目指していました。
flutter_local_notificationsでは通知を出せても他の処理を実行できなかったので、Androidのみ有効ですがandroid_alarm_manager_plusで電話をかける関数を呼び出すことにしました。しかし、これがエラーになってできませんでした。
世の中には多くのアラームアプリが出回っているので技術的には可能なはずですが、Flutterで可能かどうかは分かりません。
PR受け付けます
チームで予定を合わせて開発することは止めましたが、個人で調べたり気になるところを改修する作業は続けます。Flutterのプラグイン頼りで進めてきたので、指定時刻に電話をかける処理についてはKotlin, SwiftのようなOSに合った言語であればまだアプローチできることがあるのではないかと考えています。もしくは仕様を変更して、連絡先から電話番号を使うのではなく、このアプリをインストールした人どうしのインターネット電話にすることも選択肢として考えています。
初めてのflutterアプリ制作ということもあり、完成まで辿り着けなかったのは僕たちの知識不足によるところがあったのかもしれません。もし僕たちの行き場のない思いを鎮魂してくださる方がいれば、PRを受け付けていますのでよろしくお願いします。