dely Tech Blog

クラシル・TRILLを運営するdely株式会社の開発ブログです

広告インスペクタを使ってメディエーションの接続を確認する

こんにちは、クラシルAndroidエンジニアのもとはしです! 最近はひたすら広告周りの改善をしてます。

今回はGoogle Mobile Ads SDKで用意されている広告インスペクタを使って、メディエーションとの接続を確認できるようにしてみたいと思います!

なぜ導入したのか?

新たにメディエーションを追加したとき、皆さんはどのように接続確認をしているでしょうか? 自分のチームでは広告のAdChoiceアイコンを確認したり、管理画面上で追加したメディエーションからの配信を確認することで接続を担保しています。

とはいえ、新しくメディエーションを追加する度に配信設定者 / 実装者間でコミュニケーションを取るのは少々手間ですので、サクッとアプリ内で接続を確認したいなと思いました。

そこで広告インスペクタの出番です

広告インスペクタとは?

公式ドキュメントより

広告インスペクタは、承認済みのデバイスにおいて、モバイルアプリ内で広告リクエストのテストを直接分析できるアプリ内オーバーレイです。

上記ドキュメントの記載通り、メディエーションの接続確認だけでなく、エラーの特定にも使えたり入札結果を覗き見できたりします。便利😻

導入手順

テスト広告モードに切り替える

広告インスペクタを使用するには、デバイスをテストデバイスとして追加する必要があります。

しかしながら、管理画面上で担当者のデバイスを追加するのは面倒ですし、テストモードの切り替えもスムーズにやりたいところです。少し調べたところ、ANDROID IDをmd5ハッシュ化してuppercase()することで同一の文字列が得られました🙌

@SuppressLint("HardwareIds")
private fun getTestAdDeviceId(): String {
    val deviceId = Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID)

    val digest = MessageDigest.getInstance("MD5")
    digest.update(deviceId.toByteArray())
    val messageDigest = digest.digest()

    val hexString = StringBuffer()
    for (i in messageDigest.indices) {
        var hex = Integer.toHexString(0xFF and messageDigest[i].toInt())
        while (hex.length < 2) hex = "0$hex"
        hexString.append(hex)
    }
    hexString.toString().uppercase()
}

続いてsetTestDeviceId()を使用することで、テストモードに切り替わります。

if (isYourAppDebug) {
    val testDeviceId = getTestAdDeviceId()
    val configuration = RequestConfiguration.Builder().setTestDeviceIds(listOf(testDeviceId)).build()
    MobileAds.setRequestConfiguration(configuration)
}

テストモードにすると、以下のようなテスト広告が配信されるようになります。

広告インスペクタを開く

テストモードにしたら、あとはMobileAds.openAdInspectorを呼ぶだけです。

MobileAds.openAdInspector(context) { error ->
    error?.let {
        // show snack bar or do something
    }
}

ラムダ内にはエラー発生時の処理を記述できます。 テストモードが有効になっていないと、エラーが発生しインスペクタを開けませんでした。

終わりに

今回は広告インスペクタの表示方法を解説してみました!

クラシルではテストモードの切り替えと広告インスペクタを社内配布用のアプリに組み込み、実装者だけでなく配信設定者でもメディエーションの接続確認ができるようにしています。

メディエーションの接続確認だけでなく入札結果の確認色々な機能が用意されているので、導入されていない方はぜひ導入してみてはいかがでしょうか?

最後に

クラシルではAndroidエンジニアを大募集しております!

クラシルAndroidメンバーってどんな人がいるの?と気になる方は以下のタグからインタビュー記事が見られますので、ぜひご覧ください!

#クラシルAndroidチーム

実際にメンバーと話してみたいと思ってくださった方にはカジュアルにお話しする場も設けられますので、どうぞお気軽にお声かけください 🙌 下記の採用リンクから応募いただけますのでお願いします! dely.jp