高级选项
在旧设备上收集安装 Referrer
注意:Google 正在淘汰 install_referrer 意向广播。请参阅:还在使用 InstallBroadcast?在 2020 年 3 月 1 日前切换到播放推荐人 API
安装推荐人是 Singular 确定归属的最准确工具,此外还能帮助 Singular 检测和分析欺诈企图。它是 Google Play 商店提供的标识符,指向用户在安装应用程序之前点击的广告。
在安装了最新版 Google Play Store 的设备上,Singular SDK 会自动收集安装推荐值(因为 Singular 已集成了最新的Google Play Referrer API)。
在旧版设备上收集安装推荐人:
如果您已有安装推荐人接收器:
你的应用程序很可能已经有了一个广播接收器(BroadcastReceiver),可以接收来自 Android 的 INSTALL_REFERRER。
如果是这样,只需在 BroadcastReceiver 的onReceive方法中添加以下一行即可:
new SingularInstallReceiver().onReceive(context, intent);
例如,如果您现有的接收器名为 MyCustomInstallReceiver,它应该如下所示:
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 注册唯一的接收器:
<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(冰淇淋三明治)及以上版本,Singular SDK 可以自动处理会话管理。如果你的应用程序的 minSdkVersion 是 14 或更高,则无需为会话管理进行额外配置。
修改会话超时
默认情况下,如果应用程序在后台运行 60 秒或更长时间后才返回前台,SDK 就会注册一个新会话。
要更改超时值,请在初始化 SDK 前在SingularConfig中使用withSessionTimeoutInSec(<timeout in seconds>)。
例如
// Set the session timeout to 120 seconds
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withSessionTimeoutInSec(120);
手动会话管理
如果你的应用程序的 minSdkVersion 低于 14,你需要通过调用 Singular's SDK 的两个会话处理方法(onActivityPaused和onActivityResumed)来手动管理会话。
注: 如果你有一个自定义的通用基础活动类,所有其他活动都是从该类派生出来的,那么你可以将这些对 onActivityResumed 和 onActivityPaused 的调用放在通用活动的 "onResume 和 onPause 方法 "中。
Singular.onActivityResumed 方法 | |
---|---|
说明 | 在活动的 onResume 方法中调用此方法来管理 Singular 会话。 |
签名 | public static void onActivityResumed() |
使用示例 |
|
Singular.onActivityPaused 方法 | |
说明 | 在活动的 onPause 方法中调用此方法来管理 Singular 会话。 |
签名 | public static void onActivityPaused() |
使用示例 |
|
使用 JavaScript 接口
Singular 提供了一个 JavaScript 接口,你可以用它在应用程序的 javaScript 代码中调用 Singular。
例如,如果设置了 JavaScript 接口,就可以通过 JavaScript 代码向 Singular 发送以下事件:
事件示例
SingularInterface.event('event');
SingularInterface.event('test',
JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));
该接口支持以下 SDK 方法:
- 设置客户用户 ID
- unsetCustomUserID
- 事件
- 收入
要启用 JavaScript 界面,请在主活动中添加以下代码行,其中 "myWebView "是 webview 的名称。
SingularJSInterface singularJSInterfaceInstance = new SingularJSInterface(this);
singularJSInterfaceInstance.setWebViewId(R.id.webview);
myWebView.addjavascriptInterface(singularJSInterfaceInstance, "SingularInterface");
注意:
- 如果您有多个网络视图,请为每个视图都添加此代码。
- 我们建议将代码放在应用程序的 onCreate 方法中。
您的 onCreate 方法可能如下所示:
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 的国家/地区,安卓设备没有谷歌广告 ID(GAID,在 Singular 中也称为 AIFA)。取而代之的是,设备可以提供一种名为 OAID(开放式广告标识符)的标识符,用于跟踪来自设备的会话和事件。
目前,华为和属于移动安全联盟(MSA)的品牌都在设备上提供 OAID。
您的应用程序要收集 OAID,首先必须集成MSA SDK和华为 OAID SDK。您需要集成这两个 SDK,才能在所有提供 OAID 的平台上收集 OAID。
然后,要告诉 Singular SDK 使用 OAID 进行跟踪,请在初始化 Singular 之前,在配置对象中添加对withOAIDCollection的调用。
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(国际移动设备识别码)。
注意:如果使用 Google Play 服务,则不应收集 IMEI 号码,因为这违反了 Google Play 服务协议。
要收集 IMEI 号码
在应用程序的 AndroidManifest.xml 文件中添加android.permission.READ_PHONE_STATE权限:
<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();
}
要向 Singular 发送 IMEI 号码,请使用以下方法之一:
建议使用 在初始化 Singular SDK 之前,使用withIMEI在SingularConfig中设置 IMEI 号码,如下例所示。这样,Singular 就可以从第一次会话开始使用 IMEI 号码。
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
.withIMEI("537769845792516");
Singular.init(context, config);
要在 SDK 初始化后的任何代码中设置 IMEI 号码,请调用setIMEI。
Singular.setIMEI 方法 | |
---|---|
说明 | 向 Singular 发送设备的 IMEI 号码。 |
签名 | public void setIMEI(string IMEIString) |
使用示例 |
|