此文章由机器翻译。

移动应用程序

高级推送通知和移动分析

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 设备 ID 是唯一每台设备和发布服务器)。
User Capptain 隐式地为一个用户指派到一个设备,使设备和用户都是等同的概念。
会话 会话是一个使用该应用程序由用户执行。会话将自动计算从序列中由用户执行的活动。就没有必要启动/停止会话。相反,你可以启动/停止活动。如果报告没有活动,没有会话将被报告。
活动 一项活动是由一个用户 (通常一个屏幕,但它可以是任何适用于应用程序) 执行的应用程序的给定部分的用途之一。用户一次只能执行一项活动。活动具有持续时间 — — 从那一刻起,它启动到停止它的时刻。
事件 事件是一个即时的行动 ; 不同的活动,它没有持续时间。
工作 一份工作就像一项活动。您可以启动/停止它,它有持续时间。一份工作是为一个后台任务,它可能不具有用户界面。
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

衷心感谢以下 Microsoft 技术专家对本文的审阅:格雷格 Oliver 和 Bruno Terkaly