Androidアンインストール追跡の設定

ドキュメント

Androidアンインストール追跡の設定

Android アプリのアンドロイドアンインストールを追跡し、ユーザー維持率を測定、低品質なトラフィックソースを特定、 Firebase Cloud Messaging と Singular SDK の統合を活用してキャンペーンパフォーマンスを最適化します。

Firebase移行必須:FirebaseはレガシーHTTP APIを廃止し、 2024年7月22日にサービスを終了しました。 すべての実装はHTTP v1 APIを使用する必要があります。 以下のHTTP v1設定手順を参照してください。


概要

アンインストール追跡の仕組み

SingularはFirebase Cloud Messaging経由でサイレントプッシュ通知を送信し、配信応答を監視することでアプリのアンインストールを検出します。これにより、アプリがデバイスにインストールされたままかどうかを判断します。

技術的なプロセス:

  1. トークン登録:Singular SDKがFCMトークンを Singularサーバーに登録
  2. サイレント通知:Singularは登録済みデバイスに 定期的なサイレントプッシュ通知を送信
  3. 配信フィードバック:FCMが配信成功/失敗を報告
  4. アンインストール検知:配信失敗はアプリのアンインストールを示す
  5. イベント記録:アンインストールイベントを元のインストールソースに帰属させる

要件

  • SDKバージョン:アンインストール追跡にはAndroid SDK 7.0以上が必要
  • Firebase設定:Cloud Messagingが有効な アクティブなFirebaseプロジェクト
  • Google Play Services:デバイスにGoogle Play Servicesがインストールされていること
  • アプリ更新:アンインストール追跡が有効化された 最新版アプリをユーザーがインストール済みであること
  • 権限:Android 13 以降では、FCM トークン生成に明示的な通知権限が必要

重要な考慮事項

主なポイント:

  • 方法論の違い:Singularのアンインストール追跡はGoogleの組み込みレポートとは異なります。GoogleはOSから直接アンインストールを報告しますが、SingularはFCM配信フィードバックを使用します。プラットフォーム間で数値が異なる場合があります。
  • アトリビューション維持:アンインストールは 元の帰属リンクを削除せずにイベントとして追跡されます。ユーザーは 複数回アンインストールと再インストールを行う可能性があり、その結果 アンインストール率が100%を超える場合があります。
  • バッチ処理:アンインストール検出はバッチベースで、 FCM応答フィードバックに依存します。アンインストールデータが Singularダッシュボードに反映されるまで最大24時間かかる場合があります。
  • ネットワーク依存性:サイレントプッシュ通知には アクティブなネットワーク接続が必要です。長期間オフラインのデバイスでは アンインストール検出が遅延する可能性があります。

ドメイン制限付き共有

Google組織で ドメイン制限付き共有 が有効化されている場合、アンインストール追跡機能を有効にするには Singular組織へのアクセス権を付与してください。

必要な設定:Singularの組織IDを ドメイン制限付き共有ポリシーの 許可値リストに追加してください。

設定手順:

  1. 組織ポリシーへのアクセス:Google Cloud Console で [組織ポリシー] ページに移動します
  2. リソースの選択:ポリシーが設定されている 組織を選択
  3. 制約条件の検索:「ドメイン制限付き共有」制約条件を特定
  4. ポリシーの管理:「ポリシーを管理」ボタンをクリック
  5. Singular 組織の追加:[ポリシー値] で [カスタム] を選択し、以下を追加:
is:principalSet://iam.googleapis.com/organizations/626787461583

これにより、Singularのサービスアカウントがアンインストール検出用のFCM通知を送信できるようになります。 HTTP v1 APIの設定(推奨)


HTTP v1 API 設定(推奨)

Firebase Cloud Messaging HTTP v1 API を使用してアンインストール追跡を設定します。 OAuth 2.0アクセストークンによるセキュリティ強化と、クロスプラットフォーム メッセージングのサポート強化が特徴です。

