友盟+搜索

{{errorMsg}}

集成准备

 WindowsPhone8.1、Windows8.1、Windows10平台应用,请参考本文集成。

安装SDK

  1. 右键单击项目“引用”节点,选择“管理NuGet程序包”

  2. 左侧选择“全部”,搜索“umeng”,选择“友盟统计分析”安装。

获得appkey

在友盟的管理后台中创建App并获得AppKey

基本功能集成

配置Package.appxmanifest

双击该文件,切换到“功能”选项卡,选中以下项: * Internet(客户端和服务器)

初始化

正确集成如下代码,才能够保证获取正确的新增用户、活跃用户、启动次数、使用时长等基本数据。

注意:

与基于Silverlight开发的应用集成方式不同,请认真阅读。

1.为App订阅Resuming事件并重写OnLaunched,OnActivated方法,并在方法结尾处添加以下代码:

await UmengAnalytics.StartTrackAsync("Your_App_Key", "channel");

2.为App订阅Suspending事件并按如下方式添加代码:

private async void OnSuspending(object sender, SuspendingEventArgs e)    
{   
     var deferral = e.SuspendingOperation.GetDeferral();  <br>
     // TODO: 保存应用程序状态并停止任何后台活动 <br>
     await UmengAnalytics.EndTrackAsync(); <br>
     deferral.Complete(); <br>
}   

参数说明:
appkey:您在友盟后台申请的应用appkey。
channel :应用的推广渠道。默认值为Marketplace渠道。

提示:
1. 最终需要在三个方法中调用StartTrackAsync方法:OnResuming, OnLaunched, OnActivated
2. OnLaunchedOnSuspending方法一般已由模板添加到工程内,不需再手动添加

页面的统计

页面统计集成正确,才能够获取正确的页面访问路径、访问深度(PV)的数据。
页面访问路径页面的数据为抽样统计(抽样比例为所有log的3%),数据量达到一定程度才会有数据。

在需要统计的页面对应的OnNavigatedToOnNavigatedFrom方法中调用TrackPageStartTrackPageEnd方法:

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);
    UmengSDK.UmengAnalytics.TrackPageEnd("main_page");
}

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    UmengSDK.UmengAnalytics.TrackPageStart("main_page");
} 

在Windows Phone App(8.1)中,需要添加额外的代码,以处理硬件后退键,才能进行页面统计,代码如下:

using Windows.Phone.UI.Input;

public App()
{
     this.InitializeComponent();
     this.Suspending += this.OnSuspending;
     this.Resuming += OnResuming;

     HardwareButtons.BackPressed += HardwareButtons_BackPressed;
 }

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
     Frame rootFrame = Window.Current.Content as Frame;
     if (rootFrame != null && rootFrame.CanGoBack)
     {
       rootFrame.GoBack();
       e.Handled = true;
     }
}

在WindowsPhone8.1中进行页面统计还有几点需要开发者注意:
1. 在应用挂起时不会调用OnNavigatedFrom,且恢复时不会调用OnNavigatedTo
2. 当在第一页按下后退键时,rootFrame.CanGoBack返回false,OnNavigatedFrom不会被调用。

Session统计

  1. 当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到开始界面,或进入其他程序,经过一段时间后再返回之前的应用。
  2. 可通过接口:UmengSDK.UmengAnalytics.SetSessionInterval(long seconds) 来自定义这个间隔(参数单位为秒)。

发送策略

发送策略定义了用户由统计分析SDK产生的数据发送回友盟服务器的频率。

Windows平台的数据发送策略有两种方式:

  • 启动时发送:APP启动时发送当次启动数据和上次的使用时长等缓存数据,当次使用过程中产生的自定义事件数据缓存在客户端,下次启动时发送
  • 按间隔发送:按特定间隔发送数据,间隔时长介于90秒与1天之间。您可以在后台自定义发送间隔。

在没有取到在线配置的发送策略的情况下,会使用默认的发送策略:启动时发送。

你可以通过后台“设置-发送策略”来自定义数据发送的频率,设置将在应用的下次启动生效。

行为的统计:自定义事件

自定义事件可以实现在应用程序中埋点来统计用户的点击行为。

使用自定义事件的依赖条件

使用自定义事件功能请先在网站应用管理后台(设置->事件)中添加相应的事件后,服务器才会对相应的事件请求进行处理。

计数事件

使用计数事件需要在后台添加事件时选择“计数事件”。

统计发生次数

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

static void TrackEvent(string eventId)

eventId为当前统计的事件ID。

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

UmengSDK.UmengAnalytics.TrackEvent("Forward"); 

统计点击行为各属性被触发的次数

考虑事件在不同属性上的取值,可以调用如下方法:

