今天的30天挑战系列,我决定扩展昨天发布的PhoneGap程序的推送消息。消息推送允许程序提醒用户,即使程序没在使用的时候。例如,你有一个twitter应用,激活了消息推送,即使这个程序没在运行,如果有人粉了你或者给你留言了,程序也会通知你。

 

几周前,我读了Jay Balunas一篇很有用的博客,讲述用AeroGearOpenShift上安装自己的消息推送服务。那时,我没有机会用AeroGear OpenShift, 现在我们可以用它来给昨天发布的阅读器添加推送功能。

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

AeroGear UnifiedPush Server是什么?

AeroGear UnifiedPush Server是一个开源的服务程序,用Java写,允许推送消息到不同的移动设备,可以看成基于不同推送消息技术的抽象化。当前版本支持Apple’s APNs, Google Cloud MessagingMozilla’s SimplePush.

手机应用用例

我们今天要开发的手机应用是一个对30天学习30种技术挑战的阅读器。用户可以在任何Android, Symbian, webOS, 或者 Windows Phone上安装,可以从http://bit.ly/18dbH8a下载。

 

这个应用可以做以下:

  1. 给出这个系列已经发布的博客列表,用户点击任何博客,都会在手机浏览器里打开。

          [译] 第十一天: AeroGear Push Server - 轻松推送提示信息 

  1. 读者可以用它发表反馈。

         [译] 第十一天: AeroGear Push Server - 轻松推送提示信息

昨天的博客里我们已经讨论了前两个需求,今天,我们来添加用例的推送功能,只要有新博客发布了,就提醒给用户。

      [译] 第十一天: AeroGear Push Server - 轻松推送提示信息

Github 仓库

今天的demo放在github:
day11-30technologies30days-mobile-app-with-push-notification

添加消息推送

要添加推送,需要做五个任务。

  1. 创建一个OpenShift AeroGear      推送服务程序。
  2. 注册谷歌云信息服务账号。
  3. AeroGear推送程序添加一个数据类型。
  4. 在手机程序里添加推送支持。
  5. 更新手机程序的后台Java REST来发送推送。

 

现在一个个来完成。

任务1:创建一个OpenShift AeroGear 推送服务程序。

在创建AeroGear推送服务程序前,需要先住醋OpenShift账号,它完全免费,红帽给每个用户免费提供了3Gears来运行程序。目前,这个资源分配合计有每人1.5GB内存,3GB磁盘空间。

 

验证之后,登陆OpenShift Web平台

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

 

点击Create your first application now,选择AeroGear Push 0.X程序类型。

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

 

这个页面要求我们输入程序的详细信息,由于这是一个快速入门的OpenShift程序,所有的配置信息已经为我们准备好了,选择默认配置,点Create Application按钮。

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息 

程序建好后,可以在 http://aerogear-{domain-name}.rhcloud.com 看到AeroGear服务,用你的OpenShift域名替换{domain-name}. 

打开  http://aerogear-{domain-name}.rhcloud.com/, 会提示登录AeroGear服务。默认账号密码是'admin/123', 登录后,基于安全问题会要求你更改密码。

用新密码登录后,可以看到AeroGear面板。

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

程序创建后,可以看到详细信息,重要部分的信息是Application IDMaster Secret, 用来发送推送信息。

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

任务2:注册谷歌云信息服务账号

这个在AeroGear推送服务文档有深入解释,请参考文档。注册好谷歌云信息服务账号后,可以得到Google API keyProject Number.这在下一步要用到。

任务3:添加数据类型

AeroGear推送服务添加一个新的数据类型,对于推送程序有不同的数据类型(例如Android, iPad, iPhone free 或者Mobile Web).  数据类型包含了平台的特定属性,比如Google API key(Android)或者PushNetwork URL(SimplePush).

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

如下填入详细信息,点击Create按钮,输入在第二步接收到的Google API keyProject Number.

[译] 第十一天: AeroGear Push Server - 轻松推送提示信息

 

任务4:在手机程序里添加推送支持

AeroGear推送服务给PhoneGap程序添加推送信息很简单,AeroGear团队提供了一个我们可以安装的PhoneGap插件,运行一下命令安装aerogear-pushplugin.

添加推送信息就如添加几行JavaScript代码一样简单,在app.js文件里,用以下代码替换jQuery ready.

document.addEventListener('deviceready', onDeviceReady, true); 
function onDeviceReady(){
    var aeroConfig = {
          senderID: "{senderId}",
          pushServerURL: "{pushServerUrl}",
          variantID: "{variantId}",
          variantSecret: "{variantSecret}"
    }; 
    try {
      push.register(successHandler, errorHandler, {"badge": "true", "sound": "true",
        "alert": "true", "ecb": "onNotification", aeroConfig: aeroConfig});
    } catch (err) {
      txt = "There was an error on this page.\n\n";
      txt += "Error description: " + err.message + "\n\n";
      alert(txt);
    } 
    homeView();
    $('.home').on('tap', renderHomeView);   
    $('.feedback').on('tap', renderFeedbackFormView);  
} 
function successHandler(result) {
    console.log("successfully registered with AeroGear push server : " + result);
  } 
function errorHandler(error) {
    console.log("Error in registering with AeroGear push server : " + error);
} 
function onNotification(e) {
    showNotification(e.alert);
}
View Code

相关文章:

  • 2021-06-05
  • 2022-12-23
  • 2021-12-07
  • 2021-12-25
猜你喜欢
  • 2021-11-27
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
  • 2021-12-15
  • 2022-01-08
相关资源
相似解决方案