HTTP v1 を使用する理由:v1 API は、 短命なアクセストークンによるセキュリティ強化、 効率的なクロスプラットフォームカスタマイズ、 新機能に対する継続的な Firebase サポートを提供します。 レガシー HTTP API は 2024年7月22日に終了しました。

ステップ1: Android SDK 7.x+を統合

SDKバージョンの更新

アプリがSingular Android SDKバージョン7.0以降を使用していることを確認してください。 Singular SDKをまだ統合していない場合は、アンインストール追跡の設定前に Android SDK統合ガイドを完了してください。

完全な統合ガイド: Android SDK 統合ガイド


ステップ2: AndroidManifest.xmlのFCM設定確認

FCMサービスと権限の確認

アプリがFirebase Cloud Messagingと既に統合されていること、 およびAndroidマニフェストでFCMメッセージを受信するための FirebaseMessagingServiceが宣言されていることを確認してください。

XML
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.package">

    <!-- FCM Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

    <application>

        <!-- App Firebase Messaging Service -->
        <service
            android:name=".MyFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

    </application>

</manifest>

重要: `.MyFirebaseMessagingService ` を、FirebaseMessagingService を継承するクラスの完全修飾名で置き換えてください。 アプリ内で `com.google.firebase.MESSAGING_EVENT ` インテントを処理するサービスは1つだけにしてください。

詳細なマニフェスト設定: Firebase FCM Android マニフェストガイド


ステップ3: Firebaseプロジェクトの作成

Firebaseの初期化

Firebaseプロジェクトを設定し、Singular設定に必要なプロジェクトIDを取得します。

  1. Firebase コンソールを開く: Firebase コンソールに移動
  2. プロジェクトの作成:アプリ用に新しいFirebaseプロジェクトを選択または作成
  3. プロジェクト設定の場所:歯車アイコン → [プロジェクト設定] をクリック
  4. プロジェクト ID をコピー:[全般] タブからプロジェクト ID をコピー (後ほど Singular で入力します)

Firebase Project Settings

Firebase Project ID


ステップ4: Firebase Cloud Messaging APIを有効化

HTTP v1 APIを有効化

プロジェクトで最新のHTTP v1プロトコルを使用するため、Firebase Cloud Messaging API (v1)を有効化します。

  1. Cloud Messaging への移動:Firebase コンソールで、 プロジェクト設定 → Cloud Messaging タブに移動
  2. APIを有効化:Firebase Cloud Messaging API (V1) の横にある「有効化」をクリック
  3. 有効化の確認:API ステータスが「有効」と表示されていることを確認

Enable FCM API

重要:Firebase Cloud Messaging API (V1) は従来の Cloud Messaging API とは異なります。正しい v1 バージョンを有効化してください。


ステップ5: カスタムIAMロールの作成

サービスアカウントの権限設定

アンインストール検出用のFCM通知をSingularが送信できるよう、特定の権限を持つカスタムIAMロールを作成します。

  1. IAMにアクセス:Firebaseプロジェクト設定 → サービスアカウント → サービスアカウント権限の管理
  2. ロールを開く:左ナビゲーションメニューで「ロール」を選択
  3. ロールの作成:「ロールを作成」ボタンをクリック
  4. ロールの詳細設定:
    • タイトル:Singular Uninstall Tracking
    • ID:singular_uninstalls
    • ロール起動ステージ:General Availability

Create Custom Role


必要な権限の追加

カスタムロールにFCMメッセージ送信権限を付与します。

  1. 権限の追加:「権限を追加」ボタンをクリック
  2. 権限をフィルタリング:「Firebase Cloud Messaging API 管理者」を検索
  3. 権限を選択:チェックを入れる cloudmessaging.messages.create
  4. ロールに追加:「追加」ボタンをクリック
  5. ロールの作成:「作成」をクリックしてロール作成を完了

