始める前にSDKの前提条件
- Singular SDKの統合の手順に従ってください:計画と前提条件。
これらのステップはSingular SDKを統合するための前提条件です。 -
Google EDM4U(Google External Dependency Manager for Unity )を使用しているか確認してください。
Google EDM4Uとは何ですか?詳しくはこちらをご覧ください。
1.SDKのインストール
アップグレードを行うには、.unitypackageから非推奨の統合プロセスを使用してインポートされた既存のSingular SDKファイルを手動で削除する必要があります。
これは Unity Package Manager (UPM)でSDKをインポートする前に完了しておく必要があります!
Unity Package Manager(UPM)を使用してSDKを統合する前に、以下のファイルのリストを削除してください。特に注意して、ここに記載されているSingularファイルのみを削除してください:
-
プロジェクトの/Codeフォルダから:
-
プロジェクトの/Codeフォルダから:プロジェクトの/Plugins/Androidフォルダから、AARとJARを削除します:
- プロジェクトの/Plugins/iOSフォルダから、iOSの.hファイルと.mファイル、および.xcframeworkを削除します:
1.1.SDKパッケージのダウンロードとインポート
-
Package Managerウィンドウで
- ボタンをクリックします。
- "Add package from git URL" を選択
-
Singular Unity SDK の GitHub URL を入力します: https://github.com/singular-labs/Singular-Unity-SDK.git
- Add "ボタンをクリックします。
- SingularのS3バケットから必要な依存関係をダウンロードします。SDKバージョン5.2.1の場合、Plugins.zipは https://s3.us-west-2.amazonaws.com/maven.singular.net/unity/UPM-non-EDM4U/5.2.1/Plugins.zip。
- 解凍したファイルをProjectPluginsフォルダに移動する。
1.2.Android用の設定
-
Unity v2018.3以降では、PlayerウィンドウのCustom Main Manifestプロパティを有効にするだけで、独自のAndroidManifestファイルを追加できます(File > Build Settings > Player Settings > Publishing settingsでアクセスできます)。これにより、デフォルトのAndroidManifest.xmlファイルが生成され、編集することができます。
このファイルはAssets/Plugins/Android/AndroidManifest.xmlの場所にあります。
ソース:https://docs.unity3d.com/2023.2/Documentation/Manual/android-manifest.html
-
UnityのカスタムMain Manifestファイルを使用する代わりに、Unityからアプリをエクスポートした後、Android StudioからAndroidManifest.xmlにアクセスすることもできます。
-
Unity v2018.3以降では、PlayerウィンドウのCustom Gradle Templateプロパティを有効にするだけで、独自のGradleビルドファイルを追加できます(File > Build Settings > Player Settings > Publishing settingsでアクセスできます)。これは、あなたが編集するためのデフォルトのmainTemplate.gradleファイルを生成します。
ファイルはAssets/Plugins/Android/mainTemplate.gradleになります。
ソース: https://docs.unity3d.com/2023.2/Documentation/Manual/android-gradle-overview.html
-
UnityのカスタムGradleビルドファイルを使用する代わりに、Unityからアプリをエクスポートした後、Android Studioからアプリのbuild.gradleにアクセスすることができます。
Proguard を使用している場合は、 proguard-unity.txt ファイルに以下のコードを追加します:
-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep public class com.singular.unitybridge.** { *; }
1.3.iOS 用のヒント
iOSでテストする場合は、以下のコードを:Classes > UnityAppController > applicationDidBecomeActivefunction.
// Singular SDK コンソールで使用するための Xcode コンソールへのベンダ用識別子(IDFV)の印刷
NSLog(@"Singular === IDFV: %@", [[[UIDevice currentDevice] identifierForVendor] UUIDString]);
これにより、Xcode Logs の App Open でIDFV 識別子を取得できるようになります。Singular SDK コンソールでこの識別子を使用して、テストデバイスを追加します。
-
Signing & Capabilities で Associated Domain を追加します。関連ドメインが正しく設定されていないと、Singularトラッキングリンクをクリックしてもアプリは開きません。
-
チームIDがSingularプラットフォームのアプリのページにも追加されていることを確認してください。これにより、Singularはユニバーサルリンク機能を有効にするために必要なApple App Site Association Fileを作成し、ホストすることができます。
非推奨のSingular unitypackage SDKおよびKids SDK
バージョン4.3.2以前からのアップグレードの場合
Assets > Plugins > iOS に移動し、新しい unitypackage をインポートする前に以下のファイルを削除してください!
- Attributes.h
- Events.h
- libSingular.a
- Singular.h
- SingularAdData.h
- SingularConfig.h
- SingularLinkParams.h
- 最新のSingular UnityパッケージSDK unitypackage v4.4.2ファイルをダウンロードしてください。
またはSingular UnityKids SDK Version 4.2.0ファイルをダウンロードしてください。 -
Unityメニューからに移動します:
- Assets > Import Package > Custom package
- ダウンロードしたunitypackageを選択します。
- インポートを選択します。
-
Kids SDKを使用しない場合: Android 12デバイスをサポートする予定ですか?
ファイルを play-services-ads-identifier-18.0.1.aarファイルをAssets/Plugins/Android/ フォルダに追加し、Unity が Google Advertising Identifier をキャプチャするために必要な依存関係を含めるようにします。すでにこの依存関係がある場合は、この手順をスキップできます。
-
AndroidManifest パーミッションの更新
AndroidManifest.xml ファイルに、以下のパーミッションを追加します:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" /> <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
-
Singular SDKのtransitive dependenciesを無効にしている場合は、アプリのbuild.gradleに以下を追加してください。
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.0' -
Singular SDKにはGoogle Play Services APIs 17.0.0+の一部であるGoogle Mobile Ads APIが必要です。すでにGoogle Play Servicesをアプリに統合している場合は、要件を満たしています。そうでない場合は、アプリのbuild.gradleファイルに以下の依存関係を含めることで、Google Mobile Adsを個別に統合できます。
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1+'
詳細については、 Google Play Servicesの設定に関するGoogleのガイドを参照してください。
- iOS用の追加設定
Unityからビルドした後、以下のライブラリ/フレームワークをUnity XCodeプロジェクトにリンクします。UnityFrameworkTargetに移動し、Build Phases > Link Binary with Librariesを選択します。以下を追加します:
- WebKit.framework
- libsqlite3.0.tbd
- libz.tbd
- AdServices.framework (必ず追加する必要が ありますが、iOS 14.3以上のデバイスでのみ利用可能なため、Optionalとして マークしてください)。また、Apple Search Adsで実行する場合は必須です!
重要: Apple Search Ad Campaignsを利用する予定で、アトリビューションをトラッキングしたい場合は、App BuildでAdServices.framework 。
- 次のセクションで、Non-Prefabの手順を使用してSingularSDKObjectを作成します。
- iOSの場合、Inspection Paneで 「Add to Embedded Bin 」オプションを有効にする必要があります。Assets > Plugins > iOSに移動し、Singular.xcframeworkファイルを選択し、Inspection Paneで 「Add to Embedded Bin 」オプションをチェックします。
2.SDKの統合
2.1.SingularSDKObjectの作成
階層へのSingularSDKObjectの追加
Singular プレハブオブジェクトを階層ペインに移動します。
- プロジェクトペインから次の場所に移動します:Packages > Singular > SingularSDK > Prefabs.
-
SingularSDKObject を階層ペインに移動します。
階層ペインに
- メインシーンに空のGameObjectを作成します。
- GameObjectに名前を付ける:SingularSDKObjectと名付ける。
重要: SingularのSDKを機能させるには、GameObjectの名前を "SingularSDKObject "にする必要があります。
- SingularSDKObjectをクリックします。
- Inspection Paneに移動します。
- Inspectionペインから、Add Componentをクリックします。
- 検索フィールドに「Singular」と入力し、「Singular SDK」スクリプトを選択します。
SingularSDKObject の設定を構成します。
-
SingularSDKObjectのInspectionペインで、Singular SDK KeyとSDK Secretをそれぞれのフィールドに貼り付けます。SDKキーとシークレットを取得するには、Singularアカウントにログインし、"Developer Tools > SDK Integration > SDK Keys"に進みます)。
重要: Singular Reporting API Keyを使用しないでください。上記の手順に従って、適切なキーとシークレットを取得してください。
Singular SDKキーとシークレットが正しく適用されていない場合、データはSingularに送信されません。
Singular SDKコンソールを使用して実装をテストし、正しい動作を確認してください。
注: SingularSDKObjectのデフォルトの検査ペイン設定:
以下のオプションが検査ペインで有効になっています:
-
Initialize On Awake(チェック済み)
この設定により、UnityはアプリのAwakeステータスに基づいてSingular SDKの初期化を制御できます。
アプリ要件のプライバシーコンプライアンスに従い、必要に応じてこのオプションを更新してください。このオプションのチェックを外すと、Singular SDKのAwake状態での初期化が無効になり、手動での初期化が必要になります。
-
SKAN有効(チェック済み)
Unity SDKバージョン4.0.17から、 SKAdNetworkはデフォルトで有効になっています。 マネージドモード(Singularダッシュボードで選択したコンバージョンモデルを使用してSKANコンバージョン値をSingularが更新する)では有効です。
-
トラッキング認証を待つ(Wait For Tracking Authorization)、0に設定(オフ
アプリがApp Tracking Transparency(ATT)プロンプトを表示している場合、このタイムアウトを300秒に設定することを推奨します。このタイムアウトを追加すると、Singular SDKのセッションが遅延し、ユーザーがSingularのサーバーにイベントをログする前にAppTrackingTransparency Consentを承認/拒否できるようになります。ユーザーがATTプロンプトに応答すると、Singular SDKは遅延なく続行します。これにより、同意が提供されたときに、インストール帰属のためのIDFA識別子をキャプチャすることができます。ATTを表示しない場合、このオプションのデフォルト値は0(待機なし)のままにしてください。
-
ログを有効にする(チェック)
Singular SDKからのログを有効にします。Log Level"オプションと一緒に使用する必要があります。
"Log Level "は以下のenumマッピングで指定された "int "数値で指定する必要があります。この範囲の数字が小さいほど、ログはより詳細になります。//Android Logger.javaのログレベル列挙型に基づく:android.util.Log public enum LogLevel { Verbose = 2, Debug = 3, Info = 4, Warn = 5, Error = 6, Assert = 7 }
注: 現在、ほとんどのログはAndroidでのみ利用可能です。
-
Ddlタイムアウト秒数を0に設定
デフォルトでは、"0 "の設定は60秒のタイムアウトを使用します。これは、Singular サーバーに、最後のタッチアトリビューションに関連付けられたディープリンクの値を検索する時間を指定します。遅延ディープリンクが見つかった場合、SDKセッションリクエストのレスポンスでアプリに返され、SingularLinkHandlerで処理されます。60秒以内に遅延ディープリンクが見つからない場合、サーバーは検索を停止します。
-
セッションタイムアウト秒数を0に設定
これは、アプリがバックグラウンドになり、フォアグラウンドに戻ったときにSingular SDKが新しいセッションを登録するまでのタイムアウト(秒)です。デフォルトでは、"0 "の設定は60秒のタイムアウトを使用します。必要に応じて、この設定を調整してより大きなウィンドウを使用することもできます。
-
ショートリンク・リゾルブのタイムアウトを0に設定
デフォルトでは、"0 "の設定は10秒間のタイムアウトを使用します。このタイムアウトはユーザーエクスペリエンスを保護します。指定されたショートリンクが指定された時間内に解決されない場合、Singular SDKはディープリンクハンドラーをトリガーしません。
その他の検査ペインオプション
META Install Referrer Attributionメソッドをサポートするには、SingularSDKObjectのInspection PaneにFacebook App IDを追加します。
- メインシーンで SingularSDKObject をクリックします。
- Inspection Paneを開き、"Facebook App ID "フィールドを見つけます。
- Facebook App IDを追加します。
2.2.SKAdNetworkの使用
Unity SDKバージョン4.0.17から、 SKAdNetworkはデフォルトで有効になっています。 マネージドモード(Singularダッシュボードで選択したコンバージョンモデルを使用して、SKANコンバージョン値をSingularが更新するモード)で有効になります。
SKAdNetworkを使用するには、最新のSDKを使用している限り、他に何かを設定したり、コードを追加したりする必要はありません。
追加情報
古いバージョンのSDKを使用している場合、以下のいずれかの方法でSKAdNetworkを有効にする必要があります:
- SingularSDKObjectに移動し、SKANEnabledを Trueに設定します。
- アプリのコードでSingularSDK.SkanRegisterAppForAdNetworkAttribution() を呼び出します。
ロジックを使用してSKAN変換値を手動で管理する場合は、以下を実行する必要があります:
- SingularSDKObjectに移動し、manualSKANConversionManagementを Trueに設定します。
- コード内で以下のメソッドを使用して、変換値を設定および取得します。
SingularSDK.SkanUpdateConversionValue メソッド | |
---|---|
説明 |
SKAdNetworkの変換値を更新します。 注意: このメソッドは、SKAdNetwork 変換値を手動で更新することを選択した場合に使用します。このメソッドは、manualSKANConversionManagementがTrue に設定されている場合にのみ動作します。 |
シグネチャ | public void SkanUpdateConversionValue(int value) |
使用例 |
|
SingularSDK.SkanGetConversionValueメソッド | |
説明 | Singular SDKによって追跡されている現在の変換値を取得します。 |
シグネチャ | public int?SkanGetConversionValue() |
使用例 |
|
SingularSDK.SetConversionValueUpdatedHandlerメソッド | |
説明 | 変換値が更新されたときに通知を受け取るハンドラを設定します。 |
シグネチャ | public void SetConversionValueUpdatedHandler(SingularConversionValueUpdatedHandler) |
使用例 |
|
2.3.iOSのApp Tracking Transparency(ATT)同意の処理
App Tracking Transparency(ATT)プロンプトを表示していますか?
iOS 14.5から、アプリはトラッキング目的に役立つデバイスのIDFAを含むいくつかのユーザーデータにアクセスして共有する前に、(App Tracking Transparencyフレームワークを使用して)ユーザーの同意を求める必要があります。
Singularとアドネットワークは、デバイスを識別し、インストールアトリビューションを実行するためにIDFAを持つことで大きな利益を得ます(IDFAなしでこれを行う方法もありますが)。 IDFAの取得にはユーザーの同意を得ることを強くお勧めします 。
ユーザーがATTプロンプトに応答するまで、Singular SDKの初期化を遅らせることをお勧めします。
デフォルトでは、Singular SDKは初期化時にユーザーセッションを送信します。新しいデバイスからセッションが送信されると、Singularのアトリビューションプロセスが直ちにトリガーされます。そのため、Singular SDKが最初のセッションを送信する前に同意を求め、IDFAを取得することが重要です。
waitForTrackingAuthorizationWithTimeoutIntervalを設定するには、SingularSDKObject Inspection ペインの設定オプションを調整します。これは、Singularのサーバーにイベントを記録する前に、ユーザーがAppTrackingTransparency Consentを承認/拒否するのをSingular SDKが待つ最大時間(秒)を設定します。
2.4.ディープリンクの処理
ディープリンクは、ユーザーをアプリ内の特定のコンテンツに誘導するURLです。アプリがインストールされているデバイスでユーザーがディープリンクをクリックすると、アプリが開き、特定の製品や体験が表示されます。
シングルトラッキングリンクは、ディープリンクと ディファードディープリンクの両方を組み込むことができます。詳細については、ディープリンクFAQと シンギュラーリンクFAQを参照してください。
注意事項
- この記事は、あなたの組織がSingular Links- Singularのトラッキングリンク技術を使用していることを前提としています。Singularの古いお客様はSingularの古いトラッキングリンク(レガシーリンク)を使用している可能性があります。レガシーリンクでのディープリンクをサポートするには、レガシーリンクでのディープリンクの扱いを参照してください。
- アプリのディープリンク先は、Singularのアプリページで 設定する必要があります(アトリビューショントラッキングのためのアプリの設定を参照)。
プラットフォームのサポートとハンドラコードの詳細については、以下のセクションを参照してください:
Androidでのディープリンクのサポート
- Project > Assets > Plugins > Android > AndroidManifest.xmlファイルをエディタで開きます。
-
アクティビティ名のプロパティをデフォルトから更新します:
<activity android:name="com.unity3d.player.UnityPlayerActivity"
から
<activity android:name="com.singular.unitybridge.SingularUnityActivity"
または
重要: カスタムアクティビティを実装している場合:-
onNewIntentを実装しているSingularUnityBridgeの インポート文を追加します。
import com.singular.unitybridge.SingularUnityBridge;
-
アクティビティのonNewIntentメソッドからSingularUnityBridge.onNewIntent(intent);を呼び出します:
例@Override protected void onNewIntent(Intent intent) { setIntent(intent); // カスタム・アクティビティからonNewIntentでこのメソッドを呼び出します。 SingularUnityBridge.onNewIntent(intent); }
警告:アプリ用にカスタムアクティビティを作成し、それがUnity Playerアクティビティを継承していない場合は、現在のアクティビティオブジェクトがNULLである可能性がある場合に対処するために、onNewIntentメソッドにガードを追加することを検討してください。
-
- 適切なアクティビティにIntent Filterを追加して、選択したスキームでAndroid App Schemeディープリンクをサポートします。
- Singularは、アプリを開くためのAndroid App Schemeテクノロジーをサポートしています。柔軟性を高めるため、HOST属性を使用しないことをお勧めします。
- Singularのアプリ設定からアプリを探し、Androidアプリの詳細設定を展開し、Androidアプリスキームフィールドに値を貼り付けます。これにより、ディープリンクが有効になっているSingularトラッキングリンクのリダイレクト中に、Singularがインテントとしてスキームを提供できるようになります。
SingularプラットフォームのスキームがAndroidManifest.xmlのインテント・フィルター設定と一致しない場合、Singularトラッキングリンクはアプリを開きません。特定のスキームとホストの組み合わせを使用する場合は、同じ組み合わせをSingularプラットフォームで設定する必要があります。
<!-- 特異なAndroidスキームのディープリンクにインテント・フィルタを追加 --> <!-- singular-exampleをあなたの値に置き換える -->
<intent-filter> <data android:scheme="singular-example"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter>
iOSでのディープリンクのサポート
SingularはiOSユニバーサルリンクと アプリスキームを使ってiOS上でディープリンクします。以下の手順に従って、Singular LinksでiOSユニバーサルリンクとアプリスキームのディープリンクを使用できるようにしてください。
- SingularのAttribution > Manage Linksページで、リンク用に少なくとも1つのサブドメインを設定します。詳細については、Singular Links FAQを参照してください。
-
ユニバーサルリンク(iOSでのディープリンク)を設定するには:
- Apple Developer Portalにログインします。
-
Identifiersに移動し、Universal Linksサポートを追加したいアプリを選択します。
-
Capabilitiesメニューで、Associated Domainsチェックボックスをチェックし、Saveをクリックします。
- Associated Domains "権限をアプリに追加します:
-
XCodeで、Project settings > Capabilities > Associated Domainsに進みます。
-
Singular Linksドメインを追加します。
-
- Apple Developer Portalから「App Prefix」(別名「Team ID」)をコピーします。
-
SingularでApps Configurationに行き、アプリを見つけ、iOS App Advanced Settingsを展開し、Team IDフィールドに値を貼り付けます。 これにより、Singularはユニバーサルリンク用の apple-app-site-associationファイルをSingularドメインでホストできるようになります。
-
注意:このステップは、Universal Linksがディープリンクできない場合に必要です。チームID」の下に、iOSの「アプリスキーム」を入力し、ユニバーサルリンクのディープリンクのフォールバックとして、従来のアプリスキームのディープリンクを有効にします。
あなたのアプリがディープリンクのためにiOSアプリスキームをサポートするのが初めての場合、アプリスキームがあなたのXcodeプロジェクトで "URLタイプ "として登録されていることを確認してください:
iOS アプリのアプリスキームのサポートに関する詳細については、このトピックに関する Apple の開発者向けヘルプ記事を参照してください。
ディープリンクハンドラの追加
Singular SDKは、アプリが開かれるきっかけとなったトラッキングリンクの詳細を読み取るハンドラーメカニズムを提供します。
ハンドラを使用するには
- MainクラスにSingular Link Handlerインターフェースを追加するか、クラスを作成してSingularSDKObjectにアタッチします。
- スクリプトの一番上に以下の行を追加して、SingularLinkHandlerのディレクティブが正しいことを確認してください:
using Singular;
- クラスにSingularLinkHandlerインターフェイスを実装します。
- クラスの任意の場所でSetSingularLinkHandlerメソッドを呼び出し、クラスをディープリンクのハンドラとして登録します。Awake() 関数を使用することをお勧めします。SetSingularLinkHandler を呼び出すと、Singular SDK はトラッキングリンクを取得し、OnSingularLinkResolvedメソッドを呼び出し、トラッキングリンクの詳細を渡します。リンクの詳細を読み込んで処理するには、このメソッドをオーバーライドします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Singular;
public class SingularMain : MonoBehaviour, SingularLinkHandler
{
// Startは最初のフレームが更新される前に呼び出される
void Start()
{
}
void Awake () {
Debug.Log("Singular === Awake");
/* クラスをSingular Linkハンドラーとして登録します。このメソッドはアプリの実行中のどの時点でも呼び出すことができます。トラッキングリンクの詳細を取得し、OnSingularLnkResolvedを呼び出します。 */
SingularSDK.SetSingularLinkHandler(this);
}
public void OnSingularLinkResolved(SingularLinkParams linkParams) {
Debug.Log("Singular === OnSingularLinkResolved");
// リンクの管理]ページで設定されたディープリンク先
string deeplink = linkParams.Deeplink;
// リンクにパススルー・パラメータが追加されている場合。
string passthrough = linkParams.Passthrough;
// 遅延ディープリンクとして設定されたリンクかどうか。
bool isLinkDeferred = linkParams.IsDeferred;
// ディープリンクを処理するコードをここに追加する
Debug.Log("Singular === deeplink: "+deeplink);
Debug.Log("Singular === passthrough: "+passthrough);
Debug.Log("Singular === isLinkDeferred: "+isLinkDeferred);
}
}
メソッドリファレンス
SetSingularLinkHandler メソッド | |
---|---|
説明 | アプリを開くきっかけとなったトラッキングリンクの詳細を取得するハンドラを登録します。 |
シグネチャ |
|
使用例 |
|
OnSingularLinkResolved メソッド | |
---|---|
説明 | SetSingularLinkHandlerの コールバックメソッド。 トラッキングリンクの詳細を読み込み、処理します。 |
シグネチャ |
注: SingularLinkParamsオブジェクトには以下の値が含まれます:
|
使用例 |
|
レガシーリンクでディープリンクを処理する
あなたの組織がレガシーリンクを使用している場合、上記のSingularLinksHandlerの代わりにSingularDeferredDeepLinkHandlerという ディープリンク用のハンドラを実装する必要があります。実装は非常に似ています。
もしあなたがSingularの古い顧客であれば、新しいSingular Linksではなくレガシーリンク(Singularの古いトラッキングリンクの仕組み)を使っているかもしれません。レガシーリンクはリンクの作成と リンクの表示ページで管理され、ディープリンクとディファードディープリンクの機能を提供します。
- SingularDeferredDeepLinkHandlerインターフェースを実装します。
- クラスの任意の場所でSetDeferredDeepLinkHandlerメソッドを呼び出し、クラスをディープリンクのハンドラとして登録します。
- SetDeferredDeepLinkHandler を呼び出すと、Singular SDKはトラッキングリンクを取得し、OnDeferredDeepLinkメソッドを呼び出し、トラッキングリンクの詳細を渡します。リンクの詳細を読み込んで処理するには、このメソッドをオーバーライドします。
以下のサンプルコードは3つのステップを示しています:
public class Main : SingularDeferredDeepLinkHandler {
// ...
void Awake () {
// ディープリンク・ハンドラとしてクラスを登録します。
// このメソッドは、アプリの実行中のどの時点でも呼び出すことができます。
SingularSDK.SetDeferredDeepLinkHandler(this);
}
public void OnDeferredDeepLink(string deeplink) {
// ディープリンクを処理するコードはここにある。
// この例では、ディープリンクはログに記録されるだけです。
Debug.Log ("Deep link received:" + deeplink);
}
// ...
ddlTimeoutSec値(遅延されたディープリンクのタイムアウト)がまだ経過していない場合、遅延されたディープリンクの値(利用可能な場合)が渡されます。ddlTimeoutSecは、SingularSDKObject の検査ペインから設定できます。2.5.SDKの初期化
注意:Singular SDKを実装する際には、GDPR、CCPA、COPPAなど、ビジネスを行う地域で制定されているさまざまなプライバシー法を遵守することを忘れないでください。詳しくはSDKのオプトインとオプトアウトをご覧ください。
SDK初期化コードは、アプリを開くたびに呼び出される必要があります。これはすべてのSingularアトリビューション機能の前提条件であり、新しいセッションをSingularに送信し、ユーザー保持の計算に使用されます。
デフォルトでは、SingularSDK.csはAwakeメソッドを通してシーンが作成されたときに自動的にSDKを初期化します。
手動での初期化
アプリの実行の後の時点でSDKを手動で初期化したい場合は、次のようにしてください:
- SingularSDKオブジェクトの検査ペインのInitialize on Awakeオプションを無効にします。
- SingularSDK.InitializeSingularSDK静的メソッドを使用してSDKを初期化します:
SingularSDK.InitializeSingularSDK メソッド | |
---|---|
説明 | SingularSDKがAwake時に初期化されていない場合、初期化します。 |
シグネチャ |
|
使用例 |
|
スレッドセーフに関する注意: Singular Unity SDKは、他のUnityメソッドを呼び出すのと同様に、常に同じスレッドから呼び出す必要があります。
2.6.セッションタイムアウトの設定(オプション)
デフォルトでは、アプリがバックグラウンドで60秒以上実行されてからフォアグラウンドに戻ると、Singular SDKは新しいセッションを登録します。SingularSDKObjectのSession Timeout Secプロパティを変更することで、デフォルトのタイムアウト値を変更できます。
2.7.ユーザーIDをSingularに送信する(オプション)
Singular SDKのメソッドを使用して、内部ユーザーIDをSingularに送信することができます。
注意: Singularのクロスデバイスソリューションを使用する場合は、すべてのプラットフォームでユーザーIDを収集する必要があります。
- ユーザーIDはどのような識別子でもかまいませんが、PII(個人を特定できる情報)を公開すべきではありません。例えば、ユーザーのメールアドレス、ユーザー名、電話番号は使用しないでください。Singularは、ファーストパーティデータにのみユニークなハッシュ値を使用することを推奨します。
- Singularに渡すユーザーIDは、すべてのプラットフォーム(ウェブ/モバイル/PC/コンソール/オフライン)で同じ内部ユーザーIDを使用する必要があります。
- Singularはユーザーレベルのエクスポート、ETL、内部BIポストバック(設定されている場合)にユーザーIDを含めます。ユーザーIDはファーストパーティデータであり、Singularが他者と共有することはありません。
- Singular SDKメソッドで設定されたユーザーIDの値は、UnsetCustomUserId メソッドで設定が解除されるか、アプリがアンインストールされるまで保持されます。アプリを終了または再起動しても、ユーザーIDはアンセットされません。
ユーザーIDを設定するには、SetCustomUserId メソッドを使用します。設定を解除するには(ユーザがアカウントから「ログアウト」した場合など)、UnsetCustomUserId を呼び出してください。
注:複数のユーザが1つのデバイスを使用する場合、ログインとログアウトのたびにユーザIDを設定および解除するログアウトフローを実装することを推奨します。
アプリを開いたときにすでにユーザーIDがわかっている場合は、Singular SDKを初期化する前にSetCustomUserId 。こうすることで、Singularは最初のセッションからユーザーIDを取得できます。しかし、ユーザーIDは通常、ユーザーが登録するかログインを実行するまで取得できません。その場合は、登録フローが完了した後にSetCustomUserId 。
SingularSDK.SetCustomUserId メソッド | |
---|---|
説明 | ユーザーIDをSingularに送信します。 |
シグネチャ | public void SetCustomUserId(string customUserId) |
使用例 |
|
SingularSDK.UnsetCustomUserId メソッド | |
説明 | Singular に送信されたユーザー ID の設定を解除します。 |
シグネチャ | public void UnsetCustomUserId() |
使用例 |
|
重要:この高度なエンタープライズ機能は、例外的な場合にのみ使用できます。実装する前にSingularのソリューションエンジニアにご相談ください。
Singularはサーバー間の統合により、追加のモバイルイベント追跡データを受け取ることができます。この機能を利用するには、ユーザーIDをSingularのモバイルデバイス追跡識別子にマッピングする必要があります。
注意:Singular SDKを初期化した後、またはユーザーIDを取得した後、できるだけ早くこのメソッドを呼び出してください。
SingularSDK.SetDeviceCustomUserId メソッド | |
---|---|
説明 | ログインと同じカスタムユーザーIDを設定し、Singularのトラッキング識別子にマッピングします。 |
シグネチャ | public void SetDeviceCustomUserId(string customUserId) |
使用例 |
|
3.イベントと収益のトラッキング
3.1.イベントのトラッキング(非収益)
Singularはアプリ内イベントに関するデータを収集し、キャンペーンのパフォーマンス分析やKPIの測定に役立てることができます。例えば、ゲームアプリでユーザーのログイン、登録、チュートリアルの完了、レベルアップなどのデータを収集したい場合があります。
Singularは様々な 標準イベントをサポートしています。広告ネットワークは多くの場合、レポートや最適化のために一般的に使用されるこれらのイベントをサポートしています。もう一つの利点は、標準的なイベント名を使用すると、Singularが自動的に認識し、手動で定義しなくてもイベントリストに追加されることです。可能な限り標準イベントを使用することをお勧めします。
Singularに送信されるイベントのリスト(付随する属性付き)は、組織のマーケティングKPIに基づいてUA/マーケティング/ビジネスチームが作成する必要があります。ビジネスチームはHow to Track In-App Eventsに従うことができます:Guide For Singular Attribution Customers.
追跡するイベントごとに、さまざまな属性を渡すことができます。イベントごとの推奨標準属性を参照してください。
コード内の event または eventWithArgs メソッドを使用して、標準イベントを Singular に送信します。
注:標準イベントの場合は、Unity SDK List of Standard Events and Attributesに表示されているイベントのUnity名を使用します(例:sngLogin)。
SingularSDK.Event(Events.sngLogin);
カスタムイベント(Singularの標準イベントのどれにも一致しない、あなたの組織が測定したいイベント)の場合は、任意のカスタム名(最大32文字)を使用してください。最適化のためにSingularからイベントを受け取る可能性のある広告ネットワークパートナーとの互換性のために、英語の名前を使用することをお勧めします。
SingularSDK.Event メソッド | |
---|---|
説明 | トラッキングのためにユーザーイベントをSingularに送信します。 |
シグネチャ |
|
|
|
|
|
注意:辞書を渡す場合、辞書の値は以下のいずれかの型でなければなりません: string, int, long, float, double, null, ArrayList, Dictionary<string, object>. | |
使用例 |
|
|
|
|
3.2.収益の追跡
Singularはアプリを通じて得た収益に関するデータを収集し、キャンペーンのパフォーマンスやROIの分析に役立てることができます。Singularはレポート、ログエクスポート、ポストバックでデータを利用できるようにします。
注意事項 異なる通貨で報告された収益は、Singularアカウントで設定された組織の優先通貨に自動変換されます。
UnityのビルトインIAP(アプリ内課金)オブジェクトを使って収益イベントをトラッキングできます。こうすることで、Singularは購入に関するすべての情報を取得し、より豊富なレポートを作成できます。Singularは購入レシートも取得し、これをバックエンドで使用して購入を検証し、アトリビューション詐欺を除外します。
SingularSDK.InAppPurchaseメソッド |
|
---|---|
説明 | 購入イベントを追跡するために、Singular に IAP 製品を送信します。 |
署名 |
|
|
|
|
|
|
|
注釈
|
|
使用例 |
|
|
|
|
|
|
|
|
Unity IAPを使用できない場合、Singular SDKは購入に関する情報を "手動で "Singularに渡すための2つのメソッドを提供します:
- Revenueを使用すると、トランザクションの通貨、金額、その他のオプションの詳細情報をSingularに渡すことができます。
- CustomRevenueも同様ですが、イベントにカスタム名を付けることができます。
注意:InAppPurchaseの代わりにRevenue/CustomRevenueを使用すると、Singularは購入レシートを確認できません。
SingularSDK.Revenueメソッド |
|
---|---|
説明 | 収益イベントをSingularに送信します。 |
署名 |
|
|
|
|
|
注意:通貨は "USD"、"EUR"、"INR "のような3文字のISO 4217通貨コードで渡します。
|
|
使用例 |
|
|
|
|
SingularSDK.CustomRevenueメソッド |
|
---|---|
説明 | カスタム名の収益イベントを Singular に送信します。 |
署名 |
|
|
|
|
|
注意:通貨は、"USD"、"EUR"、"INR" のような 3 文字の ISO 4217 通貨コードで渡します。
|
|
使用例 |
|
|
|
|
3.3.ハイブリッドイベント追跡(上級者向け)
Singularは、アプリに統合されたSingular SDKを通してすべてのイベントと収益を送信することを推奨しています。しかし、Singularは他のソースからイベントや収益を収集することもできます。
Singular SDKから送信されないイベントは、Singularのサーバー間イベントドキュメンテーション要件に準拠し、イベントの属性を正しく設定するために一致するデバイス識別子を提供する必要があります。
重要です:
Server-to-Server イベントリクエストで使用されるデバイス識別子がSingularで一致しない場合、不一致が発生します。以下の可能性に注意してください:
- イベントリクエストがSingular SDKがアプリセッションからデバイス識別子を記録する「前」に受信された場合、そのイベントリクエストは未知のデバイスの「最初のセッション」とみなされ、Singularはそのデバイスをオーガニックアトリビューションとしてアトリビュートします。
- Singular SDK がデバイス識別子を記録したが、Singular SDK の識別子が Server-to-Server Event リクエストで指定されたデバイス識別子と異なる場合、イベントの帰属は正しくありません。
ハイブリッド・イベント追跡ガイド
Singularはお客様のサーバーから収益に関するデータを収集し、キャンペーンのパフォーマンスやROIの分析に役立てることができます。
要件
- アプリ内登録またはログインイベントから、デバイス識別子を取得して渡し、このデータをユーザーIDと共にサーバーに保存します。デバイス識別子はユーザーによって変更される可能性があるため、ユーザーがアプリセッションを生成する際には必ず識別子を更新してください。これにより、サーバー側イベントが正しいデバイスに帰属することが保証されます。
- サーバー側イベントはプラットフォーム固有であるため、デバイスプラットフォーム(iOS デバイスの IDFA または IDFV など)に一致するデバイス識別子のみを使用して送信する必要があります。
- Singular 内部 BI ポストバック メカニズムを使用して、内部エンドポイントにリアルタイムでイベントをプッシュすると、サーバー側でデータセットを更新できます。内部 BI ポストバック FAQ を参照してください。
- 詳細については、『サーバー間統合』ガイドの「収益の追跡」セクションを参照してください。
これらのパートナーを有効にする方法の詳細については、以下のリンクを参照してください。
- 詳しくはRevenueCatのドキュメントをご覧ください。
- 詳細はadaptyのドキュメントをご覧ください。
4.詳細オプション
4.1.ショートリファラーリンクの作成
注:この機能はSDKバージョン4.0.16以上で利用可能です。
ショートリンクを使用すると、パラメータがいっぱいの長いシンギュラーリンクを、共有に便利な短くて安全なリンクに変換できます。
通常、ショートリンクを動的に作成し、アプリのユーザーが友達と共有してアプリの使用を招待できるようにします。
ショートリンクを作成するには
- アプリのダウンロードにつながるSingularリンク(SingularリンクのFAQを参照してください)。
- リンクに必要なパラメータを動的に追加することができます(オプションのリストはトラッキングリンクパラメータをご覧ください)。
- 新規アプリのインストールを、リンクを共有したユーザーにさかのぼって追跡したい場合は、参照元ユーザーのリファラー名とリファラーIDを指定する必要があります。
以下の例のように、createReferrerShortLinkメソッドを使用してショートリンクを作成します。
void callback(string shortLinkURL, string error){
// shortLinkURL が NULL でない場合、ここに共有ロジックを追加する
// エラーが発生した場合、再試行/中止/パラメータを変更するロジックを追加する。
// エラーの原因に応じて、関数に渡されたパラメータを変更するロジックを追加します。
}
SingularSDK.createReferrerShortLink(
"https://sample.sng.link/B4tbm/v8fp?_dl=https%3A%2F%2Fabc.com",
"John Doe", // 紹介者名
"342", // リファラーID
new Dictionary<string, string>() {
// 追加したいパラメータを含む辞書オブジェクト
{"channel", "sms"}
},
callback
);
4.2.広告収入アトリビューションサポートの追加
SingularはGoogle AdMob、AppLovin、Unity LevelPlay (IronSource)、TradPlusなどの広告収益アトリビューション用のメディエーションプラットフォームと統合されています。また、Singularは一般的な広告収益SDKの統合により、他のメディエーションプラットフォームもサポートしています。
メディエーションプラットフォームから広告収益アトリビューションデータを取得するには、Singular SDKインテグレーションにコードスニペットを追加します。これにより、SKAdNetworkキャンペーンの広告収入データを取得することもできます。
メディエーションプラットフォームからユーザーレベルの広告収益を取得することで、Singularはこのデータを受け入れることができるメディアソースにアトリビューションされた広告収益を送り返し、AdROASキャンペーンを実施することができます。
SDKの実装方法とコードスニペットはこちら[HERE]をご覧ください。
4.3.アンインストールのトラッキング
注意:アンインストールのトラッキングは、エンタープライズのお客様のみご利用いただけます。
Android アンインストール追跡
Android アプリのアンインストールトラッキングを有効にするには、まず、 アンインストールトラッキングの設定の詳細に従って、Singular プラットフォームでアプリを設定します。その後、以下の手順に従ってください。
注: Googleは2018年4月にGCM APIを廃止しました。アンインストールトラッキングにはFCMを使用してください。
Firebase Cloud Messaging (FCM) を使用してアンインストールトラッキングを有効にする:
1.FCM と統合します:
アンインストールをトラッキングするには、Firebase Cloud Messaging (FCM) プラットフォームのサービスを利用できます。FCM をまだ使用していない場合は、 Android で Firebase Cloud Messaging クライアントアプリをセットアップする方法について Google の説明に従ってください。
FCMの要件(ソース)
FCMクライアントには、Google PlayストアアプリがインストールされたAndroid 4.1以上のデバイス、またはGoogle APIがインストールされたAndroid 4.1が動作するエミュレータが必要です。なお、AndroidアプリのデプロイはGoogle Playストアに限定されません。
サポートされているバージョンのAndroidで動作していないユーザー/デバイスは、Singularのアンインストールトラッキングをご利用いただけません。
2.AndroidManifest.xml ファイルを更新します:
AndroidManifest.xml ファイルを更新して、アプリに必要なインテント フィルタを追加します(MyFirebaseMessagingService を Firebase Service を実装するクラスで置き換えます):
<service android:name=".java.MyFirebaseMessagingService" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
3.FCM デバイストークンを登録し、送信します:
FCM トークンを取得したら、'RegisterTokenForUninstall' メソッドにパラメータとして渡します:
SingularSDK.RegisterTokenForUninstall(String fcmDeviceToken);
RegisterTokenForUninstall' メソッドは、'SingularSDK.InitializeSingularSDK()' メソッドの前に呼び出します。
iOS のアンインストールトラッキング
iOS のアンインストールトラッキングは、Apple のプッシュ通知技術に基づいています。アプリがプッシュ通知に対応していない場合は、Apple の ガイドを参照してください。アプリがすでにプッシュ通知をサポートしている場合は、SDK の初期化後に RegisterTokenForUninstall メソッドを使用して APNS から返されたデバイストークンを渡す必要があります。
SingularSDK.RegisterTokenForUninstall メソッド |
|
---|---|
説明 | APNS から返されたデバイストークンを渡します。APNS トークンは通常ネイティブ形式のバイナリデータですが、文字列として渡す必要があります。 |
シグネチャ |
|
使用例 |
|
4.4.グローバル・プロパティの追加
アプリから送信されるセッションやイベントごとに、Singular SDKではSingularサーバーに送信する追加のカスタムプロパティを定義できます。 これらのプロパティは、ユーザーやアプリのモード、ステータスなど、あらゆる情報を表すことができます。これらのプロパティを設定すると、レポートのディメンションとして利用できるようになり、データを分解するために使用することができます。
例えば、ゲームアプリがある場合、"Level "というプロパティを定義し、初期値として "0 "を設定することができます。アプリから送信されるすべてのセッションとイベントは、"Level":"0".ユーザがレベルアップしたら、プロパティを "1 "にリセットします。そうすると、セッション、イベント数、収益データなどのレポートをユーザーレベル別に取得することができます。
- グローバル・プロパティは5つまで定義できます。
- これらのプロパティは、あなたが設定を解除するか、ユーザーがアプリをアンインストールするまで、アプリの実行間で(あなたが与えた最新の値で)永続します。
- 各プロパティ名と値の長さは200文字までです。これより長いプロパティ名や値を渡すと、200文字に切り詰められます。
- グローバル・プロパティにはアクセス可能で、ユーザレベルのエクスポートと ポストバックで使用できます。将来的には、集計レポートのサポートが追加される予定です。グローバルプロパティのサポートに関するご質問やアップデートにご興味がある場合は、Singularカスタマーサクセスマネージャーにお知らせください!
初期化前のグローバルプロパティの設定
SDKを初期化する前に、SetGlobalProperty メソッドを使用してSingularSDKを通してグローバルプロパティを設定することができます。グローバルプロパティをセッションに含めたい場合は、'Initialize On awake'フラグをオフにしてください。
グローバルプロパティとその値はアプリの実行間で持続するため、設定するプロパティはすでに別の値に設定されている可能性があります。overrideExistingパラメータを使用して、既存のプロパティを新しい値で上書きするかどうかをSDKに指示します。
初期化後のグローバル・プロパティの設定
以下のメソッドを使用して、アプリの実行中にいつでもグローバルプロパティを設定、解除、取得できます。
SingularSDK.SetGlobalPropertyメソッド | |
---|---|
説明 |
グローバルプロパティを指定された値に設定します。 注意事項
|
シグニチャ | public static bool SetGlobalProperty(string key, string value, bool overrideExisting) |
使用例 |
|
SingularSDK.GetGlobalProperties メソッド | |
説明 | すべてのグローバル プロパティとその現在の値を Map として取得します。 |
シグネチャ | public static Dictionary<string, string> GetGlobalProperties() |
使用例 |
|
SingularSDK.UnsetGlobalProperty メソッド | |
説明 | グローバルプロパティを削除します。 |
シグネチャ | public static void UnsetGlobalProperty(string key) |
使用例 |
|
SingularSDK.ClearGlobalProperties メソッド | |
説明 | すべてのグローバルプロパティを削除します。 |
シグネチャ | public static void ClearGlobalProperties() |
使用例 |
|
4.5.古い Android 端末でのインストールリファラの収集
Android では、インストールリファラーはアトリビューションを決定し、Singular が不正行為の検出と分析を行うための最も正確なツールです。これはGoogle Playストアが提供する識別子で、ユーザーがアプリをインストールする前にクリックした広告を指します。
最新のGoogle Playストアのバージョンを持つデバイスでは、Singular SDKが自動的にインストールリファラーの値を収集します(Singularは最新のGoogle Play Referrer APIと統合されているため)。
古いデバイスでインストールリファラーを収集するには、Android SDKガイドの指示に従ってください。
5.データプライバシー法の遵守
5.1.データ共有の制限
Singularは、GDPRやCCPA(カリフォルニア州消費者プライバシー法)などの消費者プライバシー法を遵守している可能性のあるパートナーに協力するためのプライバシー保護機能を提供しています。このようなパートナーは、エンドユーザーが個人情報の共有に同意した場合に通知されることを望んでいます。
データ共有の制限
ユーザーに情報共有の同意を求める方法を実装している場合は、limitDataSharingメソッドを使用してユーザーの選択をSingularに通知します:
- limitDataSharing:NO を使用して、ユーザーが情報の共有に同意した (オプトインした) ことを示します。
- ユーザーが同意しなかった場合はlimitDataSharing:YESを使用します。
Singularは「ユーザープライバシーのポストバック」でLimitDataSharingを使用し、関連法規を遵守するために必要なパートナーにこの情報を渡します。詳しくは「ユーザーのプライバシーとデータ共有の制限」をご覧ください。
注意:このメソッドの使用は任意ですが、ユーザーがオプトインしたことが特に通知された場合に限り、パートナーはSingularとアトリビューション情報を共有することができます。
SingularSDK.LimitDataSharingメソッド | |
---|---|
シグネチャ | SingularSDK.LimitDataSharing(boolshouldLimitDataSharing) |
説明 | 個人データの共有に関するユーザーの同意(オプトイン)をSingularに通知します。Limit Data Sharing(データ共有の制限)メソッドは、アプリがユーザーデータをサードパーティに送信するかどうかを制御するオプションを提供します。これは、ユーザーの好みやプライバシー要件に基づいてデータ共有を制限したい場合に便利です。 |
使用例 |
|
5.2.GDPR準拠のための追加メソッド
Singular SDKは、GDPRポリシーに準拠し、トラッキングに対するユーザーの同意または非同意についてSingularに知らせるためのメソッドをいくつか提供しています。
SingularSDK.TrackingOptInメソッド | |
---|---|
説明 | トラッキングに対するユーザーの同意(オプトイン)をSingularに通知する。TrackingOptIn()メソッドは、「gdpr 」イベントをSingularサーバーに送信するために使用されます。このメソッドを呼び出さない場合、アプリはユーザーが同意したかのようにトラッキングを続けますが、特にGDPRオプトインとしてマークされることはありません。アプリがGDPR(一般データ保護規則)に準拠する必要がある場合は、ユーザーの同意が適切に記録されるように、この関数を呼び出す必要があります。 |
使用例 |
|
SingularSDK.StopAllTrackingメソッド | |
説明 | このアプリでのこのユーザーのすべてのトラッキング活動を停止します。
注意: このメソッドは、アプリが再起動した後でも、SDKを効果的に無効にします(状態は永続的です)!トラッキングを再度有効にする唯一の方法は、resumeAllTracking()を呼び出すことです。
|
使用例 |
|
SingularSDK.ResumeAllTrackingメソッド | |
説明 | このアプリのこのユーザのトラッキングを再開します。 |
使用例 |
|
SingularSDK.IsAllTrackingStopped メソッド | |
説明 | このアプリのこのユーザーのトラッキング状況を確認します。StopAllTracking()を使用してトラッキングが停止され、再開されていない場合はtrueを返します。 |
使用例 |
|