Kii BLOG

Kii Cloud Android API 演示 APP

编写目的

本文旨在帮助刚接触 Kii Cloud 的 Android 开发者们快速通读 KiiApiDemos-Android示例代码,并介绍 Kii Cloud 功能。最终,达到可以使用 Kii Cloud 编写自己 App 的目的。

示例代码简介

KiiApiDemos-Android 是使用 Kii Cloud 的一个 Android 示例。基本上覆盖了 80% ~ 90% 的 Kii Cloud 功能。

1

参考文档

http://documentation.kii.com/cn/

环境需求

  1. 最新版的 Eclipse;
  2. Android 2.2 ~ 4.3 (API 8 ~ 18)开发环境;
  3. Android 手机一部。

名词解释

  1. App 级:表示 Bucket、Object 或 Topic 是属于 App 的。默认情况下,App 的所有用户都可以访问。
  2. 群组级:表示 Bucket、Object 或 Topic 是属于某个群组的。默认情况下,只有群组成员可以访问,其他用户无权访问。
  3. 用户级:表示 Bucket、Object 或 Topic 是属于某个用户的。默认情况下,只有此用户可以访问,其他用户无权访问。
  4. Bucket:数据容器,类似文件夹或目录,但无法嵌套。
  5. Key-Value:键值对,一个键名对应一个键值,键名为一个字符串,键值可以为多种数据类型(String、Boolean、Int、Long、Double、ByteArray、JSON、JSON Array 或者 GeoPoint)。
  6. Object :数据本身,以 Key-Value 形式存储数据,可包含多个 Key-Value。在 Kii Cloud 上表现为 JSON 数据。
  7. Object Body:二进制文件,相当于 Object的附件,与 Object 一一对对应。
  8. Topic:发送 Push 消息的一个渠道。如果没有渠道,我们就没有办法发送消息。”Push to User” 功能的先决条件。

使用方法

  1. 下载源代码:https://github.com/KiiPlatform/KiiApiDemos-Android
  2. 使用 Eclipse 导入示例工程“KiiAPIDemos”以及“google-play-services_lib”。工程“KiiAPIDemos”依赖于工程“google-play-services_lib”,如因为依赖关系遇到编译问题,可在工程“KiiAPIDemos”的Property -> Android -> Library 中修正依赖关系。

如果你想先简单地查看该示例的部分功能,可以直接编译运行,并跳到下一章“功能演示”。如果不做配置你可以使用用户管理、群组管理、Object 存储、文件存储、地理位置等部分功能,但是也会遇到如下问题:

  • 因为无法登录开发者平台,所有在开发者平台上执行的步骤都无法完成。例如,在开发者平台上查看已存储的 Object 或是查看分析结果等;
  • A/B Testing 功能无法使用;
  • Server Extension 功能无法使用;
  • Push 通知功能无法使用。

3.前往开发者平台注册App

           1)       登陆开发者平台:https://developer.kii.com

           2)       点击 “Create App” 按钮

2

             3)       输入 App 的名称,选择期望的服务器位置和所需的手机应用平台,然后点击 “Create” 按钮。

注意,China 服务器有以下限制:

  • 由于网络原因,Kii Cloud SDK 的 “Android Push” 功能不可用。
  • 由于网络原因,Kii Cloud SDK 的 “Social Network Integration” 功能不可用。
  • Server Extension 的预设执行时间的Hook 不可用。

             4)       选择新建的 App,然后点击 “Access Keys”。

3

* App ID 和 App Key:App 的唯一标识符。在开发者平台中,创建 App 后获得,用于初始化 Client SDK。

* Client ID 和 Client Secret:相当于管理员密码。使用管理员功能时需要用到它们。

4.替换 App ID 和 App Key

           1)       在 “Constants.java” 文件中,将上一步中得到的 App ID、App Key 以及所选的服务器位置分别替换 KII_APP_IDKII_APP_KEY 以及 KII_SITE(包括KII_ANALYTICS_SITE) 的值

4

5. 配置 Facebook 和Twitter

集成 Facebook 和 Twitter 登录必备步骤。详见“功能演示->用户管理->社交网站集成”一节。

6. 配置Analytics

使用分析功能必备步骤。详见“功能演示-> Analytics”章节。

7. 配置 A/B Testing

使用 A/B Testing 功能必备步骤。详见“功能演示 -> A/B Testing”章节。

8.  配置 Push 通知

使用 Direct Push 功能必备步骤。详见“功能演示 -> Push 通知”章节。

9. 配置 Server Extension

