跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

Unity3D 集成文档

工程配置

首先需要说明,Unity下载的只是桥接文件,不含最新版本的jar,对应组件的jar请去下载中心下载。

如果对于文档仍有疑问的,请参照我们在github上的

iOS_Demo

Android_Demo

说明

注意:1.demo使用xcode9编译会报错,请使用xcode8及以下版本运行demo。

2.Android由于工程配置需要导出工程进行工程依赖以及相关配置,请使用Android Studio。

Android

导出Android工程,请确认libs下有以下jar:

1483670-a3f9359595c9b9c5

然后找到Android工程的Application文件(如果没有,请新建一个,并在AndroidManifest中引用),在onCreate中添加如下代码:

@Override

publicvoid onCreate(){

super.onCreate();

UMU3DCommonSDK.init(this,"59892f08310c9307b60023d0","Umeng",UMConfigure.DEVICE_TYPE_PHONE,

"669c30a9584623e70e8cd01b0381dcb4");

initUpush();

}

其中init方法第一个参数为Context,第二个参数为友盟+Appkey,第三个参数为渠道,第四个参数为硬件类型,第五个参数为push Secret

iOS

导出iOS工程,找到UnityAppController.mm文件,使用头文件#import “UNUMConfigure.h”并在didFinishLaunchingWithOptions中添加:

[UNUMConfigure initWithAppkey:@"599d6d81c62dca07c5001db6" channel:@"App Store"];

其中第一个参数为appkey,第二个参数为渠道

U-App集成

下载并导入SDK

将下载的SDK zip包解压缩,需要导入如下包:

  • Common.unitypackage //基础服务包

  • UmengGameAnalytics_v3.2.unitypackage //统计包

添加依赖

Android:

sdk已经默认自动添加如下permission

检测联网方式,区分用户设备使用的是2G、3G或是WiF

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

访问互联网

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

获取用户手机的IMEI,用来唯一的标识用户

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

如果您的应用会运行在无法读取IMEI的平板上,我们会将mac地址作为用户的唯一标识

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

iOS:

需要导出后,在xcode里手动添加依赖库

TARGETS—>Build Phases—>Link Binary With Libraries—> + —>libz.tdbTARGETS—>Build Phases—>Link Binary With Libraries—> + —>libsqlite3.tbd// 购买道具.

使用自定义事件

使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后,服务器才会对相应的自定义事件请求进行处理。这里我们将提供几个简单而通用的接口:

计数事件

在您希望跟踪的代码部分,调用如下方法:

void Event(string eventId)
void Event(string eventId, string label)

eventId为当前统计的事件ID。

label为当前事件的属性和取值(键值对)。

示例:统计微博应用中”转发”事件发生的次数,那么在转发的函数里调用

GA.Event(“Forward”);

示例: 统计游戏中“死亡”事件发生的关卡数,那么可以在死亡的函数里调用

GA.Event(“player_dead”, “level1”);

考虑事件附带属性,可以调用如下方法:

void Event(string eventId, Dictionary attributes)

attributes为当前事件的属性 , 属性中的Key-Vaule Pair不能超过10个。

示例:统计电商应用中“购买”事件发生的次数,以及购买的商品类型及数量,那么在购买的函数里调用:

var dict = new Dictionary();
dict[“book”]=”3”;
GA.Event(“purchase”, dict);

计算事件

程序中的某些事件,如登录、分享、下载等,是定性变量(categorical variable),对应的统计项是字符串类型。开发者只需了解它们发生的次数及独立用户数,使用计数事件即可满足。

还有一些事件,如上面提到的支付金额、内容浏览数量等是连续变量,对应的统计项是数值类型。开发者需要查看这些事件的数值分布特征,这就需要使用计算事件。

void Event(string eventId, Dictionary attributes, int value)

eventId为当前统计的事件ID。

attributes为当前事件的属性和取值(键值对)。

value为定性变量(categorical variable)。

