ブログ詳細

タイトル: リリースまでのエピソード🌹Android版

  • 投稿日時: 2023-05-16 16:39

  • カテゴリ: プログラミング

アラーム実行イメージ
こんにちはおせです!!
ようやく『わんにゃんタイム』の修正が落ち着いたところです(*´꒳`*)
私たちに使ってみた感想や改善点をお寄せくださった皆さま、ありがとうございました💕

今日は、『わんにゃんタイム』Android版開発に関してハマったことや反省していることを記録しようと思います。

・開発始め〜念願のふいうち実装に向けて〜
・こんなことでハマるとは
・リリースが見えてきた…!はずが

大まかにこんなエピソードをご紹介します!


まずは遡ること2022年冬、おせは念願の「ふいうち」機能の実装に迷走しまくっていました!
ふいうちわんにゃんモードはKotlinのAlarmManagerという仕組みを使って実装しています。(クリックすると公式ドキュメントへ飛びます✈️)
名前の通り、よくあるアラームの機能ですね⏰
これはアラームに限らず何か定期実行したいことがあるときに使えるものです💡
ただの定期実行ではなくちょっと工夫して(じゃないとふいうちじゃなくなっちゃう😂)、良きタイミングでニャーンと鳴くようにしました。
Android版では一旦アプリを終了しても、電源を入れ直してもアプリからOFFにしない限りずっとふいうちが続くようになっています。

いやーハマったハマった😂
ハマったというか、「コレでいいのかっ!?!?」となかなか確信が持てなかったのです。

何個もサンプルアプリを作成し、AlarmManagerや単純なタイマーでの実装等いろいろ試行しました。
AlarmManager⇄その他の方法 で何度も比較検討し、AlarmManagerが良い使用感になると思ったのでコレで完成を目指すことにしました!

アプリを終了してもONのままにできること、そもそもバックグラウンドで働かせることが前提の機能であるので負荷的にも問題なさそう、というのが理由です。

しかーし!電源を切ってしまうとアラームが無効になってしまうので、端末を再起動したとき状況に応じてアラームをセットし直す必要があります。端末が起動したことを検知して処理をしてくれる処理も用意しています。これは調べるとすぐに情報が出てきてあまり難しくないですよ🥰


簡単にですがちょっとサンプルのコードを載せます。
アラームに必要なのはアラームのきっかけとなるアイテム(だいたいボタンだと思います)を制御しているクラスと、レシーバーと言ってここでは「おい!アラームの時間だぞ!」というのを察知して処理を実行してくれるクラスです。

まずこちらのクラスで、ボタンを押したときにアラームをセットします。
MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val alarmSetButton: Button = findViewById(R.id.button)
        
        //アラームスタートボタンをタップするとアラームをセットする
        alarmSetButton.setOnClickListener{
            val alarmMgr: AlarmManager = this.getSystemService(Context.ALARM_SERVICE) as AlarmManager
            val alarmIntent: PendingIntent = Intent(this, AlarmReceiver::class.java).let { intent ->
                PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)
            }
        //どんなアラームをセットするか(ここでは1分後に一度限り実行)
            alarmMgr.set(
                AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime() + 60 * 1000,
                alarmIntent
            )
        }
    }
}

続いてMainActivity.ktでセットしたアラームを検知して処理を実行するクラスです。
AlarmReceiver.kt
class AlarmReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        // アラームが発動するときに何が起こるか
              Toast.makeText(context,
                 "アラームによる処理が実行されました。",
                 Toast.LENGTH_LONG).show()

    }
}
これをセットで用意することで画像のような処理が可能となります🐈
アラームと言っても音を鳴らすだけではないので、いろいろ使ってみてください🦩





年明けに詰まってしまったのはスプラッシュ画面(アプリの起動画面)、それからAndroid13以降へ向けた通知許可のポップアップウィンドウ(よくある”通知を許可しますか?”というやつですね💡)の実装でした!
スプラッシュ画面はAndroid12を境に仕様が分かれていて、通知許可に関してはAndroid13から規則が新しくなって…というふうにつけたい機能によって場合分けが細かいです。
うーん、Androidはなかなか複雑です!!




そんなこんなでリリースが見えてきた…のですが、
準備不足すぎました💔
アプリの実装でいっぱいいっぱいだったので、Googleへのディベロッパー登録が後回しになっていました😱

アプリを審査に提出してリリースするためにアプリ開発者としてGoogleに登録するのですが、登録料の支払いや本人確認の手続き等がかなりめんどくさい厳しいです。
開発の終盤でここはかなりバタバタしました(恥ずかしい)


アプリを作ってリリースするぞ!!と思ったら、まず最初に『俺は開発者だ!!!!』とアカウントを用意するのが良いと思います。

やっと完成だ〜〜〜審査だ〜〜リリースだ〜〜〜〜〜〜〜!!
と舞い上がっているときに足止めを喰らってしまいます😱



以上、悩んでいた点や反省点をご紹介しました。
でも無事にリリースできても油断できません😤
ユーザー満足度をより高められるように努力です💪

ではでは〜〜🐕🐈

戻る この執筆者の記事へ

👆