

适用于 Xamarin 的 AWS 移动 SDK 现已包含在。 适用于 .NET 的 AWS SDK本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon Mobile Analytics
<a name="analytics"></a>

 [Amazon Mobile Analytics](https://aws.amazon.com/mobileanalytics/) 是一个用于大规模收集、可视化、理解和提取应用程序使用率数据的服务。Mobile Analytics 可轻松捕获标准设备数据和自定义事件，并代表您自动计算报告。除了下面列出的聚合报告，您还可以设置自动将数据导出到 Redshift 和 S3 以作进一步分析。

使用 Amazon Mobile Analytics，您可以跟踪客户行为、聚合指标、生成数据可视化以及确定有意义的模式。

## 重要概念
<a name="key-concepts"></a>

### 报告类型
<a name="report-types"></a>

Mobile Analytics 在 Mobile Analytics 控制台中提供以下现成的报告：
+ 每日活跃用户 (DAU)，每月活跃用户 (MAU) 和新用户
+ 粘性系数 (DAU 除以 MAU)
+ 会话计数和单个每日活跃用户的平均会话数
+ 单个每日活跃用户的平均收入 (ARPDAU) 和单个每日付费活跃用户的平均收入 (ARPPDAU)
+ 第 1、第 3 和第 7 天的保留率和第 1、第 2 和第 3 周的保留率
+ 自定义事件

这些报告在控制台中通过六个报告选项卡提供：
+  **概述** — 在 simple-to-review仪表板中跟踪九份预先选择的报告，以快速了解参与度：MAU、DAU、新用户、每日会话、粘性因子、1 天留存率、ARPDAU、每日付费用户、ARPPDAU。
+  **活跃用户** – 跟踪每天和每月有多少用户使用您的应用程序，监视粘性系数，以衡量参与度、吸引力和货币化指标。
+  **会话** – 跟踪在给定的某一天您的应用程序被使用的频率以及一天内每个用户打开您应用程序的频率。
+  **保留率** – 跟踪每天和每周客户回来使用您的应用程序的比率。
+  **收入** – 跟踪应用程序内收入趋势以确定货币化进展有待改进的方面。
+  **自定义事件** – 跟踪特定于您的应用程序的自定义用户操作。

要了解更多有关 Mobile Analytics 报告和在 Mobile Analytics 控制台中操作的信息，请参阅《Mobile Analytics 开发人员指南》中的 [Mobile Analytics 控制台报告概览](https://docs.aws.amazon.com/mobileanalytics/latest/ug/using-the-console.html)。

## 项目设置
<a name="project-setup"></a>

### 先决条件
<a name="prerequisites"></a>

要在您的应用程序中使用 Mobile Analytics，需要将软件开发工具包 (SDK) 添加到您的项目中。为此，请按照[设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK](setup.md) 中的说明操作。

### 配置 Mobile Analytics 设置
<a name="configure-mobile-analytics-settings"></a>

Mobile Analytics 会定义一些可在 awsconfig.xml 文件中配置的设置：

```
var config = new MobileAnalyticsManagerConfig();
config.AllowUseDataNetwork = true;
config.DBWarningThreshold = 0.9f;
config.MaxDBSize = 5242880;
config.MaxRequestSize = 102400;
config.SessionTimeout = 5;
```
+  **SessionTimeout**-如果应用程序在后台停留的时间长于该时间， SessionTimeout 则 Mobile Analytics 客户端将终止当前会话，并在应用程序返回前台时创建新的会话。建议使用从 5 到 10 的值。默认值是 5。
+  **Max DBSize**-用于本地存储事件的数据库的最大大小（以字节为单位）。如果数据库大小超过此值，后续事件将被忽略。建议使用从 1 MB 到 10 MB 的值。默认值是 5242880 (5 MB)。
+  **DBWarningThreashold**-警告阈值。有效值范围为 0 到 1。如果值超出阈值，会生成警告日志。默认值为 0.9。
+  **MaxRequestSize**-向 Mobile Analytics 服务发出的 HTTP 请求的最大大小。该值以字节为单位，范围为 1-512 KB。默认值为 102400 (100 KB)。不要使用大于 512 KB 的值，否则可能导致服务拒绝 HTTP 请求。
+  **AllowUseDataNetwork**-表示是否允许通过蜂窝数据网络进行服务呼叫的值。使用此选项要小心，因为有可能增加客户的数据使用量。

上方显示的设置均为每个配置项目的默认值。

## 将 Mobile Analytics 与您的应用程序集成
<a name="integrating-mobile-analytics-with-your-application"></a>

以下各节将阐述如何将 Mobile Analytics 与您的应用程序集成。

### 在 Mobile Analytics 控制台中创建应用程序
<a name="create-an-app-in-the-mobile-analytics-console"></a>

转到 [Amazon Mobile Analytics 控制台](https://aws.amazon.com/mobileanalytics/)并创建应用程序。请记下 `appId` 值，因为您稍后会用到它。在 Mobile Analytics 控制台中创建应用程序时，您需要指定身份池 ID。有关创建身份池的说明，请参阅[设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK](setup.md)。

要了解更多有关在 Mobile Analytics 控制台中操作的信息，请参阅《Mobile Analytics 开发人员指南》中的 [Mobile Analytics 控制台报告概览](https://docs.aws.amazon.com/mobileanalytics/latest/ug/using-the-console.html)。

### 创建 MobileAnalyticsManager 客户端
<a name="create-a-mobileanalyticsmanager-client"></a>

要初始化您的 MobileAnalyticsManager，请调用 GetOrCreateInstance 您`MobileAnalyticsManager`的 AWS 证书、您的区域、您的 Mobile Analytics 应用程序 ID 和可选的配置对象：

```
// Initialize the MobileAnalyticsManager
analyticsManager = MobileAnalyticsManager.GetOrCreateInstance(
  cognitoCredentials,
  RegionEndpoint.USEast1,
  APP_ID,
  config
);
```

`APP_ID` 是在执行应用程序创建向导期间生成的。这两个值都必须与 Mobile Analytics 控制台中相应的值匹配。`APP_ID` 用于在 Mobile Analytics 控制台中将您的数据分组。在 Mobile Analytics 控制台创建应用程序后，要查找应用程序 ID，请导航到 Mobile Analytics 控制台，然后单击屏幕右上角的齿轮图标。这将显示应用程序管理页面，其中列出了所有注册的应用程序及其应用程序 IDs。

### 记录货币化事件
<a name="record-monetization-events"></a>

适用于 .NET 和 Xamarin 的 AWS Mobile SDK 可提供 `MonetizationEvent` 类，该类可用来生成货币化事件，以跟踪在移动应用程序内进行的购买。以下代码段演示如何创建货币化事件：

```
// Create the monetization event object
MonetizationEvent monetizationEvent = new MonetizationEvent();

// Set the details of the monetization event
monetizationEvent.Quantity = 3.0;
monetizationEvent.ItemPrice = 1.99;
monetizationEvent.ProductId = "ProductId123";
monetizationEvent.ItemPriceFormatted = "$1.99";
monetizationEvent.Store = "Your-App-Store";
monetizationEvent.TransactionId = "TransactionId123";
monetizationEvent.Currency = "USD";

// Record the monetiziation event
analyticsManager.RecordEvent(monetizationEvent);
```

### 记录自定义事件
<a name="record-custom-events"></a>

Mobile Analytics 允许您定义自定义事件。自定义事件完全由您自己定义；它们可帮助您跟踪特定于您的应用程序或游戏的用户操作。有关自定义事件的更多信息，请参阅[自定义事件](https://aws.amazon.com/mobileanalytics/faqs/#custom-event-details)。

在本示例中，假设我们的应用程序是一个游戏，并且我们希望在用户完成一关时记录一个事件。通过创建新`AmazonMobileAnalyticsEvent`实例来创建 “LevelComplete” 事件：

```
CustomEvent customEvent = new CustomEvent("LevelComplete");

// Add attributes
customEvent.AddAttribute("LevelName","Level1");
customEvent.AddAttribute("CharacterClass","Warrior");
customEvent.AddAttribute("Successful","True");

// Add metrics
customEvent.AddMetric("Score",12345);
customEvent.AddMetric("TimeInLevel",64);

// Record the event
analyticsManager.RecordEvent(customEvent);
```

### 记录会话
<a name="recording-sessions"></a>

#### Xamarin iOS
<a name="xamarin-ios"></a>

当应用程序失去焦点时，您可以暂停会话。对于 iOS 应用程序，在 AppDelegate .cs 文件中，覆盖`DidEnterBackground``WillEnterForeground`并调用`MobileAnalyticsManager.PauseSesion`和`MobileAnalyticsManager.ResumeSession`，如以下代码段所示：

```
public override void DidEnterBackground(UIApplication application)
{
  // ...
  _manager.PauseSesson();
  // ...
}

public override void WillEnterForeground(UIApplication application)
{
  // ...
  _manager.ResumeSession();
  // ...
}
```

#### Xamarin Android
<a name="xamarin-android"></a>

对于 Android 应用程序，请`MobileAnalyticsManager.ResumeSession`在 OnPause () 方法和 OnResume () 方法中调`MobileAnalyticsManager.PauseSesion`用，如以下代码片段所示：

```
protected override void OnResume()
{
  _manager.ResumeSession();
  base.OnResume();
}

protected override void OnPause()
{
  _manager.PauseSession();
  base.OnPause();
}
```

默认情况下，如果用户切换焦点，应用程序失焦少于 5 秒，然后再切换回应用程序，则会话将恢复。如果用户切换焦点，使应用程序失焦 5 秒或更长时间，将创建新的会话。通过将“SESSION\$1DELTA”属性设置为创建新会话前等待的秒数，可在 aws\$1mobile\$1analytics.json 配置文件中配置此设置。