Unreal Engine SDK - 基本的な統合

ドキュメント

インストール

プロジェクトの Plugins フォルダに SDK プラグインを追加し、Unreal Engine プロジェクトで有効にすることで、Singular Unreal Engine SDK をインストールします。

SDK のインストール

以下の手順に従って、Singular SDK を Unreal Engine プロジェクトに統合してください。

  1. 上記のリンクから SDK アーカイブをダウンロードして解凍します。
  2. Project ルート フォルダに、Plugins フォルダが存在しない場合は作成します。
  3. アプリの「Plugins 」フォルダ内に「SingularSDK 」フォルダを作成します。
  4. 解凍したアーカイブ ファイルを、アプリのPluginsフォルダ内の "SingularSDK"フォルダにコピーします。

    unreal_sdk_install.png

  5. アンリアル プロジェクトを開いている場合は閉じます。
  6. プロジェクトを再度開きます。Missing Modules のプロンプトが表示されたら、Yes を選択して続行します。
    unrealModules.png
  7. メニューからSingularSDK Plugin を有効にします:"Edit>Plugins" を選択します。Singularを検索する。
    unreal_plugin_enabled.png
  8. アプリのBuild.cs ファイル (Source/ProjectName/<YOUR_APP>.Build.cs) のPublicDependencyModuleNames配列に、依存関係としてSingularSDK を追加します。

    C++
    PublicDependencyModuleNames.AddRange(new string[] { 
        "Core", 
        "CoreUObject",
        "Engine", 
        "InputCore", 
        "SingularSDK" 
    });

インストールに関する既知の問題

最初のビルドで、Singularフレームワークのヘッダーファイルに関する致命的なエラーが発生することがあります。

既知の問題:最初のビルドで、以下の致命的なエラーが発生することがあります:

Plugins/SingularSDK/Source/SingularSDK/Private/SingularSDKBPLibrary.cpp:14:9: fatal error: 'Singular/Singular.h' file not found

この問題を回避するには、以下の手順に従ってください:

  • Plugins/SingularSDK/Source/ThirdParty/iOS " からSingular.framework.zipファイルを展開してください。
  • Singular.framework フォルダーを "/Users/Shared/Epic Games/UE_5.5/Engine/Intermediate/UnzippedFrameworks/Singular" に移動する。
framework.png

SDKの初期化

アプリを起動するたびにSingular SDKを初期化し、アトリビューショントラッキング、セッション管理、イベントレポートを有効にします。

プライバシーの遵守Singular SDKを実装する際は、GDPR、CCPA、COPPAなど、お客様がビジネスを行う地域で制定されているプライバシーに関する法律を遵守することを忘れないでください。詳しくはSDKのオプトインとオプトアウトをご覧ください。

SDKを初期化する理由

SDKの初期化は、Singularのすべてのアトリビューション機能の前提条件です。 ユーザーのリテンションメトリックスを計算するために、Singularに送信される新しいセッションを作成します。

ベストプラクティスです:ゲームモードのコンストラクタなど、アプリのライフサイクルのできるだけ早い段階でSDKを初期化します。


初期化メソッド

USingularSDKBPLibrary::Initialize

Initialize メソッドをコールしてSingular SDKを起動し、ユーザーセッションをSingularサーバーに送信します。

メソッドのシグネチャ

C++
static bool Initialize(
    FString sdkKey, 
    FString sdkSecret,
    int sessionTimeout = 60,
    FString customUserId = TEXT(""),
    bool skAdNetworkEnabled = true,
    bool manualSkanConversionManagement = false,
    int waitForTrackingAuthorizationWithTimeoutInterval = 0,
    bool oaidCollection = false,
    bool enableLogging = false,
    int logLevel = 0,
    bool clipboardAttribution = false,
    FString facebookAppId = TEXT(""),
    FString customSdid = TEXT("")
);

実装例

ゲームモードのコンストラクタで、API認証情報と設定オプションを使用してSDKを初期化します。

C++
// Copyright Epic Games, Inc. All Rights Reserved.

#include "MyProject2GameMode.h"
#include "MyProject2Character.h"
#include "UObject/ConstructorHelpers.h"
#include "SingularSDKBPLibrary.h"

#if PLATFORM_IOS
#include "IOS/IOSPlatformMisc.h"
#import <UIKit/UIKit.h>
#endif

