【Android】初回起動の判定をするAppLaunchCheckerクラスを使う

スマホを操作する女性_1Androidアプリ開発

初回起動時、アプリの利用規約やチュートリアルを表示したい場面がありますよね。

私はこれまで SharedPreferences を使って判定していました。

サバ缶
サバ缶

アプリの初回起動を
判定できる機能ってないのかな……

と思っていたところ、AppLaunchChecker クラスなるものを見つけました!

数年前からあったようですね。

AppLaunchCheckerクラスとは?

一言でいうと、アプリの初回起動を判定するためのクラスです。

このクラスのコメントを読んでみましょう。

/**
* This class provides APIs for determining how an app has been launched.
* This can be useful if you want to confirm that a user has launched your
* app through its front door activity from their launcher/home screen, rather
* than just if the app has been opened in the past in order to view a link,
* open a document or perform some other service for other apps on the device.
*/

日本語訳:
このクラスは、アプリの起動方法を決定するためのAPIを提供します。
リンクを表示するために過去にアプリを開いた場合だけでなく、ドキュメントを開いた場合よりも、
ユーザーがランチャー/ホーム画面から正面玄関のアクティビティを通じてアプリを起動したことを確認する場合に便利です。
または、デバイス上の他のアプリに対して他のサービスを実行します。

AppLaunchCheckerクラスのコメントより

そのまんまのことが書かれていますね。ひと安心。

AppLaunchCheckerクラスが持つ機能(メソッド)とは?

以下の2つの機能を持っています。

AppLaunchCheckerの2つの機能
  • hasStartedFromLauncher
  • onActivityCreate

hasStartedFromLauncher について

hasStartedFromLauncher のコメントを確認してみましょう。

Checks if this app has been launched by the user from their launcher or home screen since it was installed.

日本語訳:このアプリがインストールされてから、ユーザーがランチャーまたはホーム画面から起動したかどうかを確認します。

AppLaunchCheckerクラスのコメントより

hasStartedFromLauncher を呼び出すと、初回起動かどうかをBoolean(真偽値)で返すようです。

初回起動の場合は「False」、初回起動以外なら「True」を返します。

onActivityCreate について

onActivityCreate のコメントを確認してみましょう。

Records the parameters of an activity’s launch for later use by the other methods available on this class.

日本語訳:このクラスで使用可能な他のメソッドで後で使用できるように、アクティビティの起動のパラメーターを記録します。

AppLaunchCheckerクラスのコメントより

onActivityCreate を呼び出すと、そのタイミングで「初回起動ではないよ!」というフラグの設定を行うことが可能です。便利ですね。

【まとめ】 AppLaunchCheckerクラスの具体的な使い方

上記で説明したように、2つのメソッドを使って初回起動判定に役立てます。

① 起動時、hasStartedFromLauncher で初回起動状態を取得する
② 初回起動かどうか判定する(if文)
③ onActivityCreate を使って、「初回起動ではない」状態に設定する

主にこの3ステップになると思います!

便利なクラスがあるもんですね〜。

【注意点】 onActivityCreate を呼び出すタイミング

先述にもある通り「ユーザーがランチャーまたはホーム画面から起動したかどうかを確認します」と記述されています。

つまり、このメソッドが使えるのは初回起動のActivity内のみなんです!

MainActivity など最初に呼ばれるActivityの「onCreate」で onActivityCreate を呼び出してしまうと、下記のような状態になります。

【想定】
初回起動時は、利用規約画面を表示する。
初回起動以外であれば、トップ画面を表示する。
しかし、利用規約のチェックボックスにチェックを入れ、
利用規約に同意するボタンを押下していなければ、初回起動と同等に扱う。

【動作】
利用規約などはチェックボックスに入力してもらう画面でアプリをキルすると、
再起動時に初回起動判定がされず、
利用規約画面が表示されずトップ画面が表示される。

onActivityCreate を呼び出すタイミングは、利用規約から遷移するタイミングで呼び出すべきですよね。

しかし、このような画面を跨ぐ場合は、AppLaunchCheckerクラスが使えません。
SharedPreferencesを使って実装するのが得策となりますね。

参考記事

AppLaunchChecker  |  Android Developers
AppLaunchCheckerでAndroidの初回起動判定 - Qiita
これまでSharedPreferenceで判定していたのですが、AppLaunchCheckerで簡単に制御できたので使ってみました。参考URL => …
Preferenceの注意事項 | アプリ関連ニュース | ギガスジャパン
AndroidのPreferenceは結構な頻度で使用するかと思います こちらの記事でも紹介したように、アプリ内で単純なデータを保持するのには便利なクラスとなっています しかし、使っていく中で注意する事もあるので紹介して | ギガスジャパン
タイトルとURLをコピーしました