使用 Server Extension 功能必备步骤。详见“功能演示 -> Server Extension”章节。

10. 编译并运行

 

功能演示

用户管理

本示例主要讲解用户的注册、登录、属性、注销、删除、Email或手机验证以及社区网站集成功能。

简单的注册和登录

最简单地注册和登录方法,只需要用户名和密码,注册成功后自动完成登录。

5

 

点击 “CODE” 可以查看该功能的核心代码。这部分代码包括:

  • 使用用户名和密码注册;
  • 使用用户名和密码登录。

6

注册

Kii Cloud 允许使用用户名、Email 以及电话号码中的任意组合 + 密码的方式注册用户。同时可以选择性的开启 Email 或电话号码验证。如何开启 Email 或 电话号码验证以及如何配置验证消息的内容,请参见 注册

请注意,当开启Email 或电话号码验证时,用户名为必填项。

1.   使用用户名注册

只填入用户名和密码,点击“Register”便可完成注册,同简单的注册一样。用户名有唯一性验证。

2.   使用 Email 注册(未开启 Email 验证)

只填入 Email 和密码,点击“Register”便可完成注册。如果开启Email 验证,则用户名不能为空。Email 有唯一性验证。

3.  使用电话号码注册(未开启手机验证)

只填入电话号码和密码,点击“Register”便可完成注册。如果开启手机验证,则用户名不能为空。注意选择正确的国家。电话号码有唯一性验证。

4.  使用用户名和 Email 注册

只填入用户名、Email和密码,点击“Register”便可完成注册。用户名和 Email 都有唯一性验证。

5.  使用用户名和电话号码注册

只填入用户名、电话号码和密码,点击“Register”便可完成注册。用户名和电话号码都有唯一性验证。

6.  使用Email和电话号码注册(为开启 Email 和手机验证)

只填入Email、电话号码和密码,点击“Register”便可完成注册。Email 和电话号码都有唯一性验证。

7.  使用用户名、Email、电话号码和密码注册

填入用户名、Email、电话号码和密码,点击“Register”便可完成注册。用户名、Email 和电话号码都有唯一性验证。

8.  刷新验证状态

1)       选择目标 App,点击“Edit”。在 App 属性菜单中,点击“Settings”。选择开启 Email 验证。

7

 

2)       使用用户名和Email注册用户

3)       前往注册邮箱完成Email 验证

4)       点击“Refresh status”刷新验证状态

9.  手机验证

1)       在“8.刷新验证状态”功能中开启“Phone Number”

2)       使用用户名和手机号码注册用户

3)       等待接收验证SMS

4)       在“Verify phone when you got sms”上方的文本框中,填入验证码,并点击“Verify phone when you got sms”按钮完成验证。

810.  点击 “CODE” 可以查看该功能的核心代码。这部分代码包括:

  • 使用用户名、Email 或 电话号码注册;
  • 用户名、Email、电话号码以及密码的有效性验证;
  • 使用收到的验证码完成电话号码的验证;
  • 获取用户令牌(User Token,用于后续的免密码登录认证);
  • 获取当前用户属性。

登录

若已经登录过用户,则用户的令牌(Token)将保存在 SharedPreferences 中。

91.  使用 Token 登录

点击“Login With Token”按钮使用用户令牌直接登录。

2.  使用用户名、Email、电话号码和密码登录

点击“Login”使用用户名、Email 或电话号码 + 密码的方式登录。

3.  代码详见“SignInActivity.java”。这部分代码主要包括:

  • 使用用户令牌登录;
  • 使用用户名、Email 或手机号码 + 密码登录。

用户属性

1.  查看和修改用户属性

登录成功后,便可以查看当前用户的属性以及修改密码。用户的属性包括:预定义和自定义2类属性。预定义属性包括:用户名、邮箱地址、电话号码、显示名和国家。本示例中的 Gender 和 Age 都属于自定义属性。

2.  修改密码

修改密码时,需提供旧密码以及新密码。

10

3.  代码详见UserAttributesActivity.java。这部分代码主要包括:

  • 获取用户属性;
  • 更新用户属性;
  • 修改密码。

* 你也可以检索其他用户的用户属性。默认情况下,只能检索到其他用户的 ID、用户名和显示名。如果希望可以检索其他用户的全部信息,请在开发者平台上启用 “Expose Full User Data To Others”(详见 检索其他用户的属性 )。

