中文 EN RU 中文

Unity

最低要求

Android

  • Android api level 14 (android 4.0).

  • android.permission.INTERNET权限。

  • android.permission.ACCESS_NETWORK_STATE权限。

  • com.google.android.gms.permission.AD_ID permission.

  • 项目一定要有Google Play Services程序库(com.google.android.gms:play-services-ads-identifier模块)。

  • 项目一定要有Google Play Install Referrer程序库(com.android.installreferrer:installreferrer模块)。

iOS

  • iOS 9.0.

  • 将AdSupport、SystemConfiguration、CoreTelephony、CoreData、 UIKit、iAd、StoreKit框架连接到项目、AdServices。

  • 将libz.tbd程序库连接到项目。

集成

  • 将myTracker.unitypackage包(最新版本参见https://github.com/myTrackerSDK/mytracker-unity/releases) 导入您的Unity项目中。

  • 为了构建Android版,您需要通过Assets → Play Services Resolver → Android Resolver → Resolve Client Jars将依赖项添加到项目中。

  • 为了构建iOS版,您需要在创建项目的xCode后,通过CocoaPods将依赖项添加到项目中。


AndroidManifest.xml

Unity环境支持默认清单文件(manifest)与不同插件的清单文件的合并。在出现错误或后期处理情况下,可能需要手动调整Android应用程序的清单文件。为了确保正确运行,清单文件要设定以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

为了确保跟踪清单中的流量来源,在清单文件中应指定服务(service)和接收器(receiver):

<application>
    <receiver android:name="com.my.tracker.campaign.MultipleInstallReceiver"
              android:permission="android.permission.INSTALL_PACKAGES"
              android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER"/>
        </intent-filter>
    </receiver>
    <service android:name="com.my.tracker.campaign.CampaignService" />

</application>

Proguard

如果您使用的是Proguard,则需要添加例外:

-keep class com.my.tracker.** { *; }
-dontwarn com.my.tracker.**
-keep class com.android.installreferrer.** { *; }
-keep class com.android.vending.billing.** { *; }
-keep class com.android.billingclient.api.** { *; }
-keep class com.google.android.gms.** { *; }

Gradle编译(构建)环境能在处理aar文件时自动地导入上述规则

初始化

为了确保MyTracker SDK正确运行,您需要在应用程序初始化的初步阶段对跟踪器进行调整和初始化。为了对跟踪器进行初始化,您需要输入SDK_KEY。在初始化之前,如有需要,可以设置跟踪器的参数。

SDK_KEY is generated automatically after you added your application to MyTracker. To get the key, go to the Application list page, select the required application, and copy the key from the Overview tab. Please note that if you build an app for different platforms, you need individual SDK_KEY for each of them.

public class YourMonoBehaviour : MonoBehaviour
{
    public void Awake()
    {
#if !UNITY_IOS && !UNITY_ANDROID
        return;
#endif

        // 如有需要,对跟踪器配置进行调整
        var myTrackerConfig = MyTracker.MyTrackerConfig;
        // ...
        // 调整跟踪器的参数
        // ...

        // 根据平台进行跟踪器的初始化
#if UNITY_IOS
        MyTracker.Init("SDK_KEY_IOS");
#elif UNITY_ANDROID
        MyTracker.Init("SDK_KEY_ANDROID");
#endif
    }
}

API

跟踪器的配置

跟踪器的配置可以通过MyTrackerConfig类的实例以及 MyTracker.MyTrackerConfig属性进行调整。可以设定以下参数:

IsTrackingLaunchEnabled:应用程序启动的跟踪。默认值 true

Boolean MyTrackerParams.IsTrackingLaunchEnabled { get; set; }

LaunchTimeout:当应用程序最小化时,在以秒为单位计算的时间间隔内,应用的新启动不会被计算,且会话不被中断。默认值:30秒。调整范围:30—7200秒。

Int32 LaunchTimeout { get; set; }

BufferingPeriod:在以秒为单位计算的时间间隔内,事件在发送到服务器之前将积累在相关设备上。默认值:900秒。调整范围:1—86400秒。

Int32 BufferingPeriod { get; set; }

ForcingPeriod:在以秒为单位计算的时间间隔内,事件在发送到服务器之前将积累在相关设备上。默认值:900秒。调整范围:1—86400秒。

Int32 ForcingPeriod { get; set; }

IsTrackingLocationEnabled:跟踪位置信息。 True for iOS and false for Android platforms by default.

If your Android application requests location access, you can enable this parameter to improve the accuracy of statistics related to the user geography. In some cases, location tracking also improves attribution and predictive models (Fraud Scanner, Personalize, LTV Predictions, etc.).

For the Android platform, this parameter is disabled by default since SDK version 3.0.2

Boolean IsTrackingLocationEnabled { get; set; }

Region:统计收集服务器所在的区域。例如,由于法律要求,需要更换区域。可用的值:

  • RegionEnum.RU — 俄罗斯联邦境内的服务器

  • RegionEnum.EU — 欧盟境内的服务器

public RegionEnum Region { set; }

打开/关闭调试模式

通过MyTracker类静态属性可以打开/关闭调试模式。默认值:false

Boolean IsDebugMode { get; set; }

用户跟踪

请设置customUserId参数,以便既跟踪设备,又跟踪用户统计。这个参数是您的项目在用户注册时分配给用户的唯一ID。即使用户使用其他设备进行登录, ID仍保持不变。设置该参数以后,无论用户使用多少设备,您都可以评估应用软件受众的规模以及活动详情。如果用户决定更换设备,您也不会丢失用户数据累积的历史记录。

重要的是一定要在事件跟踪之前设置参数,以保证每次跟踪事件时,都会发送有关UserID

public void SetUserInfo()
{
    var myTrackerParams = MyTracker.MyTrackerParams;

    // 设置用户的ID
    myTrackerParams.CustomUserId = "user_id";

}

如果在设置customUserId之前,在应用程序中形成了已注册用户的数据库,那么MyTracker将无法获取有关该用户注册时间的数据,并且无法进行Lifetime指标的准确计算。对于此类用户,生命周期统计将根据customUserId首次目标跟踪的日期进行计算。

若需要禁用用户跟踪,请传递customUserId参数中的空值。

事件跟踪

通过MRMyTracker类静态方法可以发送事件。在方法调用之前,设置customUserId参数(选项)以将用户 ID 与每个跟踪事件一起传输。

您可以使用以下方法跟踪各种事件:

注册事件。 用户在应用程序中完成注册,并获取唯一ID后,您就要立刻调用该方法。在调用TrackRegistrationEvent前一定要设定 customUserId参数,否则有关事件将在没有用户ID信息的情况下被传送,导致统计不准确。

userId is a required parameter since SDK version 2.0.1

void TrackRegistrationEvent(String userId)

授权事件。 用户在应用程序中完成登录并获取唯一ID后,您就要立刻调用该方法。在调用TrackLoginEvent前一定要设定 customUserId参数,否则有关事件将在没有用户ID信息的情况下被传送,导致统计不准确。

userId is a required parameter since SDK version 2.0.1

void TrackLoginEvent(String userId)

邀请发送事件。 eventParams附加参数允许为事件设定任意键值参数。键和值的最大长度为255个字符。

void TrackInviteEvent(IDictionary<String, String> eventParams = null)

升级事件。level参数是指等级级别。eventParams附加参数允许为事件设定任意键值的参数。键和值的最大长度为255个字符。

void TrackLevelEvent(Int32? level = null, IDictionary<String, String>eventParams = null)

具有指定名称的任意事件。 eventParams附加参数允许为事件设定任意键值的参数。键和值的最大长度为255个字符。

void TrackEvent(String name, IDictionary<String, String> eventParams = null)

例子:

var IDictionary<String, String> eventCustomParams = new Dictionary<String, String>();
eventCustomParams["someParamKey1"] = "someParamValue1";
eventCustomParams["someParamKey2"] = "someParamValue2";
MyTracker.TrackEvent("eventName", eventCustomParams));

