转载

在 Bluemix 上为 Android 构建一个假期通知应用程序

了解如何为 Android 移动设备构建应用程序,通知注册用户在下个月即将到来的假期。该应用程序让用户可以注册其移动设备以使用 IBM® Bluemix™ 服务。该应用程序还有一个工具,用于搜索特定时间段中的假日,这在计划假期时会有帮助。

在许多公司中,人力资源部门在每年年初发送 Excel 格式的节假日列表。在 Android 移动设备上打开这样一个电子表格来查看不同地区的所有节假日可能会非常麻烦。在移动设备上筛选列表也很麻烦(例如,您需要看到在十二月即将到来的假日,并且没有带着笔记本电脑)。

我们将向您展示如何构建一个应用程序来解决这些问题,通过一个通知,让您在每个月开始前查看节假日列表。您也可以搜索任何一个月的节假日。

该应用程序是使用 Bluemix 上的 Mobile Cloud 启动程序构建的,它使用以下 Bluemix 服务:

  • Mobile Data
  • Push
  • Mobile Application Security
  • Workload Scheduler

该应用程序有两部分:客户端和服务器。客户端包含了用户界面(UI),它允许用户注册,并指定自己希望在何时收到通知(每周或每月)。该 UI 还可以让用户查看在特定时间段中的节假日。代码在 client 文件夹中。

服务器有两个组件:

  • 代码,用于显示或定义 REST API,每周和每月发送通知。每种方法都会得到节假日列表,并将它们作为输入馈送到 sendNotificationByTags 方法。
  • 两个调度进程:一个每周运行一次,另一个每月运行一次。每个调度进程每周或每月调用所需的 REST API(在 app.js 中定义),将适当的节假日列表通知发送给用户。

假期日期都存储在一个 CSV 文件中,该文件被放置在服务器代码下的 public 文件夹中(在本例中是 Holidays.csv)。同样的文件被加载到移动数据(服务)中,并使用类名 Holidays

在 Bluemix 上为 Android 构建一个假期通知应用程序

构建应用程序需要做的准备工作

  • Android SDK(在步骤 1 中配置)
  • Node.js :可选,但在本地运行应用程序时需要它
  • Cloud Foundry (CF) 命令行工具
  • 一个 Bluemix 帐户
  • 一个 DevOps Services 帐户
  • 熟悉 Android 开发环境

阅读: Android SDK 入门

运行应用程序

获取代码

步骤 1. 用 ADT 配置 Eclipse

用 Android Developer Tools (ADT) 从 Android 下载并配置 Eclipse。

  1. 打开 Eclipse 并选择 Window > SDK Manager 。选择 Android SDK 平台工具和 Android 平台。我们的项目基于 Android 4.4.2, API 19。
  2. 选择 Android 4.4.2 (API19) 下的所有条目。
  3. 选择 Extras 下的 Google Play Services 包。
  4. 在 SDK Manager 中,在 Extras 下,选中 Intel x86 emulator accelerator (HAXM 安装程序)。
  5. 单击 INSTALL

    注意: 虽然是从 sdkmanager 进行安装,但它只下载 HAXM 安装程序,而不安装它。您需要手动运行在 adt-bundle/sdk/extras/intel 文件夹下提供的安装程序。

  6. 配置移动模拟器。单击 Window > Android virtual device manager 并添加一个移动模拟器。必须正确执行此步骤,模拟器才可以接收通知。

下载代码

  1. 用您的 IBM ID 登录到 DevOps Services 。
  2. 转到 Go to MyHolidays 。
  3. 单击 FORK PROJECT 并为您的分叉项目命名。在单击 CREATE 之前,记得要写下或复制您的项目的 URL。
  4. 获得 Git ,如果已安装则跳过此步。从 Git 打开命令提示符, cd 到您想要下载代码的目录,然后运行下面的命令:
    git clone <url to your forked project>
  5. 安装 Node.js ,如果已安装则跳过此步。Node.js 允许您在自己的本地环境中测试应用程序。
  6. 安装 npm (一个软件包管理程序)。

