我们可以WLPush::subscribe()
没有WLClient::connect()
吗?
背景信息
我正在使用IBM Worklight框架开发一个Android本机应用程序(脱机版本-在没有Internet的情况下该应用程序可以工作),并且正在实现推送通知。据我了解,我们需要WLPush::subscribe()
获取通知。但是我们不能直接调用subscription()方法,它必须在Callback中OnReadyToSubscribeListener
。建立连接后,将调用侦听器。
面临的问题是:
但是我无法被WLEventSourceListener
调用……因为我需要在此connect
之前subscribe
!这对我来说没有任何意义-因为我们已经在客户端控制台(DDMS)中显示了通知。
我知道我可能可以:
GCMIntentService
WLClient::connect()
触发计时有人可以提供更好的解决方案吗?
10月31日更新
我正在使用“ WL Android本机推送”示例项目,发现在没有连接的情况下不可能获得回调WLEventSourceListener的调用。
重现步骤:
WLEventSourceListener
调用。WLEventSourceListener
当再次点击连接按钮被调用。这是问题。在步骤9中,推送消息到达客户端,但是在步骤10中,connect
必须调用该消息才能被WLEventSourceListener
调用。有没有办法在没有连接的情况下获取消息?
为了订阅推送通知,需要该应用程序连接到Worklight Server。因此,尽管该应用程序也可以脱机工作,但它至少需要一次“联机”并在连接到Worklight Server时经历订阅过程。
Worklight Server调度通知,然后通过Google的GCM服务,该通知最终将其发送到已注册的设备。
然后,listener
目的是将接收到的通知传递给应用程序,将其打开,然后让应用程序逻辑来处理(显示)它。
事件源通知绑定到用户-这是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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句