强制发送所有事件并且重置发送计时器。

为了减少信道负载,且最大程度地减少对应用程序性能的影响,在把事件发送到服务器之前,SDK会把设备上的所有事件积累在缓冲区,并定期以压缩包的形式发送收集到的数据。默认情况下,每15分钟一次将数据发送到服务器。您可以通过bufferingPeriod参数在1秒到1天的范围内调整时间间隔。如果用户已关闭了该应用程序,数据将在下次启动时被发送。但是,某些事件对于尽早进入分析至关重要,尤其是在应用程序安装后的第一个会话。用flush()方法可以达成这个目的。

void Flush()

应用内购买跟踪

在iOS平台上,所有应用内的购买都是被自动跟踪的。为了在Android平台上进行应用程序内的购买跟踪,在使用Unity Purchase时需要使用TrackPurchaseEvent(...)方法,而在iOS平台上,该方法的调用将会被忽略。

void TrackPurchaseEvent(Product product, IDictionary<String, String> eventParams = null)
  • productProduct类的实例
  • eventParams – 是非必要的参数,允许为事件设定任意键值的参数。键和值的最大长度为255个字符。

如果您不使用Unity Purchase,则应该以不同方式使用TrackPurchaseEvent(...)方法。

#if UNITY_ANDROID
void TrackPurchaseEvent(String skuDetails, String purchaseData, String dataSignature, IDictionary<String, String> eventParams = null)
#endif
  • skuDetails根据文档,skuDetails是对google API 购买请求的响应。
  • purchaseData根据文档,在INAPP_PURCHASE_DATA字段中,purchaseData 是响应 getBuyIntent 请求JSON对象。
  • dataSignature — 是响应INAPP_DATA_SIGNATURE字段中的 getBuyIntent 请求的行。
  • eventParams — 是非必要的参数,允许为事件设定任意键值的参数。键和值的最大长度为255个字符。