* 用户不仅可以修改密码,还可以修改 Email 和手机号码。(详见http://documentation.kii.com/references/android/storage/latest/

* 当用户忘记密码时,可以重置密码。重置密码需要传递当前用户绑定的 Email 地址。(如何配置重置密码邮件以及如何重置密码,详见 密码

 

注销/删除用户

111.  注销

登陆成功后,点击“Logout”按钮可以注销登陆。

2.  删除账号

登录成功后,点击“Delete”按钮可以删除自己的账号。

3.  代码详见“LogoutDeleteActivity.java”。这部分代码主要包括:

  • 获取当前用户;
  • 注销当前用户;
  • 删除当前用户。

社交网站集成

121.  配置 Facebook 和 Twitter

1)       在开发者平台上,选择欲配置的 App后,点击“Edit”按钮。

13

 

2)       点击“Settings”按钮打开 App 配置页面。

3)       粘贴Facebook App ID。

14

 

4)       粘贴Twitter Consumer Key 和Twitter Consumer Secret。

15

 

5)       在 “Constants.java” 文件中,使用配置好的 Facebook App ID 替换 “FB_APP_ID”的值。

16

 

6)       在 “Constants.java” 文件中,使用配置好的Twitter Consumer Key 和Twitter Consumer Secret 分别替换“TWITTER_CONSUMER_KEY”和“TWITTER_CONSUMER_SECRET”的值。

17

 

7)       在 AndroidManifest.xml 中声明Activity “com.kii.api_demos/com.kii.cloud.storage.social.twitter.KiiTwitterLoginActivity”:

182.  功能演示

Facebook

1)       使用 Facebook 账号登录

点击“Login with Facebook Account”,在弹出的登录界面中完成登录并授权。

19

 

2)       关联 Facebook 账号和 Kii 账号

登录成功后便可关联 Kii 账号。事实上,登录功能中,登录成功后,已经关联了 Kii 账号。当解除账号关联后,点击“Linking a Kii Account to a Facebook Account”按钮将弹出确认界面,授权后可再次关联账号。

3)       解除Facebook 账号和 Kii 账号的关联

点击“Unlinking a Kii Account from a Facebook Account”按钮,后便可以解除关联,解除关联的Facebook账号将无法登录,重新关联后便可重新登录。

Twitter

1)       使用Twitter 账号登录

点击“Login with Twitter Account”,在弹出的登录界面,填入用户名和密码并点击“授权应用程序”按钮。登录账号将自动关联到 Kii Account。

20

 

2)       关联Twitter 账号和 Kii 账号

登录成功后便可关联 Kii 账号。事实上,登录功能中,登录成功后,已经关联了 Kii 账号。当解除账号关联后,点击“Linking a Kii Account to a Twitter Account”按钮将弹出如下确认界面,点击“授权应用程序”再次关联账号。

21

 

3)       解除Twitter 账号和 Kii 账号的关联

点击“Unlinking a Kii Account from a Twitter Account”按钮,后便可以解除关联,解除关联的 Twitter 账号将无法登录,重新关联后便可重新登录。

3.  代码详见“SocialNetworkIntegrationActivity.java”文件。这部分代码主要包括:

  • 使用 Facebook 登录;
  • 关联 Kii 账号和 Facebook 账号;
  • 解除 Kii 账号和 Facebook 账号的关联;
  • 使用 Twitter 登录;
  • 关联 Kii 账号和 Twitter 账号;
  • 解除Kii 账号和 Twitter 账号的关联。

群组管理

本示例主要展示群组的基本操作。需要先完成登录。

221.  创建群组

点击“Create a group”将创建一个群组并显示群组ID。

2.  选择一个当前用户所拥有的群组

点击“Select an owned group”将弹出当前用户拥有的群组列表,点击列表中的项可以选择欲操作的群组,该功能影响功能 3 和 4。

3.  添加群组成员

填写“Username”文本框输入欲添加的用户,然后点击“Add to group”将用户添加到群组中。

4.  罗列群组成员

点击“List group member”将弹出群组中的所有成员的列表。

5.  选择一个当前用户作为成员的群组

点击“Select a group with me”将弹出当前用户作为成员的群组列表(包括所拥有的群组),点击列表中的项可以选择欲留言的群组。

6.  在群组中留言

在第二个文本框中填入留言内容,点击“Save note to group bucket”将保存留言。当群组中的其他用户登录便可看到该留言。该示例,使用一个群组级 Object 存储留言,群组中的所有成员都可以修改该 Object。

