アンインストール追跡
プッシュ通知サービスをSingular SDKと統合することで、アプリのアンインストールを追跡し、ユーザーのリテンションを測定し、リエンゲージメントキャンペーンを最適化します。
重要:Google は 2018 年 4 月に GCM API を廃止しました。 Android のアンインストールトラッキングの実装にはすべて Firebase Cloud Messaging (FCM) を使用してください。
Android アンインストールトラッキング
前提条件
Unity アプリにアンインストールトラッキングを実装する前に、Setting Up Android Uninstall Tracking のガイドに従って、Singular プラットフォームでアプリを設定してください。
システム要件
アンインストールトラッキングには、Firebase Cloud Messaging と特定のデバイス設定が必要です。
FCM 要件(ソース):
- Android バージョン:Android 4.1 (API 16) 以降を実行しているデバイスが必要です。
- Google Play サービス:Google Playストアアプリがインストールされている必要があります。
- エミュレータのサポート:Google APIを搭載したAndroid 4.1以上のエミュレータに対応しています。
- 配布:アプリは Google Play ストア以外でも配布でき、アンインストール追跡をサポートします。
注意:サポートされていない Android バージョンまたは Google Play サービスを利用していないデバイスのユーザーは、アンインストールを追跡されません。
実装ステップ
ステップ 1: Firebase Cloud Messaging の統合
まだ設定されていない場合は、Unity アプリで Firebase Cloud Messaging を設定します。
Google の公式ガイドに従ってUnity に Firebase Cloud Messaging を設定します。 これには以下が含まれます:
- UnityプロジェクトにFirebaseを追加する
- Firebase Messaging Unity パッケージをインポートする。
- Android 用の Firebase 設定
- 通知パーミッションのリクエスト(Android 13以上)
ステップ 2: AndroidManifest.xml の設定
FCM メッセージを受信するために Android マニフェストに Firebase Messaging Service を登録します。
<service
android:name=".java.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
重要 .java.MyFirebaseMessagingService をFirebaseMessagingService を継承するクラスの完全修飾名に置き換えてください。
ステップ 3: FCM デバイストークンの登録
FCMデバイストークンを取得し、SDKの初期化前にアンインストールトラッキングのためにSingularに送信します。
using UnityEngine;
using Singular;
using Firebase.Messaging;
using System.Threading.Tasks;
public class UninstallTrackingManager : MonoBehaviour
{
async void Start()
{
// Initialize Firebase
await InitializeFirebase();
// Get FCM token and register it with Singular
await RegisterFCMToken();
// Initialize Singular SDK after registering the token
SingularSDK.InitializeSingularSDK();
}
private async Task InitializeFirebase()
{
var dependencyStatus = await Firebase.FirebaseApp.CheckAndFixDependenciesAsync();
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
Debug.Log("Firebase is ready");
}
else
{
Debug.LogError($"Could not resolve Firebase dependencies: {dependencyStatus}");
}
}
private async Task RegisterFCMToken()
{
try
{
// Get FCM token
string token = await Firebase.Messaging.FirebaseMessaging.GetTokenAsync();
if (!string.IsNullOrEmpty(token))
{
// Register token with Singular BEFORE SDK initialization
SingularSDK.RegisterTokenForUninstall(token);
Debug.Log($"FCM token registered with Singular: {token}");
}
else
{
Debug.LogWarning("FCM token is empty");
}
}
catch (System.Exception ex)
{
Debug.LogError($"Error getting FCM token: {ex.Message}");
}
}
}
RegisterTokenForUninstall()SingularSDK.InitializeSingularSDK() 初期化後にトークンを登録しても、アンインストール追跡は有効になりません。
ステップ 4: トークンの更新
正確なアンインストールトラッキングを維持するために、FCM トークンが更新されるたびに Singular でトークンを更新します。
using UnityEngine;
using Singular;
using Firebase.Messaging;
public class FCMTokenRefreshHandler : MonoBehaviour
{
void Start()
{
// Subscribe to token refresh event
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
}
void OnDestroy()
{
// Unsubscribe when destroyed
Firebase.Messaging.FirebaseMessaging.TokenReceived -= OnTokenReceived;
}
private void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs e)
{
Debug.Log($"New FCM token received: {e.Token}");
// Update token with Singular
SingularSDK.RegisterTokenForUninstall(e.Token);
// Also send token to your server if needed
SendTokenToServer(e.Token);
}
private void SendTokenToServer(string token)
{
// Implement your server communication logic here
Debug.Log($"Sending token to server: {token}");
}
}
ベストプラクティスです:FCM トークンはいつでも更新できます(アプリの更新、デバイスの復元など)。常にTokenReceived イベントを購読し、Singular を最新のトークンで更新してください。
iOSのアンインストールトラッキング
前提条件
iOS のアンインストールトラッキングは、Apple Push Notification service (APNs) テクノロジーに基づいています。
アプリがプッシュ通知に対応していない場合は、Apple の「アプリを APNs に登録する」ガイドを参照してください。
APNSデバイストークンの登録
SDKが初期化された後、RegisterTokenForUninstall メソッドを使用してAPNsから返されたデバイストークンを渡します。
メソッドのシグネチャ
public static void RegisterTokenForUninstall(string APNSToken)
パラメータ
- APNSToken:APNから返されたデバイストークンを16進文字列で指定します。
トークンの形式:APNSトークンは通常バイナリデータですが、16進文字列表現としてSingularに渡す必要があります。
使用例
iOSのアンインストールトラッキングのために、APNSデバイストークンをSingularに登録します。
using UnityEngine;
using Singular;
#if UNITY_IOS
using Unity.Notifications.iOS;
#endif
public class iOSUninstallTracking : MonoBehaviour
{
void Start()
{
#if UNITY_IOS
// Initialize Singular SDK first
SingularSDK.InitializeSingularSDK();
// Request notification authorization
RequestNotificationAuthorization();
#endif
}
#if UNITY_IOS
private void RequestNotificationAuthorization()
{
var authorizationOption = AuthorizationOption.Alert |
AuthorizationOption.Badge |
AuthorizationOption.Sound;
using (var req = new AuthorizationRequest(authorizationOption, true))
{
while (!req.IsFinished)
{
// Wait for authorization
}
string deviceToken = req.DeviceToken;
if (!string.IsNullOrEmpty(deviceToken))
{
// Convert device token to hex string and register with Singular
SingularSDK.RegisterTokenForUninstall(deviceToken);
Debug.Log($"APNS token registered: {deviceToken}");
}
else
{
Debug.LogWarning("Failed to get APNS device token");
}
}
}
#endif
}
トークンの例
// Pass the APNS token as a hex-string
SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");
プラットフォームの違い:SDK の初期化前にトークンを登録する必要がある Android とは異なり、iOS のトークンは SDK の初期化後に登録する必要があります。
検証とトラブルシューティング
実装の確認
アンインストールトラッキングが正しく動作していることを確認します。
- ログの確認トークン登録がUnityコンソールのログに表示されることを確認します。
- トークン生成のテスト:最初のアプリ起動時にトークンが生成されることを確認します。
- ダッシュボードを監視する:24~48時間後のアンインストール追跡データをSingularダッシュボードで確認する
- トークン更新のテスト:アプリのデータを消去し、トークンが正しく更新されることを確認する
よくある問題
- Android トークンが生成されない:Firebase の依存関係が正しく追加され、Unity プロジェクトで Firebase が設定されていることを確認します。
-
トークンが更新されない:Android では
TokenReceivedイベントを購読しているか、iOS では APNs コールバックを適切に処理しているか確認してください。 - データがないデバイスがプラットフォーム要件(Android 4.1+ with Google Play Services、iOS with APNs support)を満たしていることを確認してください。
- 設定エラー:Singularプラットフォームの設定でアンインストールトラッキングが有効になっていることを確認する。
-
初期化の順序:Android の場合、
InitializeSingularSDK()の前にRegisterTokenForUninstall()が呼び出されていることを確認する。
その他のリソース:詳細なトラブルシューティングについては、Android Uninstall Tracking Setup GuideおよびFirebase Cloud Messaging for Unity Documentation を参照してください。