步骤 2. 创建应用程序并配置服务

  1. 登录到 Bluemix 并创建一个应用程序:
    1. 选择 Create an App
    2. 选择 MOBILE 作为应用程序类型。
    3. 选择 Android 作为平台。
    4. 赋予您的应用程序一个有意义的名称,并单击 Finish
    5. 选择 ANDROID 并单击 Continue在 Bluemix 上为 Android 构建一个假期通知应用程序

      点击查看大图

      关闭 [x]

      在 Bluemix 上为 Android 构建一个假期通知应用程序

      您的应用程序已被创建,并且在下面显示的服务已与它绑定。

      在 Bluemix 上为 Android 构建一个假期通知应用程序

      点击查看大图

      关闭 [x]

      在 Bluemix 上为 Android 构建一个假期通知应用程序

  2. 选择 Add Service 并将 Workload Scheduler Beta 服务添加到您的应用程序。 在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

  3. 您可能会看到类似下面的一个画面。忽略错误消息并单击 CLOSE在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

  4. 返回到您的应用程序。打开 Mobile Data Service,单击 Manage Data 选项卡,通过提供类名 Holidays

    导入您的节假日列表 CSV。在 server/public 目录下的代码中提供了名为 Holidays.csv 的一个示例 CSV 文件(具有预期格式)。此文件在 UI(在客户端代码内)中 Get Holidays 接口所使用的移动数据下创建了一个类,以获取在某特定时间段内出现的节假日。

    有了这个应用程序,您也可以将数据添加到移动数据中,比如保存用户希望得到通知的手机号码和位置(见客户端代码中的 RegistrationActivity.java)。

    应用程序中使用的 Holidays.csv 文件有以下字段:

    • Serial
    • HolidayName
    • dateString
    • day
    • type
    • location

如果您打算使用自己的 Holidays.csv 文件,请确保它的格式如下:

在 Bluemix 上为 Android 构建一个假期通知应用程序

点击查看大图

关闭 [x]

在 Bluemix 上为 Android 构建一个假期通知应用程序

配置 Bluemix Push 服务

通知由 Workload Scheduler 使用 IBM Push 服务发送给注册用户。为了配置您的 Push 服务,请转到教程 使用 IBM Push for Bluemix 云服务扩展 Android 应用程序 并遵循以下部分中的步骤:

  • 在开始之前:获得您的 Google API Project Number 和 Push 所需的 GCM API Key
  • 将 Google Play Services 添加到您的项目(若使用 Android Studio 则跳过此步)
  • 将 IBM Push 和 IBM CloudCode 客户端 SDK JAR 添加到您的项目(若使用 Android Studio 则跳过此步)
  • 将 Google API Project Number 和 GCM API Key 添加到 Bluemix 中的应用程序中

注意: 您可以忽略编辑 app.js 来提供实际的应用程序 ID 和路由的步骤。我们的项目在 appconfigs.js 文件(在代码中的 server 文件夹下)中完成这些配置。

创建标签 weeklybangaloreweeklyhyderabadmonthlybangaloremonthlyhyderabad 。标签是必要的,因为应用程序需要对以 weekly 开始的标签发送每周通知,并对以 monthly 开始的标签发送每月通知。我们追加位置名称,以确认针对该特定位置的节假日列表是正确的。例如,若用户要订阅位置班加罗尔的每周通知,则用户或移动设备订阅 weeklybangalore 标签(用户注册到推送通知并订阅这些标签的代码段位于 RegistrationActivity.java 文件中)。

如果您的 Holidays.csv 文件中的位置与示例 Holidays.csv 文件中的不同,则创建标签 weekly<locationname1>weekly<locationname2>monthly<locationname1>monthly<locationname2> ,以此类推。当您更改这些标签的名称时,请确保也进行以下的必要修改:

  • 您的 Android 应用程序:修改 RegistrationActivity.java,提供位置名称和发送通知的频率。
  • App.js:修改在 req.push.sendNotificationByTag 方法中传递的标签名称。

您还可以用更多的标签扩展应用程序,并订阅那些标签 - 例如, bi-monthly<locationname> ,发送双月通知,或 monthlyall ,每月发送一次所有位置的节假日。这要求修改您的 Android 应用程序、app.js (同上)和 Workload Scheduler。需要再多一个调度进程来处理一个新的通知发送频率(双月、季度,等等)。

步骤 3. 配置和运行应用程序(客户端)