7.  代码详见GroupManagementActivity.java。这部分代码主要包括:

  • 创建群组,该示例中的群组名为字母 g 加当前时间的格式。事实上,群组名可以任意选取,且没有唯一性限制;
  • 查询当前用户作为群主的所有群组;
  • 添加群组成员;
  • 查询某一群组中的所有成员;
  • 查询当前用户作为成员的所有群组;
  • 群组级 Object 操作。

Object 存储

本示例主要展示 Kii Object 的功能,每个 Object 既可以包含多个 Key-Value,又可以包含至多一个 Object Body。

231.  示例详解

此处使用Notepad 作为示例加以说明。你可以新增、更新以及删除 Note。每个 Note 都是一个 Object,包含“title” 和“content” 2 个 Key-Value,并存储在名为“notes”的用户级 Bucket 中。Note 中的图片是作为Object Body 上传的,所以每个 Note 至多含有一个图片。

1)      刷新 Note 列表

点击“Refresh”刷新 Note 列表,相当于执行“All”查询(即,查询 Bucket下所有 Object)。

2)       新增 Note

24

输入 Title 和 Content 并点击 Save 后,将创建一个新的 Object 并设置键名为“title”和“content”的2个 Key-Value。

3)      上传图片

点击图片位置选择一个图片,然后点击 “Upload Image”按钮开始上传图片。上传的图片将作为该 Object 的 Object Body。

4)      更新或删除 Note

 

25

 

修改 Title 或 Content 后,点击 Save 便可更新 Object。

更新部分包括3个步骤:a)获取 Object 字段;b)修改 Object 字段;c)保存 Object。更新 Object时,可以选择2种方式:a)全更新,即完全覆写一个 Object。原 Object 的所有 Key-Value 都将被清除,然后将新的 Key-Value 数据保存到 Object 中;b)部分更新,即只更新有改动的 Key-Value,保留未修改的 Key-Value。本例中使用的是部分更新。

或点击 Delete 将删除 Object。注意,删除 Object 时, Object Body也将被删除。

5)       更新或删除图片

26

 

点击图片位置并选择图片后,点击 Update Image 按钮将开始更新图片,原有图片将被替换。

或是点击 Delete Image 按钮删除图片(Object Body)。注意,删除 Object Body 时,Object 本身(Note)不会被删除。

2.  在开发者平台上查看Object

可以使用开发者平台提供的 Data Browser 工具,在开发者平台上查看 Object 数据。详见:Data Browser 。

3.  代码详见“NotesList.java”和“NoteEditor.java”文件,这部分代码包括:

  • Object 存储
  • Object 查询
  • Object Body 存储

* 想了解更多关于 Object 的信息,请查阅 Object 存储

File 存储(Object Body)

27

 

本示例主要展示 Object Body 的上传、下载、以及发布。当上传或下载Object Body时,你可以使用断点续传或是非断点续传的方式。本例子中使用的是断点续传方式。

请注意,你需要获得目标Object的访问权限,才能够发布目标 Object 的 Object Body。例如,默认情况下,你没法发布其他用户的用户级 Object;但是,如果其他用户把其下用户级Object 的访问权限开放给你,你便可以发布这些 Object 了。(详见 定义 Object 作用域 了解更多关于 Object 权限的信息)

上传文件

28

1.  上传文件

点击 “Add”按钮选择一个欲上传的文件后,点击“OK”按钮将文件加入上传队列。队列中的文件状态为“Uploading”。 文件上传完成后,状态变为“Finished”。若上传失败,则文件状态为“Error”。

2.  暂停文件上传

点击正在上传的文件(Uploading 状态的文件),将弹出提示框询问是否暂停文件上传,点击“Yes”暂停文件上传,文件状态变为“Suspended”;

3.  恢复文件上传

点击暂停上传的文件(“Suspended”或者“Error”状态的文件),将继续上传文件,文件状态变为“Uploading”。

4.  代码详见“UploadingFilesActivity.java”文件。这部分代码包括:

  • 上传文件
  • 暂停文件上传
  • 恢复文件上传

下载文件

291.  下载文件

点击“Files in cloud”行,将显示已上传的文件列表(来自“上传文件”功能)。点击列表中的文件,将弹出提示框询问是否下载该文件,点击“Yes”开始文件下载,文件状态为“Downloading”。 文件下载完成后,状态变为“Finished”。 若下载失败,则文件状态为“Error”。

2.  暂停文件下载

点击“Downloading”状态的文件,将弹出提示框询问是否暂停文件下载。点击“Yes”暂停文件下载,文件状态变为“Suspended”。

3.  恢复文件下载

点击暂停下载的文件(“Suspended”或者“Error”状态的文件),将继续下载文件,文件状态变为“Downloading”。

