Androidアンインストール追跡の設定
Android アプリのアンドロイドアンインストールを追跡し、ユーザー維持率を測定、低品質なトラフィックソースを特定、 Firebase Cloud Messaging と Singular SDK の統合を活用してキャンペーンパフォーマンスを最適化します。
Firebase移行必須:FirebaseはレガシーHTTP APIを廃止し、 2024年7月22日にサービスを終了しました。 すべての実装はHTTP v1 APIを使用する必要があります。 以下のHTTP v1設定手順を参照してください。
概要
アンインストール追跡の仕組み
SingularはFirebase Cloud Messaging経由でサイレントプッシュ通知を送信し、配信応答を監視することでアプリのアンインストールを検出します。これにより、アプリがデバイスにインストールされたままかどうかを判断します。
技術的なプロセス:
- トークン登録:Singular SDKがFCMトークンを Singularサーバーに登録
- サイレント通知:Singularは登録済みデバイスに 定期的なサイレントプッシュ通知を送信
- 配信フィードバック:FCMが配信成功/失敗を報告
- アンインストール検知:配信失敗はアプリのアンインストールを示す
- イベント記録:アンインストールイベントを元のインストールソースに帰属させる
要件
- 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を ドメイン制限付き共有ポリシーの 許可値リストに追加してください。
設定手順:
- 組織ポリシーへのアクセス:Google Cloud Console で [組織ポリシー] ページに移動します
- リソースの選択:ポリシーが設定されている 組織を選択
- 制約条件の検索:「ドメイン制限付き共有」制約条件を特定
- ポリシーの管理:「ポリシーを管理」ボタンをクリック
- 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が宣言されていることを確認してください。
<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を取得します。
- Firebase コンソールを開く: Firebase コンソールに移動
- プロジェクトの作成:アプリ用に新しいFirebaseプロジェクトを選択または作成
- プロジェクト設定の場所:歯車アイコン → [プロジェクト設定] をクリック
- プロジェクト ID をコピー:[全般] タブからプロジェクト ID をコピー (後ほど Singular で入力します)
ステップ4: Firebase Cloud Messaging APIを有効化
HTTP v1 APIを有効化
プロジェクトで最新のHTTP v1プロトコルを使用するため、Firebase Cloud Messaging API (v1)を有効化します。
- Cloud Messaging への移動:Firebase コンソールで、 プロジェクト設定 → Cloud Messaging タブに移動
- APIを有効化:Firebase Cloud Messaging API (V1) の横にある「有効化」をクリック
- 有効化の確認:API ステータスが「有効」と表示されていることを確認
重要:Firebase Cloud Messaging API (V1) は従来の Cloud Messaging API とは異なります。正しい v1 バージョンを有効化してください。
ステップ5: カスタムIAMロールの作成
サービスアカウントの権限設定
アンインストール検出用のFCM通知をSingularが送信できるよう、特定の権限を持つカスタムIAMロールを作成します。
- IAMにアクセス:Firebaseプロジェクト設定 → サービスアカウント → サービスアカウント権限の管理
- ロールを開く:左ナビゲーションメニューで「ロール」を選択
- ロールの作成:「ロールを作成」ボタンをクリック
-
ロールの詳細設定:
-
タイトル:
Singular Uninstall Tracking -
ID:
singular_uninstalls -
ロール起動ステージ:
General Availability
-
タイトル:
必要な権限の追加
カスタムロールにFCMメッセージ送信権限を付与します。
- 権限の追加:「権限を追加」ボタンをクリック
- 権限をフィルタリング:「Firebase Cloud Messaging API 管理者」を検索
-
権限を選択:チェックを入れる
cloudmessaging.messages.create - ロールに追加:「追加」ボタンをクリック
- ロールの作成:「作成」をクリックしてロール作成を完了
ステップ6: Singularサービスアカウントの割り当て
Singularへのアクセス権を付与
アンインストール追跡操作を許可するため、Singularのサービスアカウントにカスタムロールを割り当てます。
- IAMページを開く:左ナビゲーションメニューで「IAM」を選択
- アクセス権の付与:[権限]タブの「アクセス権を付与」ボタンをクリック [新しいプリンシパル]フィールドに以下を入力:
-
プリンシパルを追加:「新しいプリンシパル」フィールドに以下を入力:
singular-uninstall-tracking@singular-uninstall-tracking.iam.gserviceaccount.com
カスタムロールの割り当て
前の手順で作成した「Singular アンインストール追跡」ロールを選択
- ロールの選択:「ロールの割り当て」で「Singular アンインストール追跡」を検索し選択
- 設定の確認:設定が下記のスクリーンショットと一致していることを確認
- 保存:「保存」ボタンをクリックして権限を適用
最終設定:
ステップ7: Singularアプリ設定の構成
SingularにプロジェクトIDを追加
アンインストール追跡を有効にするため、 Singularのアプリ設定にFirebaseプロジェクトIDを入力してください。
- Singularアプリを開く: Singularアプリページに移動
- アプリを選択:リストからAndroidアプリを選択
- 詳細設定:詳細設定セクションまでスクロール
- アンインストール追跡:アンインストール追跡の設定項目を探します
- プロジェクトIDの入力:ステップ3で取得したFirebaseプロジェクトIDを貼り付け
- 保存:設定を適用するには「保存」をクリック
検証:保存後、SingularがプロジェクトIDとIAM権限を検証します。 検証に失敗した場合は、Firebaseのサービスアカウント設定を再確認してください。
アンインストール追跡のテスト
更新版アプリを本番環境にリリースする前に、 アンインストール追跡が正しく設定されていることを確認してください。
テスト手順
検証手順
- テストビルドのインストール:アンインストール追跡機能を有効にしたアプリを テストデバイスにデプロイ
- アプリ起動:アプリを開き、SDK初期化とFCMトークン登録をトリガーする
- トークン登録の確認:SingularとのFCMトークン登録成功を SDKログで確認
- バッチ処理待機:Singularが最初のサイレント通知を送信するまで 24~48時間待機
- アプリのアンインストール:テスト端末からアプリを削除
- ダッシュボードを監視: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.json がapp/ディレクトリにあることを確認し、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構成で使用している場合、以下の移行手順に従ってください:
- 現在の設定の確認:Singularアプリ設定に「プロジェクトID」ではなく「サーバーキー」フィールドが表示されているか確認
- HTTP v1設定の手順に従う:上記の 「HTTP v1 API設定」セクションの全手順を完了してください
- アプリ設定の更新:Singular設定内のサーバーキーを FirebaseプロジェクトIDに置き換える
- 実装テスト:新しいv1 API設定でアンインストール追跡が機能することを確認
- 更新版のリリース:更新したアプリを本番環境ユーザーにデプロイ
移行ガイド: Firebase HTTP v1 API 移行
HTTP v1 APIの利点
- セキュリティ強化:静的なサーバーキーの代わりに 短寿命のOAuth 2.0アクセストークンを使用
- クロスプラットフォーム対応の強化:Android、iOS、Web向けに統一されたメッセージ構造
- プラットフォーム固有のオーバーライド:単一リクエストで プラットフォームごとに通知動作をカスタマイズ
- 将来性:Firebaseによる継続的なサポートと新機能は v1でのみ提供
- エラー処理の改善:トラブルシューティングのための詳細なエラー応答
アンインストールデータの分析
Singularレポートのアンインストールデータを活用し、 キャンペーンパフォーマンスの最適化とトラフィック品質の問題を特定。
利用可能な指標
アンインストール追跡指標
- アンインストール数:検出されたアプリのアンインストール総数
- アンインストール率:インストール後にアンインストールに至った割合
- アンインストールまでの日数:インストールから アンインストールまでの平均経過時間
- ソース別アンインストール:キャンペーン、パブリッシャー、クリエイティブ別の アンインストール内訳
- コホート分析:異なるユーザー層における アンインストールパターン
ユースケース
キャンペーン最適化:
- アンインストール率の高い低品質トラフィックを誘導するキャンペーンの特定
- 異なるトラフィックソース間のアンインストール率を比較
- 予測ユーザー継続率に基づく入札戦略の最適化
不正検知:
- インストール不正を示す異常なアンインストールパターンを検知
- 不自然に高いアンインストール率を示すパブリッシャーをフラグ付け
- ボットトラフィックの兆候としてアンインストールまでの時間を監視
ユーザー継続率分析:
- 時間の経過に伴うアプリの定着率とエンゲージメントを追跡
- アンインストールとアプリ更新・機能リリースの相関関係を分析
- ユーザー離脱に寄与する要因を特定
ベストプラクティス
最適化戦略
- ベンチマークの設定:キャンペーンタイプ別に許容アンインストール率の閾値を設定 トレンドの監視:アンインストール率の経時変化を追跡し、季節的なパターンや異常値を特定
- トレンドの監視:季節的なパターンや異常値を特定するため、 アンインストール率を時間軸で追跡する
- セグメント分析:ユーザー属性・地域・デバイス別アンインストール率を比較
- アトリビューション期間:キャンペーン効果評価時に アンインストール発生時期を考慮
- 品質スコアリング:アンインストール率を トラフィック品質スコアリングモデルに組み込む