本文章是由機器翻譯。

行動應用程式

進階推播通知及行動分析

Kevin Ashley

下載代碼示例

隨著新的移動應用程式的日益複雜,開發人員感興趣的推送通知服務的下一步 — — 推分析、 市場細分、 報告和通過推可跨越所有的主要平臺。微軟最近收購的 Capptain 平臺,提供所有這些服務,然後一些。

雖然 Capptain 還不是微軟 Azure 的一部分,它已供開發人員在 capptain.com。Azure 在 Windows 8,Android 和 iOS 平臺上提供了一套可靠的開發商的推式通知的服務。這篇文章涵蓋了一些高級的主題,在手機開發商的推式通知。 

Capptain 提供了大量可以告訴你你需要知道關於您的應用程式,包括在哪些設備上它用於大部分的分析和使用趨勢。它可以定義段、 創建市場行銷活動和賺錢你推的應用程式。技術力量雄厚,並與最初隻是幾步就會為你工作。

移動開發者是我自己的我很快意識到 Azure 移動服務結合使用 Capptain 的好處。我積極健身的應用程式 (activefitness.co) 擁有龐大的使用者基礎。這項研究為我提供了實驗與 Capptain 和在我的應用程式的產品版本中使用它的機會。

Capptain 概念

在這篇文章中,我將使用以下主要的 Capptain 概念:活動、 工作、 應用程式資訊 (appinfo) 和額外資料 (演員)。圖 1 列出了大部分的 Capptain 概念和術語,並應該是一個良好的起點,以説明您瞭解 Capptain 的工作原理。

圖 1 Capptain 術語和概念

裝置座標 每個設備獲取一個唯一的識別碼。如果你有幾個應用程式在同一台設備上,設備識別碼 (deviceid) 將會一樣。(在 Windows Phone 裝置識別碼 是唯一每台設備和發佈伺服器)。
User Capptain 隱式地為一個使用者指派到一個設備,使設備和使用者都是等同的概念。
Session 會話是一個使用該應用程式由使用者執行。會話將自動計算從序列中由使用者執行的活動。就沒有必要啟動/停止會話。相反,你可以啟動/停止活動。如果報告沒有活動,沒有會話將被報告。
活動 一項活動是由一個使用者 (通常一個螢幕,但它可以是任何適用于應用程式) 執行的應用程式的給定部分的用途之一。使用者一次只能執行一項活動。活動具有持續時間 — — 從那一刻起,它啟動到停止它的時刻。
活動 事件是一個即時的行動 ; 不同的活動,它沒有持續時間。
工作 一份工作就像一項活動。您可以啟動/停止它,它有持續時間。一份工作是為一個背景工作,它可能不具有使用者介面。
Error 一個錯誤是由應用程式正確地報告問題。
崩潰 Capptain SDK 自動報告系統崩潰,導致應用程式失敗。
應用程式資訊 (AppInfo) 這個用來標記使用者 (類似于餅乾)。對於一個給定的金鑰,Capptain 只跟蹤的設置 (沒有歷史) 的最新值。設置或更改的值 appinfo 部隊 Capptain 重新設置在此 appinfo (如果有),意思那 appinfo 可以用於觸發即時推送的觀眾標準。
額外資料 (演員) 額外的資料 (或附加) 是一些任意的資料,您可以將附加到的事件、 錯誤、 活動和工作。可以使用此資料來創建方式識別細分你的活動,就業機會等等。

活動是 Capptain 的一個基本概念。例如,活動可能在您的應用程式使用者正在訪問的網頁。它也可能是有期限的任何邏輯活動。工作是另一個概念,也有持續時間,但是,約伯斯與背景工作,不一定與 UI 連接相關聯。

Capptain 為所有主要的平臺提供了一套豐富的 Api 和本機 Sdk:iOS,Android 和 Windows 8 (見圖 2)。

圖 2 Capptain 提供了一套豐富的 Api

分析 API 分析 API 是 HTTP API,它允許您檢索分析資料 (在 Capptain 網站上的分析選項卡上顯示的一個)。
監視器 API 監視器 API 是 XMPP API,它允許您檢索即時監控資料 (顯示在監視器選項卡的 Capptain 網站上的一個)。
部分 API 部分 API 是 HTTP API,它允許您管理 Capptain 段 (在 Capptain 網站上的部分選項卡下的一切)。
達到 API 達到 API 是 HTTP API,它允許您無需手動使用 Capptain Web 介面管理達到運動。達到 API 是一個高級別的 API,所以你可以利用 Capptain 範圍的競選經理的 Web 介面。
設備的 API 設備 API 是 HTTP/REST API,您可以檢索和豐富的 Capptain 平臺對了解所有設備 (使用者) 使用您的應用程式所收集的資料。
推 API 推 API 是 HTTP API,它允許您將自訂資料推送到運行應用程式嵌入 Capptain SDK 的設備。
SDK API SDK API 是一個 HTTP API,該對話方塊允許您報告日誌作為本機的 SDK 會做,而是用一個簡單的 HTTP API。
帳戶 API 帳戶 API 是一組 HTTP Api 旨在檢索或更新與帳戶相關的資訊。

