了解如何为 Android 移动设备构建应用程序,通知注册用户在下个月即将到来的假期。该应用程序让用户可以注册其移动设备以使用 IBM® Bluemix™ 服务。该应用程序还有一个工具,用于搜索特定时间段中的假日,这在计划假期时会有帮助。
在许多公司中,人力资源部门在每年年初发送 Excel 格式的节假日列表。在 Android 移动设备上打开这样一个电子表格来查看不同地区的所有节假日可能会非常麻烦。在移动设备上筛选列表也很麻烦(例如,您需要看到在十二月即将到来的假日,并且没有带着笔记本电脑)。
我们将向您展示如何构建一个应用程序来解决这些问题,通过一个通知,让您在每个月开始前查看节假日列表。您也可以搜索任何一个月的节假日。
该应用程序是使用 Bluemix 上的 Mobile Cloud 启动程序构建的,它使用以下 Bluemix 服务:
该应用程序有两部分:客户端和服务器。客户端包含了用户界面(UI),它允许用户注册,并指定自己希望在何时收到通知(每周或每月)。该 UI 还可以让用户查看在特定时间段中的节假日。代码在 client 文件夹中。
服务器有两个组件:
sendNotificationByTags
方法。 假期日期都存储在一个 CSV 文件中,该文件被放置在服务器代码下的 public 文件夹中(在本例中是 Holidays.csv)。同样的文件被加载到移动数据(服务)中,并使用类名 Holidays
。
阅读: Android SDK 入门
运行应用程序
获取代码
用 Android Developer Tools (ADT) 从 Android 下载并配置 Eclipse。
注意: 虽然是从 sdkmanager 进行安装,但它只下载 HAXM 安装程序,而不安装它。您需要手动运行在 adt-bundle/sdk/extras/intel 文件夹下提供的安装程序。
cd
到您想要下载代码的目录,然后运行下面的命令: git clone <url to your forked project>
点击查看大图
关闭 [x]
您的应用程序已被创建,并且在下面显示的服务已与它绑定。
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
Holidays
导入您的节假日列表 CSV。在 server/public 目录下的代码中提供了名为 Holidays.csv 的一个示例 CSV 文件(具有预期格式)。此文件在 UI(在客户端代码内)中 Get Holidays 接口所使用的移动数据下创建了一个类,以获取在某特定时间段内出现的节假日。
有了这个应用程序,您也可以将数据添加到移动数据中,比如保存用户希望得到通知的手机号码和位置(见客户端代码中的 RegistrationActivity.java)。
应用程序中使用的 Holidays.csv 文件有以下字段:
如果您打算使用自己的 Holidays.csv 文件,请确保它的格式如下:
点击查看大图
关闭 [x]
通知由 Workload Scheduler 使用 IBM Push 服务发送给注册用户。为了配置您的 Push 服务,请转到教程 使用 IBM Push for Bluemix 云服务扩展 Android 应用程序 并遵循以下部分中的步骤:
注意: 您可以忽略编辑 app.js 来提供实际的应用程序 ID 和路由的步骤。我们的项目在 appconfigs.js 文件(在代码中的 server 文件夹下)中完成这些配置。
创建标签 weeklybangalore
、 weeklyhyderabad
、 monthlybangalore
和 monthlyhyderabad
。标签是必要的,因为应用程序需要对以 weekly
开始的标签发送每周通知,并对以 monthly
开始的标签发送每月通知。我们追加位置名称,以确认针对该特定位置的节假日列表是正确的。例如,若用户要订阅位置班加罗尔的每周通知,则用户或移动设备订阅 weeklybangalore
标签(用户注册到推送通知并订阅这些标签的代码段位于 RegistrationActivity.java 文件中)。
如果您的 Holidays.csv 文件中的位置与示例 Holidays.csv 文件中的不同,则创建标签 weekly<locationname1>
、 weekly<locationname2>
、 monthly<locationname1>
、 monthly<locationname2>
,以此类推。当您更改这些标签的名称时,请确保也进行以下的必要修改:
req.push.sendNotificationByTag
方法中传递的标签名称。 您还可以用更多的标签扩展应用程序,并订阅那些标签 - 例如, bi-monthly<locationname>
,发送双月通知,或 monthlyall
,每月发送一次所有位置的节假日。这要求修改您的 Android 应用程序、app.js (同上)和 Workload Scheduler。需要再多一个调度进程来处理一个新的通知发送频率(双月、季度,等等)。
为了让代码在示例应用程序上可用,在客户端上:
applicationID
、 applicationSecret
和 applicationRoute
值更新 src/client/assests/myHolidays.properties 文件。 单击 File > Import > Android > Existing Android Code into the Workspace,并浏览到库项目的位置,以导入它。选择将项目 Copy 到工作区中的选项。
您也可以选择 Get Holidays ,以查看选定位置的节假日列表。目前,该代码显示在一个特定位置的全年节假日。您可以修改代码,只列出未来 30 天左右的节假日。
在您注册之后,在 Bluemix 控制台上转到 Push 服务,并检查您的移动设备是否已注册。尝试将通知发送到已注册的移动设备。
在 Bluemix 控制台上转到 Mobile Data 服务,访问 Manage data ,您可以看到新的类 Registrations
已被创建,并包含您在注册时提供的信息。
在服务器端:
要在 Bluemix 环境中部署您的 Node.js 应用程序,可以使用以下任一种方法:
cf login –a api.ng.bluemix.net (输入您的 Bluemix 登录信息) cf push <your application name>
您的应用程序现在应该在 Bluemix 上运行。通过提供 URL,在您的浏览器中测试它。
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
等待您的订阅完成配置;它可能需要几分钟的时间。
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
"applicationSecret=<application secret>
在您的 AVD(模拟器)上,或在您安装该应用程序的移动设备上查看您的通知。
本教程介绍了如何创建一个基于 Android 的简单移动应用程序,它可以注册移动设备,并在后端运行调度程序,定期将通知推送给注册用户。
我们展示了如何使用四种 Bluemix 服务来配置和部署 Android 移动应用程序。