4.  代码详见“DownloadingFilesActivity.java”文件。这部分代码包括:

  • 下载文件
  • 暂停文件下载
  • 恢复文件下载

发布文件

文件的发布分为3类,本例中用到的是发布带预定时间范围的文件:

  • 发布永久文件;
  • 发布带预定时间范围的文件;
  • 发布带有截止日期的文件。

301.  修改发布时间范围

在“Expiration time(Minutes)”处,填入文件有效期,单位:分钟(有效期从文件发布的时刻开始计算)。

2.  发布文件

点击“File in cloud”列表中的文件,将提示是否发布该文件,选择“Yes”后,发布成功的文件的URL将显示在“URL”文本框中。

3.  通过 URL 浏览文件

点击“Go”将在内置的浏览器中显示该文件。

314.  代码详见“PublishingFilesActivity.java”文件。这部分代码包括:

  • 获取已上传的文件
  • 发布带预定时间范围的文件

* 一旦超过文件有效期,则相应的URL无法被访问。你可以重新发布该文件并设置有效期。

地理位置

本示例主要展示 Object 的地理位置(GeoPoint)属性。每个 Object 可以包含多个地理位置。地理位置是一个经纬度数值并以 Key-Value 方式存储的。可以通过GeoQuery查询GeoBox(矩形区域)内且(或者)GeoDistance(圆形区域)内的 Object。

1.  添加 POI

32

 

在“Latitude”、“Longitude”以及“Title”处分别填入经度、纬度以及用于显示的标题。

点击“Add POI”按钮将新建一个 Object 并把地理位置信息保存到该 Object 中。

新建的POI将显示在“Add POI”按钮下方的列表中。

点击“Add POI”按钮下方的列表中的项将提示是否删除 POI,点击“确认”则删除POI。

2.  通过 GeoBox 查询 POI

GeoBox是一个矩形范围,由2个GeoPoint(一个西南点SW和一个东北点NE)构成。本例中将使用(Latitude – 0.0004,Longitude – 0.0004;Latitude + 0.0004,Longitude + 0.0004)这样的查询条件查询 Object。隐含的查询条件:Object 中含有键名为“poi”且键值类型为“GeoPoint”的 Key-Value。

33

 

在“Latitude”、“Longitude”处输入矩形中心点的坐标。

点击“Query by GeoBox”按钮查询出(Latitude – 0.0004,Longitude – 0.0004;Latitude + 0.0004,Longitude + 0.0004)范围内符合条件的 Object,并显示在“Query by GeoBox”按钮下方。

3.  通过 GeoDistance 查询 POI

GeoDistance 是一个圆形范围,由一个 GeoPoint(圆心)和一个半径组成。隐含的查询条件:Object 中含有键名为“poi”且键值类型为“GeoPoint”的 Key-Value。

34

 

在“Latitude”、“Longitude”以及“Distance”处分别填入圆心的经度、圆心的纬度以及园的半径。

点击“Query by GeoDistance”按钮查询符合条件的 Object,并显示在“Query by GeoDistance”按钮下方。

4.  代码详见“AddPOIActivity.java”、“ QueryByGeoBoxActivity.java”、“ QueryByGeoDistanceActivity.java”文件。这部分代码包括:

  • 在Object 中添加 GeoPoint 类型的字段;
  • GeoBox查询;
  • GeoDistance查询。

* 在执行 GeoBox 或是 GeoDistance 查询时可以让 Kii Cloud 计算查询结果到某个点的距离,详见查询 Object

Analytics

本示例展示如何分析 App 数据。Kii Cloud 允许自定义 App 分析的维度和事实,所有 App 产生的数据(已存储的 Key-Value)都可参与分析。由于服务器每24小时统计一次数据,所以你可能需要24小时后才能看到分析结果。

Flex Analytics(App 分析)

1.  示例场景

一个使用 Object 存储用户最高得分的游戏,Object 数据包括:{ “Score” : 100, “Level” : “Easy” , “AppVersion” : 1 }

  • “Score” 对应一个整型的数值,这个 Key-Value 代表用户的分数
  • “Level” 对应一个字符型的值,这个 Key-Value 代表用户的等级(”Easy”,”Normal”,”Hard”)
  • “AppVersion” 对应一个整型的数值,这个 Key-Value 代表 App 的版本(1,2,3,……)

期望的统计指标:

  • 指标 #1:按 “Level” 和 “AppVersion” 统计 “Score” 的平均值。
  • 指标 #2:按 “Score”、”Level” 和 “AppVersion” 统计数据的总量(即,已上传的得分数据的总量)

