UnitySDK接入说明文档

一、说明

1.适用范围

本文档适用于使用 Unity 来开发的移动端 APP 或产品。 本文档适用于 Android 4.0 及以上的安卓系统,及 iOS 8.0 及以上的苹果系统.

2.SDK 下载

二、接入流程

1.申请APPKEY

1)打开 https://console.appadhoc.com/#/login ,使用您的 A/B 账号进行登录。 2)进入“应用列表”,点击右上方“新建应用”,完成应用创建,您将获得一串APPKEY,形如:ADHOC_ac66bf61-7608-4a5f-9bc4-9e7cf0f9694f 如果您已经完成应用创建,请在应用列表页面进行APPKEY的查看 APPKEY为应用的唯一标识,用于集成到SDK中。 注:为了保证您的数据安全,请勿泄露您的APPKEY。

2.导入SDK

1)前往最新 SDK 下载地址,下载 SDK 压缩包,解压至本地目录。 2)导入方法:将 zip 包解压缩后将包内 Assets 文件夹下的文件拷贝到项目 Assets 下。

3.接入SDK

详见“三、接入方法说明”

三、接入方法说明

1)Android

1.权限与配置

1.1 权限列表

在项目中找到项目配置文件 AndroidManifest.xml,加入网络访问等权限:

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

//读取手机IMEI的权限,须在获得此权限后再初始化SDK,如果缺少此权限,会以AndroidID作为设备唯一标识符
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
//获取wifi状态权限
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>

//读写sd卡的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
1.2 在应用的 build.gradle 下增加如下配置
android{
  ...
  defaultConfig{
    ...
    ndk { abiFilters  'armeabi-v7a','x86','arm64-v8a','x86_64','armeabi' }
  }
  packagingOptions {
    doNotStrip "*/armeabi-v7a/*.so"
    doNotStrip "*/x86/*.so"
    doNotStrip "*/arm64-v8a/*.so"
    doNotStrip "*/x86_64/*.so"
    doNotStrip "armeabi.so"
  }
}

2.java 混淆相关

在 proguard-rules.txt 文件中加入:

-dontwarn com.bun.miitmdid.**
-dontwarn com.adhoc.**
-keep class com.bun.miitmdid.** {*;}
-keep class com.adhoc.** {*;}
//标准包可视化编辑反射使用到ViewPager和RecyclerView避免混淆,support版本
-keep class android.support.v4.view.ViewPager{*;}
-keep class android.support.v4.view.ViewPager$*{*;}
-keep class android.support.v7.widget.RecyclerView{*;}
-keep class android.support.v7.widget.RecyclerView$*{*;}
-keep class * extends android.support.v7.widget.RecyclerView$Adapter
//避免混淆ViewPager和RecyclerView AndroidX版本
-keep class androidx.viewpager.widget.ViewPager{*;}
-keep class androidx.viewpager.widget.ViewPager$*{*;}
-keep class androidx.recyclerview.widget.RecyclerView{*;}
-keep class androidx.recyclerview.widget.RecyclerView$*{*;}
-keep class * extends androidx.recyclerview.widget.RecyclerView$Adapter

2)iOS

1. 添加依赖库

检查 TARGETS --> Build Phases --> Link Binary With Libraries 选项下是否已经加入 Security.framework,CFNetwork.framework,CoreTelephony.framework,AdSupport.framework,SystemConfiguration.framework ,AVFoundation.framework,AdhocSDK.framework,如果没有,请手动加入。并手动链接libsqlite3.tbd和libicucore.tbd:

2. 项目参数配置

在 TARGETS --> Build Settings 选项下 Other Linker Flags 中设置链接器参数: -ObjC

3. 权限配置

  1. 在 info.plist 文件中添加相机权限:

  1. 为了保证用户的唯一性,SDK将设备ID存储在本地Keychain中,iOS10需在Capabilities中打开Keychain sharing

四、SDK 方法说明

1.初始化 SDK

SDK 启动接口。

public static void init(string appKey, enableDebugAssist)

参数说明

参数 类型 说明
appKey string 从 www.appadhoc.com 上申请的 AppKey
enableDebugAssist bool 是否显示悬浮窗

示例代码

AdhocSDK.init("ADHOC_xxxx", true);

2. 获取试验变量值

2.1 从缓存获取试验变量值