注意事项

  • event id不能使用特殊字符(例如:’\t’、’\n’、’�’ 等),不建议使用中文,且长度不能超过128个字节;

  • map中的key和value 都不能使用特殊字符(例如:’\t’、’\n’、’�’ 等),key 不能超过128个字节,value 不能超过256个字节。

  • id,ts,du是保留字段,不能作为event id及key的名称。

  • 每个应用至多添加500个自定义事件,每个event 的 key不能超过10个,每个key的取值不能超过1000个。如需要统计支付金额、使用时长等数值型的连续变量,请使用计算事件(不允许通过key-value结构来统计类似搜索关键词,网页链接等随机生成的字符串信息)。

渠道分析

有时需要统计应用程序的分发渠道,例如有多少用户来从应用汇 下载了您的应用,又有多少用户通过GooglePlay下载到您的应用程序。你调用初始化接口时传入的channelId可以完成这个功能。

注意:

每台设备仅记录首次安装激活的渠道,在其他渠道再次安装不会重复计量。 所以在测试不同的渠道的时候,请使用不同的设备来分别测试。channelId注意不能是纯数字。

使用页面访问统计

您可以统计每个UI视图的停留时长及路径 为UI设计提供参考

需要配对使用,如

GA.PageBegin(“UIPanel1”);

…

GA.PageEnd(“UIPanel1”);

注意:

  • 我们针对页面访问进行的是抽样统计,所以只有数据量达到一定规模之后才可以看到。

  • 由于这组方法的调用,需要保证线性不交叉,每个 PageBegin 都有一个 PageEnd 配对,如下:

PageBegin ->PageEnd-> PageBegin -> PageEnd -> PageBegin ->PageEnd

这样才能保证每个页面统计的正确

集成测试

//集成测试请使用此函数获得 设备的识别信息

public static string GetDeviceInfo()
  • SetLogEnabled(bool value) 设置为true,umeng SDK 会输出log信息,记得release产品时要设置回false。

  • SetLogEncryptEnabled(bool value)设置是否对日志信息进行加密, 默认false(不加密)。value 设置为true, SDK会将日志信息做加密处理

U-Game相关集成方法

充值

说明

玩家支付货币兑换虚拟币,用于统计游戏的收入情况

public enum PaySource
{
AppStore = 1,
支付宝 = 2,
网银 = 3,
财付通 = 4,
移动 = 5,
联通 = 6,
电信 = 7,
Paypal = 8,
Source9,// 目前1-20的来源已经被友盟+预定义,如果使用自定义来源请使用21-99之间的id。
Source10,
…
Source20,
}

// 充值.
void Pay(double cash, PaySource source, double coin);

// 充值并购买道具.
void Pay(double cash, PaySource source, string item, int amount, double price);

字段

cash

source

coin

item

amount

price

含义

真实币数量

支付渠道

虚拟币数量

道具ID

道具数量

道具单价

取值

大于0的整数

枚举类型, 目前1-20的来源已经被预定义,如果使用自定义来源请使用21-99之间的id。

大于0的整数, 最多只保存小数点后2位

非空字符串

大于0的整数

大于0的数, 最多只保存小数点后2位

在游戏中充值或者购买虚拟币的时候调用此方法,比如通过支付宝用 10元钱 购买了 1000 个金币,可以这样调用:

GA.Pay(10, GA.PaySource.AppStore, 1000);

有些时候在游戏中会直接购买某个道具,比如10元购买 2个魔法药水,每个药水50个金币,可以调用下面的方法在付费的同时购买道具。

GA.Pay(10, GA.PaySource.AppStore, “magic_bottle”, 2, 50);

购买

说明

玩家用虚拟币兑换一定数量、价值的道具

// 购买道具
void Buy(string item, int amount, double price);

字段

item

amount

price

含义

道具ID

道具数量

道具单价

取值

非空字符串

大于0的整数

大于0的数, 最多只保存小数点后2位

