高度なオプション

ドキュメント

詳細オプション

古いデバイスでインストールリファラーを収集する

注意: Google は install_referrer インテント放送を廃止する予定です。こちらを参照してください:まだ InstallBroadcast を使用していますか?2020 年 3 月 1 日までに Play Referrer API に切り替えてください。

インストールリファラーは、アトリビューションを決定するための Singular の最も正確なツールであり、Singular の不正行為の検出と分析にも役立ちます。これはGoogle Playストアが提供する識別子で、ユーザーがアプリをインストールする前にクリックした広告を指します。

最新バージョンのGoogle Playストアがあるデバイスでは、Singular SDKはインストールリファラーの値を自動的に収集します(Singularは最新のGoogle Play Referrer APIと統合されているため)。

古いデバイスでインストールリファラーを収集するには:

既存のインストールリファラー受信機がある場合:

あなたのアプリには、AndroidからINSTALL_REFERRERを受信するBroadcastReceiverがすでにある可能性があります。

その場合は、BroadcastReceiverのonReceiveメソッドに次の行を追加します:

java
new SingularInstallReceiver().onReceive(context, intent);

例えば、既存の受信機がMyCustomInstallReceiverという名前の場合、次のようになります:

java
public class MyCustomInstallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Pass install referrer information on to Singular

        new SingularInstallReceiver().onReceive(context, intent);
        // ...

    }
}

他にインストール・リファラ・レシーバがない場合:

アプリにインストールリファラーレシーバーがない場合は、マニフェストファイルの<application>タグに次の行を追加するだけで、Singular SDKに唯一のレシーバーを登録させることができます:

xml
<receiver android:exported="true" android:name="com.singular.sdk.SingularInstallReceiver">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

セッションの手動管理

Android API 14(Ice Cream Sandwich)以上の場合、Singular SDKはセッション管理を自動的に行うことができます。アプリの minSdkVersion が 14 以上の場合、セッション管理に追加の設定は必要ありません。

セッションタイムアウトの変更

デフォルトでは、アプリがバックグラウンドで60秒以上実行されてからフォアグラウンドに戻ると、SDKは新しいセッションを登録します。

タイムアウト値を変更するには、SDKを初期化する前にSingularConfigで withSessionTimeoutInSec(<timeout in seconds>)を使用します。

java
// Set the session timeout to 120 seconds

SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withSessionTimeoutInSec(120); 

手動セッション管理

アプリのminSdkVersionが14以下の場合、SingularのSDKの2つのセッション処理メソッド、onActivityPausedと onActivityResumedを各アクティビティから呼び出して、セッションを手動で管理する必要があります。

注: 他のすべてのアクティビティが派生している共通の基本アクティビティクラスがある場合、onActivityResumedとonActivityPausedの呼び出しを共通アクティビティの "onResumeとonPauseメソッド "に置くことができます。

Singular.onActivityResumedメソッド
説明 アクティビティのonResumeメソッド内でこのメソッドを呼び出し、Singularセッションを管理します。
シグネチャ public static void onActivityResumed()
使用例
java
@Override
protected void onResume() {
    super.onResume();
    Singular.onActivityResumed();
    .... //other code if any
}
Singular.onActivityPaused メソッド
説明 アクティビティのonPauseメソッド内でこのメソッドを呼び出し、Singularセッションを管理します。
シグネチャ public static void onActivityPaused()
使用例
java
@Override
protected void onPause() {
    super.onPause();
    Singular.onActivityPaused();
    .... //other code if any
}

JavaScriptインターフェースの使用

SingularはJavaScriptインターフェースを提供しており、アプリ内のJavaScriptコードからSingularを呼び出すために使用できます。

例えば、JavaScriptインターフェースを設定すると、JavaScriptコードから以下のようにSingularにイベントを送ることができます:

イベントの例

javascript
SingularInterface.event('event');
SingularInterface.event('test',
    JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));

このインターフェースは以下のSDKメソッドをサポートしています:

  • setCustomUserID
  • unsetCustomUserID
  • イベント
  • 収益

JavaScriptインターフェースを有効にするには、メインアクティビティに以下のコード行を追加してください。

java
SingularJSInterface singularJSInterfaceInstance = new SingularJSInterface(this);
singularJSInterfaceInstance.setWebViewId(R.id.webview);
myWebView.addjavascriptInterface(singularJSInterfaceInstance, "SingularInterface");

注意

  • 複数のウェブビューがある場合は、それぞれのウェブビューに対してこの操作を行ってください。
  • アプリケーションのonCreateメソッドにコードを配置することをお勧めします。

onCreateメソッドは以下のようになります:

java
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WebView myWebView = (WebView) this.findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setjavaScriptEnabled(true);
    myWebView.loadUrl("file:///android_asset/index.html");

    SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET");
    Singular.init(this, config);
    SingularJSInterface singularJSInterfaceInstance = 
        new SingularJSInterface(this);
    singularJSInterfaceInstance.setWebViewId(R.id.webview);
    myWebView.addjavascriptInterface(singularJSInterfaceInstance,
        "SingularInterface");
}

OAID(オープン広告ID)の収集

Google Playを使用していない国では、Android端末はGoogle Advertising ID(GAID、SingularではAIFAとも呼ばれる)を持っていません。その代わりに、端末からのセッションやイベントを追跡するために使用できるOAID(Open Advertising Identifier)と呼ばれる識別子を端末が提供している場合があります。

OAIDは現在、ファーウェイやMSA(Mobile Security Alliance)に属するブランドのデバイスで提供されています。

あなたのアプリがOAIDを収集するには、まずMSA SDKと Huawei OAID SDKを統合する必要があります。OAIDを提供するすべてのプラットフォームでOAIDを収集できるようにするには、両方のSDKを統合する必要があります。

次に、トラッキングにOAIDを使用するようSingular SDKに指示するため、Singularを初期化する前にconfigオブジェクトにwithOAIDCollectionの呼び出しを追加します。

java
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
    .withOAIDCollection();
Singular.init(context, config);

Singular SDKはデバイスがOAIDを持っているかどうか、また識別子を収集するためにどのOAID SDKを使うべきかを自動的に検出します。


IMEI番号の収集

Google Playを使用していない国でアプリを提供する場合、端末にはGoogle Advertising IDがありません。この場合、代わりに端末のIMEI(International Mobile Equipment Identity)を収集するとよいでしょう。

注意:Google Playサービスを利用している場合、IMEI番号の収集はGoogle Playサービスの規約違反となるため、行うべきではありません。

IMEI番号を収集するには

アプリのAndroidManifest.xmlファイルにandroid.permission.READ_PHONE_STATEパーミッションを追加する:

xml
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

以下のようなコードを追加して、デバイスのIMEI番号を取得します:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

String imei = null;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    imei = telephonyManager.getImei();
} else {
    imei = telephonyManager.getDeviceId();
}

IMEI番号をSingularに送信するには、以下のいずれかの方法を使用する:

推奨: 次の例のように、Singular SDKを初期化する前にwithIMEIを使って SingularConfigにIMEI番号を設定します。これにより、最初のセッションからSingularがIMEI番号を利用できるようになります。

java
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
  .withIMEI("537769845792516");
Singular.init(context, config);

SDKの初期化後のコードの任意の時点でIMEI番号を設定するには、setIMEIを呼び出します。

Singular.setIMEIメソッド
説明 デバイスのIMEI番号をSingularに送信します。
シグネチャ public void setIMEI(string IMEIString)
使用例
java
Singular.setIMEI(IMEIString);