Add Permission


ステップ6: Singularサービスアカウントの割り当て

Singularへのアクセス権を付与

アンインストール追跡操作を許可するため、Singularのサービスアカウントにカスタムロールを割り当てます。

  1. IAMページを開く:左ナビゲーションメニューで「IAM」を選択
  2. アクセス権の付与:[権限]タブの「アクセス権を付与」ボタンをクリック [新しいプリンシパル]フィールドに以下を入力:
  3. プリンシパルを追加:「新しいプリンシパル」フィールドに以下を入力:
    singular-uninstall-tracking@singular-uninstall-tracking.iam.gserviceaccount.com

Grant Access

Add Principal


カスタムロールの割り当て

前の手順で作成した「Singular アンインストール追跡」ロールを選択

  1. ロールの選択:「ロールの割り当て」で「Singular アンインストール追跡」を検索し選択
  2. 設定の確認:設定が下記のスクリーンショットと一致していることを確認
  3. 保存:「保存」ボタンをクリックして権限を適用

Assign Role

最終設定:

Final IAM Configuration


ステップ7: Singularアプリ設定の構成

SingularにプロジェクトIDを追加

アンインストール追跡を有効にするため、 Singularのアプリ設定にFirebaseプロジェクトIDを入力してください。

  1. Singularアプリを開く: Singularアプリページに移動
  2. アプリを選択:リストからAndroidアプリを選択
  3. 詳細設定:詳細設定セクションまでスクロール
  4. アンインストール追跡:アンインストール追跡の設定項目を探します
  5. プロジェクトIDの入力:ステップ3で取得したFirebaseプロジェクトIDを貼り付け
  6. 保存:設定を適用するには「保存」をクリック

Singular Project ID Configuration

検証:保存後、SingularがプロジェクトIDとIAM権限を検証します。 検証に失敗した場合は、Firebaseのサービスアカウント設定を再確認してください。


アンインストール追跡のテスト

更新版アプリを本番環境にリリースする前に、 アンインストール追跡が正しく設定されていることを確認してください。

テスト手順

検証手順

  1. テストビルドのインストール:アンインストール追跡機能を有効にしたアプリを テストデバイスにデプロイ
  2. アプリ起動:アプリを開き、SDK初期化とFCMトークン登録をトリガーする
  3. トークン登録の確認:SingularとのFCMトークン登録成功を SDKログで確認
  4. バッチ処理待機:Singularが最初のサイレント通知を送信するまで 24~48時間待機
  5. アプリのアンインストール:テスト端末からアプリを削除
  6. ダッシュボードを監視:24~48時間後にSingularダッシュボードで アンインストールイベントを確認

テストのタイムライン:アンインストール追跡はバッチ処理ベースであり、 アンインストールの検出と報告には最大48時間かかる場合があります。この 遅延は想定される動作です。


SDKログ検証

AndroidのlogcatでSingular SDKメッセージを確認し、設定が適切であることを確認してください。

期待されるログメッセージ:

D/SingularSDK: FCM token registered successfully
D/SingularSDK: Uninstall tracking enabled
D/SingularSDK: Token sent to Singular servers

よくある問題

問題 原因 解決策
FCMトークンが生成されない Firebaseの設定が正しく行われていない google-services.jsonapp/ディレクトリにあることを確認し、build.gradleでFirebaseプラグインが適用されていることを確認してください
ログに「Permission denied」エラーが表示される IAMロールが正しく割り当てられていない Firebase IAMでSingularサービスアカウントに「Singularアンインストール トラッキング」ロールが付与されていることを再確認してください
トークンがSingularに到達していない ネットワーク接続の問題かSDKが初期化されていない アプリのインターネット権限を確認し、FCMトークン登録前にSingular SDKが初期化されていることを確認
アンインストールがダッシュボードに表示されない バッチ処理の遅延または経過時間が不足している アプリアンインストール後、48時間経過するまで待機してから調査を 実施してください
SingularでのAPI検証失敗 FirebaseでHTTP v1 APIが有効化されていない Firebase Cloud Messaging設定でCloud Messaging API (V1)が有効化されているか確認 レガシーHTTP API(非推奨)