2.  配置App Analytics

1)       在开发者平台上,选择欲配置的 App。点击“Analytics”图标。选择 “Config”并点击“Add”按钮。

35

 

2)        在打开的“Aggregation Rules”中,选择“App Data”。然后点击“Select a conversion rule”。

36

 

3)       在打开的“Conversion Rules”中,点击“+”开始定义Conversion Rules(转换规则)。

37

 

4)       点击“Save”按钮。

5)       新的转换规则将出现在 “Conversion Rules” 列表中,点击刚刚配置的转换规则将其应用到我们的统计规则(Aggregation Rules)。

38

 

6)       接下来定义统计规则(Aggregation Rules)。我们返回 Aggregation Rules 页面。

39

 

7)       在“Aggregate using”中配置指标#1的统计规则,并在“Dimensions”中选择参与统计的字段。

8)       点击“Save”按钮,此时指标处于未激活状态。然后点击“Config”图标。

40

 

9)       在弹出的统计规则(Aggregation Rules)界面中,点击“Activate”。

41

 

10)       指标被激活时,将获得 Aggregation Rule ID,接下来获取分析结果时将使用这个 ID。

42

 

11)       新建统计规则,选择刚建的转换规则“High Score Tracking”,配置指标#2。

43

 

12)       将第 11)步中获得的Aggregation Rule ID 替换“Constants.java”文件中的“ANALYTICS_AVG_SCORES_ID”。

443.  上传数据

填写得分(Score)、选择Level 并填写AppVersion,最后点击“Save”按钮,将上传一个 Object。

454.  在开发者平台上查看分析结果

在开发者平台中,选择欲分析的 App。点击“Analytics”图标,并选择“Metrics”。最后选择欲查看的指标(假设选择了指标 #2 “Counting # of scores”)

465.  利用 Android SDK 获取分析结果

点击“Show results”,将从 Kii Cloud 获取统计结果并显示。

476.  代码详见“FlexAnalyticsActivity.java”文件。这部分代码主要包括:

  • 用户级 Object 的存储;
  • 获取自定义分析结果。

* 你可以查阅我们的文档更深入的了解App 分析:分析 App 数据

* Kii Cloud 还提供了一款即开即用的分析,名为“Basic Analytics”,详见:Basic Analytics

Event 分析

1.  示例场景

我们希望统计某个 Activity 被创建的次数,从而确定是否有必要优化该 Activity 的用户体验。

2.  配置 Event Analytics

1)       在开发者平台选择欲配置的 App 并点击“Analytics”图标,选择“Config”,然后点击“Add”按钮。

48

 

2)       在指标定义界面输入“Name”,在“Data”处选择“Event Data”。统计方法配置如下图所示。

49

 

3)       点击“Save”按钮,此时指标处于未激活状态。然后点击“Config”图标。

50

 

4)       在弹出的统计规则(Aggregation Rules)界面中,点击“Activate”。

51

 

5)       指标被激活时,将获得 Aggregation Rule ID,接下来获取分析结果时将使用这个 ID。

52

 

6)       使用上步中获得的 Aggregation Rule ID 替换 “Constants.java”文件中的“ANALYTICS_EVENT_ID”。

533.  上传数据

每次点击“Event Analytics”在“EventAnalyticsActivity”界面创建时都会发送名为“LaunchEventAnalytics”的 Event。

544.  在开发者平台上查看分析结果

在开发者平台中,选择欲分析的 App。点击“Analytics”图标,并选择“Metrics”。最后选择欲查看的指标(“LaunchEvent”)

555.  利用 Android SDK 获取分析结果

Event Analytics 界面显示时,便会从 Kii Cloud 上获取最近一周的统计结果并显示。

566.  代码详见“EventAnalyticsActivity.java”文件。这部分代码主要包括:

  • 发送 Event 事件
  • 获取分析结果

* 你可以查阅我们的文档更深入的了解 Event 分析,详见:分析 Event 数据

A/B Testing

本示例主要展示如何在 App 中集成Experiment。由于至少需要1000条数据才能开始计算 A/B Testing的结果,所以本文将不展示 A/B Testing 的最终结果,详细信息请参见:执行 Experiment

你可以通过“卸载->安装”+ 新注册用户的方法测试 A/B方案的选取。例如,在定义 Experiment 时,设置 A 方案和 B 方案的配比为 1:1。当你每次“卸载->安装”再注册新用户后,都有50% 的几率显示 A 方案或 B 方案。每个用户分配到方案后将不会再变更。