获取instanceId

设备ID instanceId是应用程序首次启动时所生成的UUID v4值,在应用(或其数据)从设备删除之前保持不变。

通过MyTracker类静态方法可以获取instanceId值。

public static String InstanceId { get; }

It's essential to collect instanceId as soon as possible and send identifiers to your server if you use these IDs for work with S2S API.

Instead of instanceId you can use any other device ID: gaid, androidId, appSetId, idfa, iosVendorId, and/or the user identifier customUserID (in this case, S2S data will generate stats on users). Learn more

延迟深度链接允许在安装后首次启动时将附加参数传送到应用程序。例如,这些参数可用于转换到特定的应用程序界面。为了在应用中支持延迟深度链接,需要通过MyTracker.SetAttributionListener方法安装侦听器。如果发现针对当前安装的延迟深度链接,该侦听器就会在应用首次启动时被调用。包含Deeplink属性的MyTrackerAttribution归因对象将作为委托参数被传送。

public class YourMonoBehaviour : MonoBehaviour
{
    public void Awake()
    {
#if !UNITY_IOS && !UNITY_ANDROID
        return;
#endif

        // 如有需要,对跟踪器配置进行调整
        var myTrackerConfig = MyTracker.MyTrackerConfig;
        // ...
        // 调整跟踪器的参数
        // ...

        // 安装侦听器
        MyTracker.SetAttributionListener(attribution => Debug.Log("Attribution: " + attribution.Deeplink));

        // 根据平台进行跟踪器的初始化
#if UNITY_IOS
        MyTracker.Init("SDK_KEY_IOS");
#elif UNITY_ANDROID
        MyTracker.Init("SDK_KEY_ANDROID");
#endif
    }
}