Unreal Engine SDK - プッシュ通知のサポート

ドキュメント

プッシュ通知のサポート

Firebase Cloud Messaging (FCM) またはApple Push Notification service (APNs) をSingular SDKと統合することで、プッシュ通知によるユーザーインタラクションを追跡し、リエンゲージメントキャンペーンやコンバージョンを正確に測定することができます。

以下の実装ガイドラインに従って、通知データが正しくSingular SDKに渡され、適切なアトリビューションが行われるようにしてください。

プッシュ通知を追跡する理由プッシュ通知はリエンゲージメントを促進しますが、トラッキングには正しい統合が必要です。Singularは、通知を受け取ったユーザーが適切にアトリビューションされるようにし、マーケティングキャンペーンとエンゲージメント戦略を最適化します。


実装ガイド

Singular SDKを統合する

Singular Unreal Engine SDKガイドに記載されている標準のインストール手順を使用して、Unreal EngineプロジェクトにSingular SDKを統合します。


プッシュ トークンの登録

プッシュ通知トークンを Singular に登録し、アンインストール追跡とプッシュ帰属を有効にします。

C++
// Register push token for uninstall tracking
void UYourGameInstance::OnPushTokenReceived(const FString& Token)
{
    // Pass the FCM or APNs token to Singular
    USingularSDKBPLibrary::SetUninstallToken(Token);
    UE_LOG(LogTemp, Log, TEXT("Push token registered: %s"), *Token);
}

メソッドの署名

static void SetUninstallToken(FString token);

ベストプラクティス:FCM (Android) または APNs (iOS) からプッシュ通知トークンを受信したら、すぐにSetUninstallTokenに電話してください。これにより、アンインストールとプッシュ通知インタラクションの適切なトラッキングが保証されます。


プラットフォーム固有の処理

iOSのプッシュ通知処理

プッシュ通知パスの設定

iOSの実装では、SDKの初期化時にプッシュ通知のペイロード構造内にSingularトラッキングリンクがあるJSONパスを設定します。

C++
// iOS: Configure push notification link paths in initialization
// Note: This is typically configured through the iOS native bridge
// The Singular iOS SDK automatically handles push tracking when configured

// Example configuration in iOS native code (Objective-C):
// SingularConfig *config = [[SingularConfig alloc] initWithApiKey:@"API_KEY" andSecret:@"API_SECRET"];
// config.singularLinksHandler = ^(SingularLinkParams * _Nonnull params) {
//     // Handle deep link from push notification
// };
// [Singular start:config];

終了状態(アプリが実行されていない)

終了状態のiOSアプリに対して手動で操作する必要はありません。SingularのiOSインテグレーションは、アプリが実行されていない状態でユーザーが通知をタップすると、自動的にプッシュトラッキングを処理します。

自動処理:アプリの実行中にユーザーがプッシュ通知をタップすると、SingularはネイティブのiOS統合レイヤーを通して、アプリ起動中に通知ペイロードを自動的に取得します。

バックグラウンド状態(アプリがバックグラウンドで実行中)

アプリがバックグラウンドで実行中に通知を受信すると、iOS SDKが自動的に通知データを処理します。最初のトークン登録以外に追加のC++コードは必要ありません。

重要:iOSプロジェクトがプッシュ通知機能で適切に構成され、アプリの初期化中にAPNsトークンがSetUninstallToken を使用して登録されていることを確認してください。


Android プッシュ通知処理

Firebaseクラウドメッセージングとの統合

Androidの実装では、Firebase Cloud Messaging (FCM)を統合し、プッシュトークンをSingular SDKに転送してトラッキングします。

C++
// Android: Register FCM token with Singular
void UYourGameInstance::OnFirebaseTokenReceived(const FString& FcmToken)
{
    // Register the FCM token for uninstall tracking
    USingularSDKBPLibrary::SetUninstallToken(FcmToken);
    UE_LOG(LogTemp, Log, TEXT("FCM token registered with Singular: %s"), *FcmToken);
}

プッシュ通知データの処理

ユーザーがSingularトラッキングリンクを含むプッシュ通知をタップした場合、通知データがアプリのディープリンクハンドラーに渡され、適切なアトリビューションが行われるようにしてください。