1.  示例场景

App 有一个让用户激活一个新功能的按钮。这个按钮当前的标签是 “Get Started Now!”,背景颜色是“绿色”。你希望提高这个按钮的点击人数。

你推测把按钮的标签改为 “GET STARTED NOW!”,把背景颜色改为“红色”后可能能达到预期效果。并且希望通过一轮 A/B Testing 来确定这个方案是否有效。

2.  准备工作

1)       定义 Experiment

在开发者平台上,选择欲配置的 App。点击 “A/B tests” 图标。

57

 

点击“+Add”开始定义 Experiment。

58

 

按上图填写信息后,点击“Save”按钮。

59

 

点击“Draft”按钮将显示 Experiment 的详细信息。

60

 

2)       在 “Constants.java” 文件中,使用获得的Experiment ID替换 “ABTestingID”的值

61

 

3)       开启 Experiment

回到“Experiment result and details”击页面,点击下方的“Start”按钮开启 Experiment。

623.  集成 A/B Testing

通过 Android SDK 获取 Experiment并使用 Variation 设置按钮内容和背景色。

634.  发送事件

当按钮显示时,将发送“eventViewed”事件。

当点击按钮时,将发送“eventClicked”事件。

5.  查看 Experiment 结果

一旦 Experiment 开启后,Results 中将每天更新 A/B Testing 结果,如下所示:

64

 

详见:执行 Experiment

6.  暂停/继续Experiment

通过点击 Result 屏下方的 “Pause” 按钮,你可以暂停 Experiment。

65

 

当你暂停 Experiment 时,指示器会变为 “Paused”。App 将不能加载这个状态的 Variation,因此你可以在本地提供任何变量值(大多数情况最好的做法是退回到默认值)。详见 这里的描述和代码

当你想要继续 Experiment,只需点击 “Resume” 按钮,Experiment 将被再次激活。

7.  终止 Experiment

当你觉得所做的测试已经足够多,而且已经决定选择某个 Variation 时,你便可以点击 “Finish” 按钮。这将弹出如下对话框:

66

 

当终止 Experiment 时,你有三个选择:

  • No change: 不选择 Variation,让 App 从本地提供变量。
  • Variation A: 选择 Variation A。
  • Variation B: 选择 Variation B。

当结束试验时,无论你选择 Variation A 还是 B,Client SDK 都将一直提供所选 Variation 的变量值。

如果选择 “No Change”,Client SDK 将抛出相应的异常。App 可以捕获该异常,并采取适当的行动(如使用默认值)。详见 这里的描述

8.  代码详见“ABTestsActivity.java”文件。这部分代码主要包括:

  • 获取 Experiment;
  • 发送 Event 事件。

Push 通知

本示例主要讲解Direct Push 和 Push to User的用法。

Direct Push 是从开发者平台直接发送消息给指定用户。

Push to User 则是通过对 Topic 的创建、订阅以及在其内发送消息的方式实现通信的。本示例中使用的是用户级 Topic,即默认只能自己订阅和发送消息。当然也可以通过微调 ACL让其他用户订阅和发送消息,详见设置 Topic ACL

67

准备工作

1.  设置 Google Cloud Messaging(GCM)

1)       创建 Google API 工程

打开 Google 开发者平台

按需创建工程

点击工程进入详细页面,其中的 “Project Number” 即为 GCM Sender ID

2)       开启 GCM 服务

接上一步,点击左边栏中的APIs & auth

在显示的列表中,开启 Google Cloud Messaging for Android。

3)       获取 GCM API Key

点击左边栏中的 APIs & auth > Credentials

点击 Public API access 下的 Create new Key

在 Create a new key 对话框中,点击 Server key

在配置对话框中,输入服务器地址,出于测试目的我们填入“0.0.0.0/0”

点击 Create

在刷新的页面中,API Key 即为下步中用到的GCM API Key

具体步骤详见Google 教程

2.  在 Kii 开发者平台配置 GCM API Key

选择欲配置的 App,点击 “Edit”。

68

 

点击“Setting”按钮,选择“Push Notifications”标签,并粘贴上步中获得的 GCM API Key

693.  替换“Constants.java”文件中的GCM_SENDER_ID

70

 

Direct Push

1.  准备接收消息

点击主界面的“Push notifications”,进入 Push 通知界面。初次进入时,App 会尝试注册 GCM,此步骤需要Google Play Service 以及 Google Play Store,请确保测试机器上装有这两个 Apk。如若注册失败遇到 Service_Not_Avaliable,可以尝试关闭 Wifi 使用数据网。