AMyProject2GameMode::AMyProject2GameMode()
    : Super()
{
#if PLATFORM_IOS
    // Log IDFV for iOS testing
    NSString *idfv = [[UIDevice currentDevice] identifierForVendor].UUIDString;
    if (idfv)
    {
        FString IDFVString = FString(idfv);
        UE_LOG(LogTemp, Log, TEXT("IDFV: %s"), *IDFVString);
    }
    else
    {
        UE_LOG(LogTemp, Warning, TEXT("Failed to retrieve IDFV"));
    }
#endif

    // Initialize Singular SDK
    bool Success = USingularSDKBPLibrary::Initialize(
        "YOUR_SDK_KEY",        // API Key from Singular dashboard
        "YOUR_SDK_SECRET",      // Secret from Singular dashboard
        60,                      // Session timeout in seconds
        TEXT(""),               // Custom user ID (optional)
        true,                    // Enable SKAdNetwork for iOS
        false,                   // Manual SKAdNetwork conversion management
        30,                      // Wait 30 seconds for ATT prompt
        false,                   // Disable OAID collection
        true,                    // Enable logging for debugging
        3,                       // Log level (0-5, higher = more verbose)
        false,                   // Clipboard attribution
        TEXT(""),               // Facebook App ID (optional)
        TEXT("")                // Custom SDID (optional)
    );

    if (Success)
    {
        UE_LOG(LogTemp, Log, TEXT("Singular SDK initialized successfully"));
    }
    else
    {
        UE_LOG(LogTemp, Error, TEXT("Failed to initialize Singular SDK"));
    }

    // Set default pawn class
    static ConstructorHelpers::FClassFinder<APawn> PlayerPawnClassFinder(
        TEXT("/Game/FirstPerson/Blueprints/BP_FirstPersonCharacter")
    );
    DefaultPawnClass = PlayerPawnClassFinder.Class;
}

設定パラメータ

必須パラメータ

これらのパラメータはSDKの初期化に必要です。Singularダッシュボードから認証情報を取得してください。

  • sdkKey:Singularアカウントの"Developer Tools > SDK Integration > SDK Keys"からSingular SDK Keyを取得します。
  • sdkSecret:Singularアカウントの同じ場所からお客様のSingular SDK Secretを取得します。

重要:SDK認証情報は安全に保管し、公開バージョン管理リポジトリにコミットしないでください。


オプションのパラメータ

オプションの設定パラメータでSDKの動作をカスタマイズします。

  • sessionTimeout(デフォルト: 60):カスタムセッションタイムアウトを秒単位で設定します。この非アクティブ時間が経過すると、ユーザーがアプリに戻ったときに新しいセッションが作成されます。
  • customUserId(デフォルト:空):初期化時にカスタムユーザーIDを設定します。カスタムユーザーIDについてはこちらをご覧ください
  • skAdNetworkEnabled(デフォルト:true、iOSのみ):iOSアトリビューション用のSKAdNetworkサポートを有効にします。SingularのSKAdNetworkソリューションの紹介をご覧ください。
  • manualSkanConversionManagement(デフォルト:false、iOSのみ):Singularが自動的にSKAdNetworkの変換値を処理するのではなく、手動で管理する場合はtrueに設定します。
  • waitForTrackingAuthorizationWithTimeoutInterval(デフォルト:0、iOSのみ):ユーザーがATT(App Tracking Transparency)のプロンプトに応答するか、タイムアウトが経過するまで、Singularへのセッション/イベントの送信を遅らせます。ATTのサポートについてはこちらをご覧ください
  • oaidCollection(デフォルト:false、Androidのみ):AndroidデバイスでデバイスのOAID(Open Anonymous Device Identifier)を収集するには、trueに設定します。
  • enableLogging(デフォルト:false):トラブルシューティングのためにSDKデバッグ・ロギングを有効にします。本番ビルドでは無効にする必要があります。
  • logLevel(デフォルト: 0):ロギングの冗長性レベル(0-5)を設定。値を大きくすると、より詳細なログが出力されます。
  • clipboardAttribution(Default:false、iOSのみ): ユニバーサルリンクの属性のためにクリップボードからの読み込みを有効にします。
  • facebookAppId(デフォルト: 空):Facebookアトリビューション統合のためにFacebookアプリIDを設定します。
  • customSdid(デフォルト:空):自動生成された識別子を使用する代わりに、カスタムSingular Device IDを設定します。