C++
// Handle notification tap event
void UYourGameInstance::OnNotificationTapped(const FString& NotificationData)
{
    // Parse notification data for Singular links
    // Example: Extract "sng_link" or custom key from notification payload

    // If notification contains a Singular tracking link, it will be
    // automatically processed by the SDK's deep link handler

    UE_LOG(LogTemp, Log, TEXT("Notification tapped: %s"), *NotificationData);

    // Route user to appropriate content
    ProcessNotificationDeepLink(NotificationData);
}

void UYourGameInstance::ProcessNotificationDeepLink(const FString& LinkData)
{
    // Your custom deep link routing logic
    if (LinkData.Contains(TEXT("article")))
    {
        // Navigate to article
        OpenArticleScreen();
    }
    else if (LinkData.Contains(TEXT("promotion")))
    {
        // Navigate to promotion
        OpenPromotionScreen();
    }
}

ベストプラクティスプッシュ通知のペイロードにSingularトラッキングリンク(アトリビューション用)とアプリのカスタムディープリンクデータ(ユーザーを特定のコンテンツに誘導するため)の両方を含めるように構成します。


検証ガイド

プッシュトークン登録の確認

アプリの初期化中にSDKログをチェックすることで、プッシュ通知トークンがSingularに正しく登録されていることを確認します。

C++
// Enable SDK logging to verify token registration
bool Success = USingularSDKBPLibrary::Initialize(
    TEXT("YOUR_SDK_KEY"),
    TEXT("YOUR_SDK_SECRET"),
    60,                      // Session timeout
    TEXT(""),                // Custom user ID
    true,                    // Enable SKAdNetwork
    false,                   // Manual SKAN management
    0,                       // Wait for tracking authorization
    false,                   // OAID collection
    true,                    // Enable logging for debugging
    5,                       // Verbose log level
    false,                   // Clipboard attribution
    TEXT(""),                // Facebook App ID
    TEXT("")                 // Custom SDID
);

// After receiving push token
FString PushToken = GetPushNotificationToken();
USingularSDKBPLibrary::SetUninstallToken(PushToken);

// Check logs for confirmation:
// "Push token registered successfully" or similar message

デバッグのヒント開発中は冗長ロギング(ログレベル5)を有効にして、プッシュトークン登録と通知処理に関する詳細な情報を確認してください。本番ビルドでは、パフォーマンスのために冗長ロギングを無効にします。


ダッシュボードでアトリビューションを確認する

Singularダッシュボードを使用して、プッシュ通知のインタラクションが正しくトラッキングされていることを確認します。

  • リエンゲージメントキャンペーンダッシュボードのリエンゲージメントセクションをチェックして、プッシュ通知キャンペーンのパフォーマンスを確認します。
  • ユーザーレベルデータ:ユーザーレベルのデータをエクスポートして、プッシュ通知のタッチポイントが正しいアトリビューションで記録されていることを確認します。
  • コンバージョンイベント:プッシュ通知タップ後にトリガーされたイベントが正しいキャンペーンに帰属していることを確認します。

高度な構成

カスタム通知ペイロード構造

プッシュ通知のペイロードを構造化して、カスタムデータと共にSingularトラッキングパラメータを含めます。

推奨ペイロード構造(JSON)

{
  "notification": {
    "title": "Special Offer!",
    "body": "Get 50% off today only"
  },
  "data": {
    "sng_link": "https://yourapp.sng.link/Abc12?_dl=myapp://promo",
    "campaign_id": "summer_sale_2025",
    "promo_code": "SAVE50",
    "deep_link": "myapp://promo/summer"
  }
}

主な要素

  • sng_link:アトリビューション用のSingularトラッキングリンク(プッシュトラッキングには必須)。
  • campaign_id:キャンペーン識別子。
  • deep_link:コンテンツルーティング用のアプリのカスタムディープリンク。
  • カスタムデータ:アプリが必要とする追加データ(プロモコード、ユーザーセグメントなど)。

注意:Singular SDKは自動的に "sng_link "キーからトラッキングリンクを抽出し、処理します。このキーがすべてのプッシュ通知キャンペーンで一貫して使用されていることを確認してください。


ディープリンクルーティングの実装

集中型のディープリンクハンドラーを実装して、ユーザーがプッシュ通知をタップしたときに特定のコンテンツにルーティングします。