2.  发送消息

1)       选择欲处理的 App,选择“Push”图标,然后点击“New Message”按钮打开 Push 通知界面

71

 

2)       选择“Send To”中的“User”,并在其后选择用户标识类型(ID、用户名、Email 或电话号码),最后填入目标用户的标识。“Environment”选择 “Both”

72

 

3)       在“Include”中,选择预定义的字段,并在“Data”中,设置任意的 Key-Value。注意Key-Value需要指定接收设备类型(iOS 或者 Android),此示例中,Android 为必选项。

73

 

4)       开启 GCM

74

 

5)       点击“Send…”发送消息

3.  接收消息

由于网络原因,接收时间无法确定,请耐心等待消息到达。

7576

 

Push to User

1.  示例场景

推送消息给自己的所有设备。例如,可以使用手机推送自己的代办事宜给自己的平板电脑。

2.  创建并订阅 Topic

点击“Create&subscribe push topic”按钮创建并订阅一个用户级的 Topic。一旦订阅成功,Topic 中所有消息都会推送过来。相对的,如果不再希望收到该 Topic 中的消息可以选择退订,详见 订阅/退订 Topic 。如果不确定是否已经订阅了某个 Topic也可以查询订阅状态,详见查看订阅状态

773.  发送消息给 Topic

点击“Send message to myself”。

4.  接收消息

由于网络原因,消息到达时间无法确定,请耐心等待。

78795.  代码详见“PushActivity.java”、“ PushBaseActivity.java”、“ PushBroadcastReceiver.java”、“ PushIntentService.java”。这部分代码主要包括:

  • 注册 GCM
  • 安装用户设备
  • 实现 BroadcastReceiver 用于接收消息
  • 创建 Topic
  • 订阅 Topic
  • 发送消息给用户级 Topic
  • 在通知栏中显示 Push 消息

*     深入了解 Direct Push 功能,请查阅“Direct Push”通知

*     Push to App 功能,请查阅“Push to App”通知

*     深入了解 Push to User功能,请查阅“Push to User”通知

Server Extension

本示例旨在展示如何应用 Server Extension 功能。Server Extension 功能可以帮你在服务端执行一些自定义逻辑。

1.  示例场景

我们希望可以一键清除“功能演示 -> Object 存储”章节中创建的 Note。同时,希望由服务器全权处理这个操作。

2.  编写 Server Code

本示例的 Server Code 已经编写完成,位于代码的根目录,名为 “deleteAllNotes.js”。对应的方法名称为“deleteAllNotes”,改名称用于执行 Server Code 时指定。

Server Code 的具体编写方法及规则请查阅 编写 Server Code

3.  部署 Server Code

1)       安装命令行工具

80

      • 点击 “Server Extension” 图标,并下载 zip 文件。

81

    • 安装工具
      • 解压 zip 文件并在终端上打开目录
      • 在终端运行一下命令:

                                        $ cd kii-cli-vX.X.X

                                        $ npm install

其中 vX.X.X 表示命令行工具的版本(例如,v1.0.0)。

2)       部署 Server Code

node bin/kii-servercode.js deploy-file \

  –file ../demo.js \

  –site us \

  –app-id <your_app_id> \

  –app-key <your_app_key> \

  –client-id <your_client_id> \

  –client-secret <your_client_secret> \

  –hook-config <hook_file>

参数:

–file需要部署的Server Code

–site服务器位置(”us”、”jp”、”cn”或者”sg”)

–app-idApp ID

–app-keyApp Key

–client-idClient ID

–client-secretClient Secret

–token(可选项)App管理员令牌。可以被用于替代 client-id 和 client-secret

–hook-config(可选项)Server Hook 配置文件(查阅 这里 了解更多关于如何编写配置文件的信息)

–no-set-current(可选项)不激活正在部署的 Server Code,并且保持之前版本处于激活状态

详见 管理 Server Code

4.  从 Android 客户端执行 Server Code

82

 

点击“Delete all notes”按钮将向 Kii Cloud 发送执行 Server code 请求,并等待返回。若 Server Code 执行成功,则在“Object 存储”功能中创建的所有 Note 都将被删除。

5.  代码详见“ServerExtensionActivity.java”。这部分代码主要包括:

  • 已知部署的 Server Code 对应的方法名称,通过 Android SDK 执行该 Server Code
  • 处理 Server Code 执行结果

* Server Code 也可以由 Server Hook 触发执行,详见管理 Server Code

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注