接收没有WLClient :: connect()的GCM推送

麒麟

我们可以WLPush::subscribe()没有WLClient::connect()吗?

背景信息
我正在使用IBM Worklight框架开发一个Android本机应用程序(脱机版本-在没有Internet的情况下该应用程序可以工作),并且正在实现推送通知。据我了解,我们需要WLPush::subscribe()获取通知。但是我们不能直接调用subscription()方法,它必须在Callback中OnReadyToSubscribeListener建立连接后,将调用侦听器。

面临的问题是:

  1. 该应用已注册到GCM
  2. 该应用已终止
  3. 设备中已收到推送通知,我已经可以看到该通知。

但是我无法被WLEventSourceListener调用……因为我需要在此connect之前subscribe这对我来说没有任何意义-因为我们已经在客户端控制台(DDMS)中显示了通知。

我知道我可能可以:

  • 覆写 GCMIntentService
  • 强制WLClient::connect()触发计时

有人可以提供更好的解决方案吗?

10月31日更新

我正在使用“ WL Android本机推送”示例项目,发现在没有连接的情况下不可能获得回调WLEventSourceListener的调用。

重现步骤:

  1. 启动示例客户端
  2. 单击“连接”以连接到服务器
  3. 连接成功返回,请单击“订阅”进行订阅
  4. 在Eclipse IDE中,右键单击推送适配器以将推送发送到客户端
  5. 在客户端,它接收推送消息(显示在DDMS控制台日志中)并被WLEventSourceListener调用。
  6. 杀死应用
  7. 重新发送推送
  8. 推送消息显示在DDMS控制台日志中,通知显示在通知栏中。
  9. 单击通知后,将启动应用程序。
  10. WLEventSourceListener当再次点击连接按钮被调用。

这是问题。在步骤9中,推送消息到达客户端,但是在步骤10中,connect必须调用该消息才能被WLEventSourceListener调用。有没有办法在没有连接的情况下获取消息?

伊丹·阿达(Idan Adar)

为了订阅推送通知,需要该应用程序连接到Worklight Server。因此,尽管该应用程序也可以脱机工作,但它至少需要一次“联机”并在连接到Worklight Server时经历订阅过程。

Worklight Server调度通知,然后通过Google的GCM服务,该通知最终将其发送到已注册的设备。

然后,listener目的是将接收到的通知传递给应用程序,将其打开,然后让应用程序逻辑来处理(显示)它。

事件源通知绑定到用户-这是IBM提供的示例应用程序的实现方式-这意味着只有用户登录后,才会显示发送给该用户的通知。登录通常需要对用户进行身份验证,这是针对Worklight Server进行的,这意味着需要连接

例如,假设有2位用户使用同一台设备。用户#1收到通知,但用户#2当前正在使用该设备。如果用户#2将打开不带身份验证的应用程序,则用户#2将收到实际上已为用户#1发送的通知。


这带来了以下问题:

  1. 您的应用场景是什么?
  2. 您是否需要身份验证?

如果不需要身份验证,则需要查看广播标签通知类型。这些通知类型将允许在没有连接要求的情况下调用回调

注意:对于以上通知类型,必须至少使用Worklight 6.2。
您可以在这里阅读有关这些的更多信息:http : //www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.dev.doc/admin/c_push_notification.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章