获取后台设置的指定的试验变量的值,试验变量的名字注意与后台保持一致。该方法从 SDK 缓存中直接读取。如需从服务器获取 flag 值,请使用下面的 asynchronousGetFlag 方法。

public static string getFlag(string flagName, string defaultValue)

参数说明

参数 类型 说明
flagName string www.appadhoc.com 控制台上设置的试验变量名字
defaultValue string 试验变量的默认值

示例代码

string flagValue = AdhocSDK.getFlag("xxxx", "1");

2.2 从服务器获取试验变量值

public void asynchronousGetFlag(string flagName, string defaultValue, asynchronousGetFlagResultHandler handler)

参数说明

参数 类型 说明
flagName string www.appadhoc.com 控制台上设置的试验变量名字
defaultValue string 试验变量的默认值
handler asynchronousGetFlagResultHandler 回调

asynchronousGetFlagResultHandler 定义如下:

public asynchronousGetFlagResultHandler asynchronousGetFlagHandler;
public delegate void asynchronousGetFlagResultHandler(string flagValue, string errorMsg);

示例代码

    void myHandler(string flagValue, string errorMsg) {
        if (errorMsg != null) {
            Debug.Log("error=" + errorMsg);
        } else {
            Debug.Log("value=" + flagValue);   
        }
    }

AdhocSDK sdk = new AdhocSDK();
sdk.asynchronousGetFlag("xxx", "10086", myHandler);

3. 统计优化指标

根据在 www.appadhoc.com 控制台设置的优化指标名称,上报指标数据。

3.1 无用户自定义属性

public static void track(string indexName, int indexValue)

参数说明

参数 类型 说明
indexName string www.appadhoc.com 控制台定义的优化指标名称
indexValue int 统计数值

示例代码

AdhocSDK.track("xxxx", 1);

3.2 有用户自定义属性

public static void track(string indexName, int indexValue, Hashtable attribute)

参数说明

参数 类型 说明
indexName string 对应AppAdhoc控制台定义的优化指标名称
indexValue int 统计数值
attribute Hashtable 用户自定义属性

示例代码

Hashtable atrribute = new Hashtable();
atrribute.Add("Name", "Tom");
atrribute.Add("City", "Beijing"); 
AdhocSDK.track("xxxx", 1, atrribute);

4. 试验信息

4.1 获取当前设备所在试验的试验列表

public static string currentExperiments()

返回值说明

类型 说明
string JSON 字符串。 1.数组中只有 CONTROL,代表未进入任何试验。2.数组中存在一个或多个字典,代表进入一个或多个试验 { id = “试验版本 ID”; name = “试验名称”; }

示例代码

string currentExperimentsJSON = AdhocSDK.currentExperiments();

4.2 根据试验变量名称获取当前设备所在试验的试验列表

public static string currentExperiments(string flagName)

参数说明

参数 类型 说明
flagName string www.appadhoc.com 控制台上设置的试验变量名字

返回值说明

类型 说明
string JSON 字符串。 1.数组中只有 CONTROL,代表未进入任何试验。2.数组中存在一个或多个字典,代表进入一个或多个试验 { id = “试验版本 ID”; name = “试验名称”; }

示例代码

string currentExperimentsJSON = AdhocSDK.currentExperiments("xxxx");

4.3 根据试验变量名称获取当前设备是否已经进入试验

public static bool isJoinedExperiments(string flagName)

参数说明

参数 类型 说明
flagName string www.appadhoc.com 控制台上设置的试验变量名字

返回值说明

类型 说明
bool flagName 对应的试验版本是否已经进入

示例代码

bool isJoinedExperiments = AdhocSDK.isJoinedExperiments("xxxx");

5. ClientID

5.1 获取 ClientID

public static string getClientID()

返回值说明

类型 说明
string clientID

示例代码

string clientID = AdhocSDK.getClientID();

5.2 设置 ClientID

public static void setClientID(string clientID)

参数说明

参数 类型 说明
clientID string clientID

示例代码

AdhocSDK.setClientID("xxxx");

6. 添加自定义属性

public static void addCustomAttribute(string key, string value)

参数说明

参数 类型 说明
key string
value string

示例代码

AdhocSDK.addCustomAttribute("City", "Beijing");

results matching ""

    No results matching ""