为了让代码在示例应用程序上可用,在客户端上:

  1. 打开 Eclipse 并导入下载代码的 client 文件夹下的 Android 项目。
  2. 用来自您的 Bluemix 仪表板的 applicationIDapplicationSecretapplicationRoute 值更新 src/client/assests/myHolidays.properties 文件。
  3. 下载 https://mbaas-catalog.ng.bluemix.net/sdk/ibm-bluemix-sdk-android.zip。把这个 URL 输入到浏览器中,您会看到一个弹出窗口,要求您保存文件。解压缩它,并将 JAR(ibmbluemix.jar、ibmcloudcode.jar、ibmpush.jar 和 ibmdata.jar)复制到您的 Android 项目的 libs 文件夹中。
  4. 完成以下步骤,以启用 Push 服务:
    1. 将 Google Play Services 库从 ADT_installation_dir /sdk/extras/google/google_play_services 导入您的工作区中。

      单击 File > Import > Android > Existing Android Code into the Workspace,并浏览到库项目的位置,以导入它。选择将项目 Copy 到工作区中的选项。

    2. 将对 Google Play Services 库的引用添加到您的应用程序。右键单击 project 并选择 Properties > Android > Library > Add (从您的项目工作区添加 Google Play Services 引用)。
  5. 构建代码,并在您的 Android Virtual Device (AVD) 上运行您的应用程序。单击 Register 以注册您的设备,以接收每周或每月的通知。

您也可以选择 Get Holidays ,以查看选定位置的节假日列表。目前,该代码显示在一个特定位置的全年节假日。您可以修改代码,只列出未来 30 天左右的节假日。

在您注册之后,在 Bluemix 控制台上转到 Push 服务,并检查您的移动设备是否已注册。尝试将通知发送到已注册的移动设备。

在 Bluemix 控制台上转到 Mobile Data 服务,访问 Manage data ,您可以看到新的类 Registrations 已被创建,并包含您在注册时提供的信息。

步骤 4. 配置和运行应用(服务器)

在服务器端:

  1. 用您的 applicationId 和路由修改 appconfig.json 文件。
  2. 可选:如果您不使用本教程提供的示例 Holidays.csv 文件,则上传或复制 holidays.csv 文件到 node 目录下的 public 文件夹中(这个文件应该与您在步骤 2中上传到 Mobile Data 服务的文件一样)。
  3. 用您的应用程序的名称和路由修改 manifest.yml。
  4. 将变更推送并部署到 Bluemix。

将变更部署到 Bluemix

要在 Bluemix 环境中部署您的 Node.js 应用程序,可以使用以下任一种方法:

  • Eclipse 插件(请参见 如何使用 Eclipse Cloud Foundry 插件连接到 Bluemix )。
  • DevOps Services 中的部署程序(请参见 使用 Eclipse 和 DevOps Services 在 Java 中开发 IBM Bluemix 应用程序 )。
  • cf 工具命令。从 app.js 文件所在的 server 目录发出以下命令:
    cf login –a api.ng.bluemix.net  (输入您的 Bluemix 登录信息)  cf push <your application name>

您的应用程序现在应该在 Bluemix 上运行。通过提供 URL,在您的浏览器中测试它。

步骤 5. 配置 Workload Scheduler 服务

  1. 在您的 Bluemix 控制台上,打开 Workload Scheduler 服务。 在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

  2. 忽略错误消息并单击 CLOSE 。您应该会看到类似下面的一个画面。 在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

    等待您的订阅完成配置;它可能需要几分钟的时间。

  3. 在您的订阅完成配置后,您就不会再看到突出显示的消息。选择 Manage your processes > Manage simple processes
  4. 创建两个进程:一个用于每月调度,另一个用于每周调度。 在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

  5. 在 Triggers 选项卡下,创建一个触发器,指定该进程应该在何时运行。 在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

  6. 转到 Steps 选项卡并创建一个新的步骤。双击它,选择 RESTful 和您的代理。 在 Bluemix 上为 Android 构建一个假期通知应用程序

    点击查看大图

    关闭 [x]

    在 Bluemix 上为 Android 构建一个假期通知应用程序

  7. 将 Authentication 字段保留空白,除非您在 Mobile Application Security 服务中为您的应用程序指定了某种身份验证机制。
  8. 在 Action 字段中,将 serviceuri 提供为 https://mobile.mybluemix.net/${appHostName}/v1/apps/${applicationId}/monthlyNotifications/ (取决于您是每月还是每周调度它)。
  9. 选择 POST 作为方法。
  10. 在 HTTP Query Parameters 中,提供您的应用程序的密码:
    "applicationSecret=<application secret>
  11. 在 Body 和 Advanced 字段中不需要任何内容。单击 OK
  12. 启用您的进程。
  13. 为了验证一切都设置无误,单击 Run Now

步骤 6. 查看您的应用程序运行

在您的 AVD(模拟器)上,或在您安装该应用程序的移动设备上查看您的通知。

结束语

本教程介绍了如何创建一个基于 Android 的简单移动应用程序,它可以注册移动设备,并在后端运行调度程序,定期将通知推送给注册用户。

我们展示了如何使用四种 Bluemix 服务来配置和部署 Android 移动应用程序。

正文到此结束
Loading...