买道具需要传递道具ID、数量(amount)、道具单价(price)。在游戏中使用金币购买了1个头盔,一个头盔价值 1000 金币,可以这样统计:

GA.Buy(“helmet”, 1, 1000);

消耗

说明

玩家使用道具的情况

// 使用道具.
void Use(string item, int amount, double price);

字段

item

amount

price

含义

道具ID

道具数量

道具单价

取值

非空字符串

大于0的整数

大于0的数, 最多只保存小数点后2位

消耗道具需要传递道具ID、数量(amount)、道具单价(price)。

游戏中的物品损耗,比如使用了2瓶魔法药水,每个需要50个虚拟币,可以这样统计:

GA.Use(“magic_bottle”, 2, 50);

关卡

说明

记录玩家在游戏中的进度

// 进入关卡.
void StartLevel(string level);

// 通过关卡.
void FinishLevel(string level);

// 未通过关卡.
void FailLevel(string level);

字段

level

含义

关卡id

取值

非空字符串(eg:level-01)

说明

开发者需要在关卡状态变动时调用startLevel方法重新设置当前关卡。 多次调用startLevel,以最后设置的为准

在游戏开启新的关卡的时候调用 startLevel 方法,在关卡失败的时候调用 failLevel 方法,在成功过关的时候调用 finishLevel 方法。

调用 failLevel 或 finishLevel 的时候会计算从 startLevel 开始的时长,作为这一关卡的耗时。level 字段最好为非空可排序的字符串。

SDK 默认减去程序切入后台的时间。

玩家信息统计

增加玩家账号统计维度,同时可以追踪玩家的等级情况。以便结合关卡和付费数据整理出更有价值的用户。开发者应该在程序开始的地方尽早调用。

账号统计

**注意:SetUserInfo已弃用,使用老版SDK中账号统计的开发者,请尽早更新SDK并使用新接口:**

void ProfileSignIn(string userId)

void ProfileSignIn(string userId,string provider)

ID:玩家账号ID,长度小于64字节

provider : 不能以下划线”_”开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。

使用sign-In函数后,如果结束该userId的统计,需要调用ProfileSignOfff函数

void ProfileSignOff()

示例:当玩家使用游戏自有账号登录时,可以这样统计

GA.ProfileSignIn(“playerID”)

当玩家使用第三方账号(如新浪微博)登录时,可以这样统计:

GA.ProfileSignIn(“playerID”,”WB”)

玩家等级统计

当玩家建立角色或者升级时,需调用此接口

void SetUserLevel(int level);

level:大于1的整数,最多统计1000个等级

当玩家从1级升至2级时,可以这样统计:

GA.SetUserLevel(2);

额外奖励

说明

游戏中发生的金币、道具赠送行为

public enum BonusSource
{
系统奖励 = 1,
Source2,// 如果使用其他的来源 请使用Source2 到Source 10  并在友盟+后台网站设置 对应的定义
Source3,
…
Source10,
}
// 赠送金币.
void Bonus(double coin, BonusSource source);
// 赠送道具.
void Bonus(string item, int amount, double price, BonusSource source);

字段

coin

source

item

amount

price

含义

虚拟币数量

奖励渠道

道具ID

道具数量

道具单价

取值

大于0的整数, 最多只保存小数点后2位

枚举类型, 其中Source1预定义为“系统奖励”,Source2~Source10的定义需要在友盟+后台设置

非空字符串

大于0的整数

大于0的数, 最多只保存小数点后2位

说明

=0 消耗道具需要传递道具ID、数量(amount)、道具单价(price)。 Demo

连续5天登录游戏奖励1000金币,可以这样统计:

GA.Bonus(1000,GA.BonusSource.系统奖励);

如果在五一假期中举行登录有奖活动,开发者想统计活动期间所赠送的金币数量,可以这样统计:

GA.Bonus(10000,BonusSource.Source2);

然后在后台“设置”——“虚拟币来源管理”中将“2”这个事件设为节日奖励。即可看到相应的数据了。