レガシーHTTP API(非推奨)

レガシーHTTP APIは2024年7月22日に停止されました。すべての実装は HTTP v1 APIへ移行する必要があります。

廃止済み:レガシーHTTP APIは機能しなくなりました。 レガシーサーバーキー設定を使用している場合は、上記の手順に従い 直ちにHTTP v1 APIへ移行してください。

移行が必要

現在レガシーHTTP APIをサーバーキーと送信者ID構成で使用している場合、以下の移行手順に従ってください:

  1. 現在の設定の確認:Singularアプリ設定に「プロジェクトID」ではなく「サーバーキー」フィールドが表示されているか確認
  2. HTTP v1設定の手順に従う:上記の 「HTTP v1 API設定」セクションの全手順を完了してください
  3. アプリ設定の更新:Singular設定内のサーバーキーを FirebaseプロジェクトIDに置き換える
  4. 実装テスト:新しいv1 API設定でアンインストール追跡が機能することを確認
  5. 更新版のリリース:更新したアプリを本番環境ユーザーにデプロイ

移行ガイド: Firebase HTTP v1 API 移行


HTTP v1 APIの利点

  • セキュリティ強化:静的なサーバーキーの代わりに 短寿命のOAuth 2.0アクセストークンを使用
  • クロスプラットフォーム対応の強化:Android、iOS、Web向けに統一されたメッセージ構造
  • プラットフォーム固有のオーバーライド:単一リクエストで プラットフォームごとに通知動作をカスタマイズ
  • 将来性:Firebaseによる継続的なサポートと新機能は v1でのみ提供
  • エラー処理の改善:トラブルシューティングのための詳細なエラー応答

アンインストールデータの分析

Singularレポートのアンインストールデータを活用し、 キャンペーンパフォーマンスの最適化とトラフィック品質の問題を特定。

利用可能な指標

アンインストール追跡指標

  • アンインストール数:検出されたアプリのアンインストール総数
  • アンインストール率:インストール後にアンインストールに至った割合
  • アンインストールまでの日数:インストールから アンインストールまでの平均経過時間
  • ソース別アンインストール:キャンペーン、パブリッシャー、クリエイティブ別の アンインストール内訳
  • コホート分析:異なるユーザー層における アンインストールパターン

ユースケース

キャンペーン最適化:

  • アンインストール率の高い低品質トラフィックを誘導するキャンペーンの特定
  • 異なるトラフィックソース間のアンインストール率を比較
  • 予測ユーザー継続率に基づく入札戦略の最適化

不正検知:

  • インストール不正を示す異常なアンインストールパターンを検知
  • 不自然に高いアンインストール率を示すパブリッシャーをフラグ付け
  • ボットトラフィックの兆候としてアンインストールまでの時間を監視

ユーザー継続率分析:

  • 時間の経過に伴うアプリの定着率とエンゲージメントを追跡
  • アンインストールとアプリ更新・機能リリースの相関関係を分析
  • ユーザー離脱に寄与する要因を特定

ベストプラクティス

最適化戦略

  • ベンチマークの設定:キャンペーンタイプ別に許容アンインストール率の閾値を設定 トレンドの監視:アンインストール率の経時変化を追跡し、季節的なパターンや異常値を特定
  • トレンドの監視:季節的なパターンや異常値を特定するため、 アンインストール率を時間軸で追跡する
  • セグメント分析:ユーザー属性・地域・デバイス別アンインストール率を比較
  • アトリビューション期間:キャンペーン効果評価時に アンインストール発生時期を考慮
  • 品質スコアリング:アンインストール率を トラフィック品質スコアリングモデルに組み込む