我们可以WLPush::subscribe()
没有WLClient::connect()
吗?
背景
我正在使用IBM Worklight框架处理Android本机应用程序(离线版本 - 应用程序可以在没有Internet的情况下工作),我正在实现推送通知。据我了解,我们需要WLPush::subscribe()
才能收到通知。但是我们不能直接调用subscribe()方法,它必须在Callback OnReadyToSubscribeListener
中。一旦建立连接,将调用侦听器。
面临的问题是:
但是我无法调用WLEventSourceListener
...因为我需要在connect
之前subscribe
!这对我没有任何意义 - 因为我们已经在客户端控制台(DDMS)中显示了通知。
我知道我可能会:
GCMIntentService
WLClient::connect()
触发 TIMING 有人可以提供更好的解决方案吗?
于10月31日更新
我正在使用“WL Android native push”示例项目,发现在没有连接的情况下调用WLEventSourceListener是不可能的。
重现的步骤:
WLEventSourceListener
。WLEventSourceListener
。这是一个问题。在步骤9中,推送消息到达客户端,但是在步骤10中,必须调用connect
以调用WLEventSourceListener
。有没有办法在没有连接的情况下获取消息?
答案 0 :(得分:1)
要订阅推送通知,应用程序需要连接到Worklight Server。因此,虽然应用程序也可以脱机工作,但它至少需要一次“在线”,并在连接到Worklight Server时完成订阅过程。
Worklight Server会调度通知,然后通过Google的GCM服务,最终将其发送到注册的设备。
然后,listener
的目的是将收到的通知传递给应用程序,打开它并让app逻辑处理(显示)它。
事件源通知绑定到用户 - 这是IBM提供的示例应用程序的实现方式 - 这意味着只有用户登录后,才会发送给该用户的通知将显示用户。登录通常需要对用户进行身份验证,这是针对Worklight Server进行的, 表示需要连接 。
例如,假设2个用户使用同一设备。用户#1收到通知,但用户#2当前正在使用该设备。如果用户#2将打开带有身份验证的应用程序,则用户#2将收到实际上已发送给用户#1的通知。
这提出了以下问题:
如果不需要身份验证,则需要查看广播或标记通知类型。这些通知类型允许在没有连接要求的情况下调用 。
注意:对于上述通知类型,您必须至少使用Worklight 6.2 您可以在此处详细了解这些内容:http://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.dev.doc/admin/c_push_notification.html