C++
// Centralized deep link handler
class UDeepLinkHandler : public UObject
{
public:
    void HandleDeepLink(const FString& DeepLink)
    {
        // Parse the deep link URL
        if (DeepLink.StartsWith(TEXT("myapp://article/")))
        {
            FString ArticleId = ExtractArticleId(DeepLink);
            NavigateToArticle(ArticleId);
        }
        else if (DeepLink.StartsWith(TEXT("myapp://promo/")))
        {
            FString PromoId = ExtractPromoId(DeepLink);
            NavigateToPromotion(PromoId);
        }
        else if (DeepLink.StartsWith(TEXT("myapp://profile")))
        {
            NavigateToUserProfile();
        }
        else
        {
            // Default: Navigate to home screen
            NavigateToHome();
        }
    }

private:
    FString ExtractArticleId(const FString& Url)
    {
        // Extract article ID from URL
        FString ArticleId;
        Url.Split(TEXT("article/"), nullptr, &ArticleId);
        return ArticleId;
    }

    FString ExtractPromoId(const FString& Url)
    {
        // Extract promo ID from URL
        FString PromoId;
        Url.Split(TEXT("promo/"), nullptr, &PromoId);
        return PromoId;
    }

    void NavigateToArticle(const FString& ArticleId)
    {
        UE_LOG(LogTemp, Log, TEXT("Navigating to article: %s"), *ArticleId);
        // Your navigation logic
    }

    void NavigateToPromotion(const FString& PromoId)
    {
        UE_LOG(LogTemp, Log, TEXT("Navigating to promotion: %s"), *PromoId);
        // Your navigation logic
    }

    void NavigateToUserProfile()
    {
        UE_LOG(LogTemp, Log, TEXT("Navigating to user profile"));
        // Your navigation logic
    }

    void NavigateToHome()
    {
        UE_LOG(LogTemp, Log, TEXT("Navigating to home screen"));
        // Your navigation logic
    }
};

重要な考慮事項

実装に関する注意事項

  • トークン登録のタイミング:FCMまたはAPNからプッシュトークンが利用可能になり次第、Singularに登録します(理想的にはSDKの初期化中または初期化直後)。
  • アトリビューションフロー:ユーザーがSingularリンクを含む通知をタップすると、SDKはセッション開始イベント中に自動的にアトリビューションデータを処理します。アトリビューショントラッキングのための手動処理は必要ありません。
  • ディープリンク処理:Singularはアトリビューションを自動的に処理しますが、ユーザーを正しいアプリ内コンテンツにナビゲートするために、カスタムディープリンクルーティングロジックを実装する必要があります。
  • ペイロードの一貫性:すべてのプッシュ通知キャンペーンで一貫したキー名(例:"sng_link")を使用し、信頼性の高いトラッキングを実現します。
  • プラットフォームの違い:iOSとAndroidでは、システムレベルでプッシュ通知の扱いが異なります。プラットフォーム固有の動作を考慮した実装を心がけましょう。
  • アンインストールのトラッキング:プッシュトークンはアンインストールのトラッキングにも使用されます。Singularはサイレントプッシュ通知を送信し、アンインストールされたアプリを検出します。

制作チェックリスト(1)プッシュトークンが正常に登録されていること、(2)通知ペイロードにSingularトラッキングリンクが含まれていること、(3)ディープリンクルーティングが正しく機能していること、(4)アトリビューションデータがSingularダッシュボードに表示されていること。


プライバシーと許可

プッシュ通知を実装する際に、プラットフォームの要件とユーザーのプライバシー規制を遵守していることを確認してください。

  • iOSの許可:ユーザーはプッシュ通知を受け取る許可を与える必要があります。初回起動時ではなく、アプリフローの適切なタイミングで許可をリクエストしてください。
  • Androidの許可:Android 13(APIレベル33)以降、通知を送信するにはPOST_NOTIFICATIONSパーミッションをリクエストする必要があります。
  • ユーザーの同意:マーケティングコミュニケーションの受信に関するユーザーの好みを尊重しましょう。アプリの設定で明確なオプトアウトの仕組みを提供しましょう。
  • データプライバシー:プッシュ通知のペイロードに個人を特定できる情報(PII)を含めないようにしましょう。ユーザーIDまたはその他の非PII識別子を使用してください。

成功:これらの実装ステップに従うことで、あなたのUnreal EngineアプリはSingularでプッシュ通知のインタラクションを追跡し、キャンペーンパフォーマンスのインサイトを向上させ、正確なリエンゲージメントアトリビューションを確実にします。