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

Androidスマホのホーム画面 Android開発

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

私はこれまで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クラスが持つ機能(メソッド)とは?

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

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

onActivityCreate を呼び出したタイミングで「初回起動ではない!」というフラグの設定をします。

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

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

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

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

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

【注意】AppLaunchCheckerクラスが使えない!?

先述にもあるとおり、LauncherActivity(最初に呼び出されるアクティビティ)でしか使えないクラスです。

ですので、「利用規約画面を遷移した際に初回起動フラグの設定をする」ような画面を複数に跨った制御は不可能なようです。

その場合は、SharefPreferencesでアプリ内での共通データとして管理する必要があるようです。

【さらに詳しく】 onActivityCreate を呼び出すタイミング

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

【想定】

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

【動作】

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

このような場合は、onActivityCreate を呼び出すタイミングは、利用規約から遷移するタイミングで呼び出すべきです。

と、通常考えますが、こちらの AppLaunchChecker クラスは、LauncherActivity でしか使用できないので、このような使い方は不可能です。

参考

AppLaunchChecker  |  Android Developers
AppLaunchCheckerでAndroidの初回起動判定 - Qiita
これまでSharedPreferenceで判定していたのですが、AppLaunchCheckerで簡単に制御できたので使ってみました。 参考URL =>
Preferenceの注意事項 | 技術情報 | アプリ関連ニュース | ギガスジャパン
タイトルとURLをコピーしました