Capptain 除了這些 Api,提供幾個 Sdk 為所有主要的平臺,並列入圖 3

圖 3 Capptain 提供 Sdk 以支援所有主要平臺

Android SDK 原生的 Android SDK
SDK iOS 本機 iOS SDK
Web SDK web
Windows Phone Windows Phone SDK
Windows 8 Windows 應用商店 SDK

入門 Capptain

首先,去 capptain.com 並創建一個帳戶。創建帳戶之後,設置您所選擇的應用程式 — — 無論是在 Android、 iOS,Windows Phone、 Windows 應用商店 (Windows 8.x 版) 或 Web。每個應用程式具有相關聯的 SDK,看看如何使用後解釋一些 Capptain 的概念。Capptain 還提供了一組演示應用程式你會發現在您的帳戶頁面的底部。您還可以檢查它提供什麼樣的分析,資料已經到位。

實施活動跟蹤

要開始使用 Capptain,開始與正確的 SDK,瞭解您的平臺。我放在 GitHub 演示如何使用 Windows 8.1 SDK 的一個例子。在其他平臺上的 Sdk 類似的工作,並使用相同的基本概念。

在 Package.appxmanifest,您需要確保互聯網功能已啟用。轉到您的 Package.appxmanifest 檔聲明面板。在可用的聲明中,選擇並添加檔案類型關聯。在右邊的螢幕中,在名稱欄位中,鍵入 capptain_log_file,在該檔中鍵入欄位類型譯英。然後,在可用的聲明中選擇並添加快取檔案更新。

接下來,使用 NuGet 獲取最新版本的 Capptain 為 Windows 8.1。在應用程式的 OnLaunched 事件,添加初始化代碼為 Capptain。將您的應用程式 ID 和 SDK 金鑰複製從 Capptain 門戶:

/* Capptain configuration. */
CapptainConfiguration capptainConfiguration = new CapptainConfiguration();
capptainConfiguration.Agent.ApplicationId = "YOUR_APPID";
capptainConfiguration.Agent.SDKKey = "YOUR_SDK_KEY";
/* Initialize Capptain angent with above configuration. */
CapptainAgent.Instance.Init(e, capptainConfiguration);

為我的應用程式,我想要 Capptain 來跟蹤頁和使用者花費在每個頁面的時間。以下片段,放置在 OnNavigatedTo 方法的頁面中時將開始追蹤 HubPage 作為一個新的活動,在 Capptain 中:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  base.OnNavigatedTo(e);
  CapptainAgent.Instance.StartActivity("HubPage");
}

請記住,在 Capptain 中只能有一個活動每位使用者每應用一次。你不需要調用 EndActivity。新的頁面調用新 Activity,和舊的活動將自動結束。如果您有多個頁面,您可以通過從一個名為 CapptainPage 的特殊類派生來簡化這種做法。這會自動將與新的活動關聯您的頁面。

另一種方式來跟蹤您的活動與 Capptain 是通過從 CapptainPage 派生您的頁面。此方法的優點是你不需要把新 Activity 手動 OnNavigatedTo 處理常式中。CapptainPage 將會為您處理它。要這樣做,只是到您的 XAML 插入以下代碼:

<capptain:CapptainPage
  xmlns:capptain="using:Capptain.Agent">
  <!-- layout -->
  ...
</capptain:CapptainPage >

這段代碼,我叫 HubPage 的新 Activity 方法。當您使用 CapptainPage 時,您不需要調用 Start­活動。預設情況下,它將跟蹤您的頁面的名稱。你總是可以重寫 GetCapptainPageName 報告一個不同的值。

// In the .xaml.cs file
protected override string GetCapptainPageName()
{
  /* your code */
  return "new name";
}

使用推式通知到達

Capptain 是為移動應用程式尤其是有趣的因為它可以讓你推送到使用者設備上使用 Capptain 到達的通知。你可以設置市場活動,然後監視他們的方式。你推的公告,你可以定義市場活動的名稱、 內容 (包括圖像),定義你的聽眾,定時,等等。

Capptain 到達是一個強大的功能,它可讓您磁碟機廣告宣傳、 促銷活動和其他類型的市場行銷活動直接向您的使用者。成功的行銷的關鍵是相關性。由於 Capptain 有能力去瞭解究竟哪一頁你的使用者是或什麼活動使用者是這樣做,每個市場活動可以更相關和更有效。