static void TrackEvent(string eventId, Dictionary<string, string> kv)

kv 为当前事件的属性和取值(键值对,最多只能包含10个)。

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

Dictionary<String, String> purchase= new Dictionary<string, string>();
purchase.Add("type", "book");
purchase.Add("quantity", "3");
UmengSDK.UmengAnalytics.TrackEvent("purchase", purchase);    

计算事件

使用计算事件需要在后台添加事件时选择“计算事件”。

统计数值型变量的值的分布

统计一个数值类型的连续变量,用户每次触发的数值的分布情况,如事件持续时间、每次付款金额等,可以调用如下方法:

Dictionary<string, string> purchase= new Dictionary<string, string>();
purchase.Add("type", "book");
purchase.Add("quantity", "3");
UmengSDK.UmengAnalytics.TrackEventWithValue("purchase", purchase, 888);

统计点击次数及各属性触发次数

计算事件除能够统计数值型的参数外还具有计数事件的所有功能。详细说明

注意事项

  1. event_id 和 tag 不能使用特殊字符,且长度不能超过128个字节;map中的key和value 都不能使用特殊字符,key 不能超过128个字节,value 不能超过256个字节
  2. id, ts, du是保留字段,不能作为eventId及key的名称。
  3. 每个应用至多添加500个自定义事件,每个event 的 key不能超过10个,每个key的取值不能超过1000个(不允许通过key-value结构来统计类似搜索关键词,网页链接等随机生成的字符串信息)。 如有任何问题,请联系客服:联系客服

在线参数&更新发送策略

在线参数

在线参数使您可以在网站上动态配置自定义key-value型的键值对。 在线参数需要在网站编辑,在程序中使用这句代码从服务器获取参数,并缓存本地。

//首先添加命名空间  
using UmengSDK.Business;
//调用接口获取在线参数
OnlineParamEventArgs res = await UmengAnalytics.UpdateOnlineParamAsync();
//res.Result包含获取到的在线参数

当在项目里需要获取某个具体参数时调用:

static string GetOnlineParam(string key)
//参数key为友盟服务器上事先设置好的参数key

更新发送策略

开发者需调用此接口更新发送策略,默认为启动发送。

using UmengSDK.Business;

//只需调用即可更新发送策略
await UmengAnalytics.UpdateOnlineParamAsync();

错误统计

SDK通过Application.Current.UnhandledException捕获程序崩溃日志,并在程序下次 启动时发送到服务器。如果开发者自己捕获了错误,需要上传到友盟服务器可以调用下面方法:

public static void TrackError(string error)
//或
public static void TrackException(Exception ex, string errMsg = "")

按渠道自动更新检测

默认渠道为微软官方商店

在网站上分渠道提交app的版本号,更新日志及openURL后,您只需添加一行代码来完成自动更新检查。 请将下面代码添加到Application_Launching方法中,该方法会请求服务器检查最新版本。

UpdateEventArgs res = await UmengAnalytics.CheckUpdateAsync();

参数说明:
isShowUpdateDialog:是否显示友盟的提示更新对话框。

如果默认的行为不满足你的需求,您可以向CheckUpdateAsync传入false自定义自动更新检查行为。步骤如下:

UpdateEventArgs res = await UmengAnalytics.CheckUpdateAsync(false);

if (res != null && res.update)
{
     e.Handled = true;//如果开发者手动处理更新可以设置为true,这样SDK不会弹出更新对话框
     string version = e.VersionName;//获取最新的版本号
     string updateLog = e.UpdateLog;//获取更新日志
     string productId = e.ProductID;//获取产品ID
     //To-do whatever you wanna do, since you've got everything
}

其他API

//设置是否对日志信息进行加密, 默认false(不加密)
UmengAnalytics.EnableEncrypted(encrypted);

如果encrypted为true,SDK会对日志进行加密。加密模式可以有效防止网络攻击,提高数据安全性。
如果encrypted为false,SDK将按照非加密的方式来传输日志。
如果您没有设置加密模式,SDK的加密模式为false(不加密)。

测试与调试

确认如下内容

  • 确认Package.appxmanifest配置正确
  • 确认APPKEY已经正确的写入代码中
  • 确认代码集成正确
  • 确认测试手机(或者模拟器)已成功连入网络
  • 集成中可能出现的问题,参见这里

测试流程

请先打开调试模式:

UmengSDK.UmengAnalytics.IsDebug = true;

打开调试模式后,您可以在Output中查看您的数据是否成功发送到友盟服务器,以及集成过程中的出错原因等。

技术支持

联系客服:联系客服
Email:support@umeng.com

为了能够尽快响应您的反馈,请提供您的appkey及log中的详细出错日志,您所提供的内容越详细越有助于我们帮您解决问题。