在 IBM Worklight 推送通知中使用轮询时出现问题

Posted

技术标签:

【中文标题】在 IBM Worklight 推送通知中使用轮询时出现问题【英文标题】:Issue while using Polling in IBM Worklight Push Notification 【发布时间】:2013-09-08 05:40:41 【问题描述】:

我正在尝试使用 android 设备进行 WL 6.0 推送通知。推送通知工作正常。我也尝试使用轮询。根据信息中心的文档,

对于轮询,我们需要调用另一个过程,并且在我们从该过程方法获得响应的特定时间间隔后,推送完成。如果我错了,请纠正我。

因此,我已经声明了一个名为getNotificationsFromBackend 的新过程并调用了它。

喜欢这个

WL.Server.createEventSource(
    name: 'PushEventSource',
    onDeviceSubscribe: 'deviceSubscribeFunc',
    onDeviceUnsubscribe: 'deviceUnsubscribeFunc',
    securityTest:'PushApplication-strong-mobile-securityTest',
    poll: 
        interval : 3,
        onPoll: getNotificationsFromBackend
       
);

function getNotificationsFromBackend() 
    WL.Logger.debug("hi");


现在,我面临的问题是当我点击Subscribe(来自示例应用程序)时,控制台说它无法找到适配器。不知道怎么回事,请帮帮我。

我在控制台中得到这个,

[ERROR   ] FWLSE0020E: Ajax request exception: Adapter 'PushAdapter' does not exist [project PushNotificationsProject]
[ERROR   ] FWLSE0117E: Error code: 1, error description: INTERNAL_ERROR, error message: FWLSE0069E: An internal error occurred during gadget request  [project PushNotificationsProject]Adapter 'PushAdapter' does not exist, User Identity wl_authenticityRealm=null, wl_remoteDisableRealm=(name:null, loginModule:NullLoginModule), wl_antiXSRFRealm=(name:rcs7pje8os4fk6p59en152iqrq, loginModule:WLAntiXSRFLoginModule), PushAppRealm=(name:ss, loginModule:PushAppLoginModule), wl_deviceAutoProvisioningRealm=null, wl_deviceNoProvisioningRealm=(name:c343dd38-7688-35e2-8dde-2c6acaae1930, loginModule:WLDeviceNoProvisioningLoginModule), myserver=(name:ss, loginModule:PushAppLoginModule), wl_anonymousUserRealm=null. [project PushNotificationsProject] 
                                                                                                               com.worklight.common.log.filters.ErrorFilter

【问题讨论】:

您写道“推送通知工作正常”,那么它们工作正常还是工作不正常?它们什么时候工作,什么时候不工作? 我在这里的查询是,我想了解 PushNotification 的轮询概念。当我删除民意调查时,推送工作正常。如果添加了民意调查,我总是会遇到上述错误。 好的...只是为了验证,添加轮询选项后,您确实重新部署了适配器,是吗?您能在 Worklight Console 中看到适配器吗? 是的,我重新部署它,它说适配器部署成功。 在 Eclipse 中部署适配器时 - 您是否看到它已成功部署然后被删除(那里应该有关于此的消息)?这通常意味着您的轮询实施中有问题。 【参考方案1】:

问题的原因是您的适配器未成功部署。我试过这段代码,它工作正常。以指定的时间间隔获取通知。

WL.Server.createEventSource(

    name: 'PushEventSource',
    onDeviceSubscribe: 'deviceSubscribeFunc',
    onDeviceUnsubscribe: 'deviceUnsubscribeFunc',
    securityTest:'PushApplication-strong-mobile-securityTest',
    poll: 
        interval : 3,
        onPoll: 'getNotificationsFromBackend'
       
);


function getNotificationsFromBackend() 

    WL.Logger.debug("hi");
    submitNotification("User1","This is Poll Notification");

您的适配器代码的问题似乎是onPoll 参数的函数名称缺少引号。

【讨论】:

它缺少 "()" ,它必须是这样的 : poll: interval : 3, onPoll: 'getNotificationsFromBackend()'

以上是关于在 IBM Worklight 推送通知中使用轮询时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight - 可靠的推送通知

IBM Worklight 和推送通知问题

IBM Worklight:推送通知行为

IBM worklight 中基于标签的推送通知示例

IBM Worklight 5.0.6.1 - 通过代理服务器推送通知

IBM Worklight - 仅向订阅用户推送通知