【Kotlin】そのアプリが、フォアグラウンドになったとき、フォアグラウンドであるかどうか、を検知・検出する

現在、絶賛?キャンペーン中ですかね。

アプリ起動時広告は、アプリの読み込み画面を収益化することを望むパブリッシャー様を対象とした広告フォーマットです。この広告は、ユーザーがアプリをフォアグラウンドに移動すると表示され、いつでも閉じることができます。

アプリ起動時広告は、アプリの読み込み画面を収益化することを望むパブリッシャー様を対象とした広告フォーマットです。この広告は、ユーザーがアプリをフォアグラウンドに移動すると表示され、いつでも閉じることができます。

👉 アプリ起動時広告  |  Android  |  Google Developers 

眺めてましたよ、おぼつかないサンプルコードを。

複数のコールバックたちに苦しみながらサンプルコードを容赦なく大幅改変していく様子が、API設計の難しさを表してると思います。

今回は、

「アプリがフォアグラウンド(可視状態)になったら何らかの処理をする。」

というやつ関連を抽出しておきます。


class MyApplication : Application(), Application.ActivityLifecycleCallbacks, LifecycleObserver {

  override fun onCreate() {
    super.onCreate()

    ProcessLifecycleOwner.get().lifecycle.addObserver(this)

  }


  @OnLifecycleEvent(Lifecycle.Event.ON_START)
  fun onMoveToForeground() {
    // Show the ad (if available) when the app moves to foreground.

    // do something

  }

👉 googleads-mobile-android-examples/MyApplication.kt at master · googleads/googleads-mobile-android-examples 

Deprecated なのを置き換えて、継承から外します。


ProcessLifecycleOwner.get().lifecycle.addObserver(
  object : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
      // do something
    }
  }
)


便利ですねこれ。

あと、

「アプリがフォアグラウンド(可視状態)かどうか。」

というやつ。


val foreground: Boolean
  get() = ProcessLifecycleOwner.get().lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)

ここは、「RESUMED」でいいのか知らんが、試せばいいか。

👉 DefaultLifecycleObserver や LifecycleEventObserver の使い方 


build.gadle* に 'android-library' や 'kotlin-kapt' があったらやばい!

あるライブラリツールに Jake が反応しています。


👉 (1) Sam EdwardsさんはTwitterを使っています 「Looks like @AutonomousApps used "com.autonomousapps.dependency-analysis" for https://t.co/9rXv9Yb5tm But then there is "java-library", "kotlin-kapt", etc, etc. 🤔 https://t.co/yUFrUc2KLc」 / Twitter 

私的には、android-library はなかったものの kotlin-kapt はありました。

gradle 周りの記述は、どうしてもメンテが雑になっていたりします。

GitHub で検索してみます。

結構ヒットします。


👉 Search · android-library 

kotlin-kapt
👉 Search · kotlin-kapt 

つまり、こういうことでしょうかね。


plugins {
    id 'com.android.application'
-   id 'kotlin-android'
-   id 'android-library'
-   id 'kotlin-kapt'
+   id 'org.jetbrains.kotlin.android'
+   id 'org.jetbrains.kotlin.kapt'

あとは、不要な記述を消し去りたいのですが !

そんなツールを探していたのですが 😅😅😅


【三井住友カード(NL)】決済方法 「クレジットカード現物」vs「iD」vs「VISAタッチ」どれが得なのか。【ApplePay / GooglePay】

2022年3月1日から GooglePay でも VISAタッチ 決済が可能になりました。

Android端末でも iPhone ApplePay と同じようにクレジットカード現物なしに決済ができるようになってます。

これまでは、GooglePay は「iD」経由のタッチ決済しかありませんでした。


しかし、これからは、クレジットカード直にVISAでタッチ決済できます。

ポイント5%です。

Visaの Google Pay™ 対応記念!最大1,000円分プレゼントキャンペーン|クレジットカードの三井住友VISAカード
👉 Visaの Google Pay™ 対応記念!最大1,000円分プレゼントキャンペーン|クレジットカードの三井住友VISAカード 
👉 Google Pay™ (グーグルペイ)の使い方徹底解説!設定方法や利用可能店舗も紹介 | 【ヒトトキ】三井住友カード 

決済方法の選択肢が多くなってますが、ポイント5%は、今や「タッチ決済」のみです。

いつもの利用でポイント最大5%還元!|クレジットカードの三井住友VISAカード
👉 いつもの利用でポイント最大5%還元!|クレジットカードの三井住友VISAカード 

ポイント 5% をゲットするには、以下2つののどちらかとなります。

「カード現物」を「タッチ」する。

「iPhone/Android 端末(ApplePay/GooglePay)」を「VISAタッチ決済」として「タッチ」する。

ポイント「5%」のつもりが「2.5%」のありがちな失敗

気をつけなければいけないパターンがあります。

以下では、ポイント2.5%となってしまいます。

「カード現物」を店員に渡したらタッチせずに「スライド(磁気ストライプ決済)」や「差し込み(ICチップ決済)」される。

ICチップ取引:
クレジットカードを決済機に挿入後、すこし時間経過後に4桁の暗証番号を押して承認されるのを待つ

磁気ストライプ取引:
店員にカードを渡すか、手元の決済機にカードをスライドさせることでカードを認識させ、すこし時間経過後にレシートやタブレット端末にサインを入力する

👉 あまりにもVisaのタッチ決済の認知度が低くて、店員とまぁまぁトラブルになる件!利用前に怒られることもあれば、使って怒られることも。 - クレジットカードの読みもの 

「iPhone/Android (ApplePay/GooglePay)」を「iD」経由で「タッチ」してしまう。

コンビニレジでは、「クレジットカード」を選んでからカードやスマホ端末を「タッチ」します。
セブンレジ あまりにもVisaのタッチ決済の認知度が低く

イオンなどのスーパーのレジでも同様です。

イオン レジ あまりにもVisaのタッチ決済の認知度が低く

注意するのは、レジにたってる「店員の操作」と「iD選択ボタン(を押さないこと)」です。

ゲットしたポイントは、私は、月ごとの支払金額から、1ポイント1円 でキャッシュバックとして相殺してもらってますがギフト券とか他にも変換方法はあるようです。

👉 キャンペーン・ポイント|クレジットカードの三井住友VISAカード