

適用於 Xamarin 的 AWS Mobile SDK 現在已包含在 中 適用於 .NET 的 AWS SDK。本指南參考 Mobile SDK for Xamarin 的封存版本。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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的儀表板中追蹤九個預先選取的報告，以快速了解參與度：MAA、DAU、新使用者、每日工作階段、黏性因素、1-Day保留期、ARPDAU、每日付款使用者、ARPPDAU。
+  **作用中使用者** – 追蹤每天和每月有多少使用者與您的應用程式互動，並監控黏性因素來衡量參與度、吸引力和獲利。
+  **工作階段** – 追蹤應用程式在特定日期的使用頻率，以及每位使用者在一天內開啟應用程式的頻率。
+  **保留** – 追蹤客戶每天和每週回到應用程式的速率。
+  **收入** – 追蹤應用程式內收入趨勢，以識別獲利改善的領域。
+  **自訂事件** – 追蹤您應用程式特有的自訂定義使用者動作。

若要進一步了解 Mobile Analytics 報告並在 Mobile Analytics 主控台中運作，請參閱 [Mobile Analytics 開發人員指南中的 Mobile Analytics 主控台報告概觀](https://docs.aws.amazon.com/mobileanalytics/latest/ug/using-the-console.html)。 Mobile Analytics 

## 專案設定
<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。
+  **MaxDBSize** - 用於事件本機儲存的資料庫大小上限 （以位元組為單位）。如果資料庫大小超過此值，則會忽略其他事件。建議使用介於 1MB 到 10MB 之間的值。預設值為 5242880 (5MB)。
+  **DBWarningThreashold** - 警告閾值。有效值的範圍介於 0 到 1 之間。如果值超過閾值，將產生警告日誌。預設值為 0.9。
+  **MaxRequestSize** - 對 Mobile Analytics 服務提出的 HTTP 請求大小上限。此值以位元組為單位指定，範圍介於 1-512KB 之間。預設值 os 102400 (100KB)。請勿使用大於 512KB 的值，這可能會導致服務拒絕 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)。 Mobile Analytics 

### 建立 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.PauseSesion`請在 OnPause() 方法和 OnResume() 方法`MobileAnalyticsManager.ResumeSession`中呼叫 ，如下列程式碼片段所示：

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

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

根據預設，如果使用者從應用程式切換焦點不到 5 秒，並且切換回應用程式，則工作階段將會繼續。如果使用者將焦點從應用程式切換 5 秒或更久，則會建立新的工作階段。此設定可在 aws\$1mobile\$1analytics.json 組態檔案中設定，方法是將 "SESSION\$1DELTA" 屬性設定為建立新工作階段之前等待的秒數。