對於 Windows 應用商店應用程式,Capptain 使用 Windows 通知服務 (wns 系列)。您需要更新您的套裝程式清單和 Capptain 門戶與 wns 系列鍵。有兩種情況下,可以將這些通知融入您的應用程式 — — 通過重疊起來,或者 web 視圖的集成。你已經開始 Capptain 帳戶後,您可以參考 Capptain 文檔為深入一體化指導意見"如何集成 Capptain 達成關於 Windows"在 bit.ly/12b3bub 和"初始化 Capptain 達到 SDK"在 bit.ly/1w90J3M

覆蓋一體化

隨著加鋪層的融合,你來自 CapptainPageOverlay 頁。通知將傳遞自動使用資源/覆蓋目錄中的 NuGet 套裝程式中包含的資源。當通知來自達到 API 時,您的應用程式頁將注入 CapptainOverlayAnnouncement 或 CapptainOverlayNotification 視圖中嵌入的公告。每種視圖實際上包含 web 視圖,其中顯示的公告。如果你想要實現自己的演示文稿的到達通知,你便可以進一步自訂這些視圖。

若要開始,在您的專案 (我實現這種方法在本文附帶的示例專案 ItemPage.xaml) 任何 XAML 頁中包括下面的聲明:

xmlns:capptain="using:Capptain.Overlay"

在 XAML 中,而不是 > 頁 <,使您的頁面從 CapptainPageOverlay,如下:

public sealed partial class ItemPage :
      CapptainPageOverlay

Capptain 到達將注入其通知視圖在您的頁面找到的第一個網格中。如果你想要特定的網格,以接收視圖,您可以使用名為 CapptainGrid 的網格:

<Grid x:Name="CapptainGrid"></Grid>

Web 視圖集成

對於 web 視圖集成,您需要包括 WebViews 命名為 capptain_notification_content 或 capptain_announcement_content,具體取決於您需要接收的內容類型。

使用下面的代碼來插入 WebViews:

<capptain:CapptainPage
  xmlns:capptain="using:Capptain.Page">
  <Grid>
    <WebView x:Name="capptain_notification_content" 
      Visibility="Collapsed"
      ScriptNotify="scriptEvent" Height="64" 
      HorizontalAlignment="Right"
      VerticalAlignment="Top"/>
    <WebView x:Name="capptain_announcement_content"
      Visibility="Collapsed"
      ScriptNotify="scriptEvent" HorizontalAlignment="Right"
      VerticalAlignment="Top"/>
    <!-- layout -->
  </Grid>
</capptain:CapptainPage>

資料推式通知

除了採用疊加與 web 視圖集成方法在您的應用程式接收視覺內容,還可以直接在您的應用程式接收資料推送通知。要這樣做,您需要執行兩個處理常式。把他們最好的地方是中 App.cs,您的應用程式物件的建構函式中所示圖 4

圖 4 執行處理常式的應用程式物件的建構函式中

CapptainReach.Instance.DataPushStringReceived += (body) =>
{
  Debug.WriteLine("String data push message received: " + body);
  return true;
};
CapptainReach.Instance.DataPushBase64Received 
  += (decodedBody, encodedBody) =>
{
  Debug.WriteLine("Base64 data push message received: " 
   + encodedBody);
  // Do something useful with decodedBody like updating an image view
  return true;
};
CapptainReach.Instance.PushMessageReceived 
  += (id, replyTo, payload) =>
{
  // Your code
};

分析結果

Capptain 提供了豐富的您的資料檢視。您可以查看與您的設備,如製造商、 作業系統版本、 固件、 螢幕解析度和 SDK 版本相關聯的技術資訊。現在,您的應用程式將活動資訊發送到 Capptain,您還可以跟蹤你喜歡的任何技術細節。

總結

推式通知是功能強大的機制。大多數平臺目前提供通知服務機制,wns 系列、 ANS 和谷歌雲消息等。Azure 還提供了一個可擴展的基礎架構,稱為通知集線器。隨著手機的發展,有必要在分析,達到,廣告和協調市場行銷活動與推動。Capptain 提供通知分析層許多移動開發人員將需要這下一級推。


Kevin Ashley 是微軟建築師福音傳教士。他是她的"專業 Windows 8 程式設計"(Wrox,2012年) 的合著者及一名頂尖的應用程式和遊戲的開發。他經常提出關於各種事件、 行業展覽和網路廣播技術。在他的角色,他工作與創業公司和合作夥伴,軟體設計、 業務和技術戰略、 體系結構和發展提供意見。追隨他的博客在 kevinashley.com 和在 Twitter 上 twitter.com/kashleytwit

感謝以下的微軟技術專家對本文的審閱:GregOliver 和Bruno Terkaly