发送推送通知时出现 Worklight 错误

Posted

技术标签:

【中文标题】发送推送通知时出现 Worklight 错误【英文标题】:Worklight error when sending push notification 【发布时间】:2013-03-15 09:47:55 【问题描述】:

我正在尝试使用 Worklight 推送通知为 ios+android 应用程序发送推送。

我在我的适配器中创建了 submitNotification 函数,当我调用它时,它说推送已成功发送,但实际上我的设备中没有收到推送。

当我看到日志时,我可以阅读:

Couldn't connect to APNS server
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
java.net.Socket.connect(Socket.java:529)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:570)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:371)
com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:71)
com.notnoop.apns.internal.ApnsConnectionImpl.socket(ApnsConnectionImpl.java:133)
com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:160)
com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46)
com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:52)
com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36)
com.worklight.integration.notification.apns.ApplicationConnection.sendNotification(ApplicationConnection.java:84)
com.worklight.integration.notification.apns.APNSMediator.sendNotification(APNSMediator.java:85)
com.worklight.integration.notification.Mediator$4.run(Mediator.java:174)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
java.util.concurrent.FutureTask.run(FutureTask.java:138)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:680)

Couldn't send message com.notnoop.apns.EnhancedApnsNotification@96eee2c0                                  com.notnoop.apns.internal.ApnsConnectionImpl.socket(ApnsConnectionImpl.java:146)
com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:160)
com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46)
com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:52)
com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36)
com.worklight.integration.notification.apns.ApplicationConnection.sendNotification(ApplicationConnection.java:84)
com.worklight.integration.notification.apns.APNSMediator.sendNotification(APNSMediator.java:85)
com.worklight.integration.notification.Mediator$4.run(Mediator.java:174)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
java.util.concurrent.FutureTask.run(FutureTask.java:138)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:680)

然后

 Failed to send message com.notnoop.apns.EnhancedApnsNotification@96eee2c0... trying again

我的 submitNotification 功能:

function submitNotification(userId, notificationText) 
    var userSubscription = WL.Server.getUserNotificationSubscription(
            'myAdapter.MyPushEventSource', userId);

    if (userSubscription == null) 
        return 
            result : "No subscription found for user :: " + userId
        ;
    

    WL.Logger.debug("submitNotification >> userId :: " + userId + ", text :: "
            + notificationText);

    WL.Server.notifyAllDevices(userSubscription, 
        badge : 1,
        activateButtonLabel : "Open",
        alert : notificationText
    );

    return 
        result : "Notification sent to user :: " + userId
    ;

我的代码有问题吗?还是通过我的网络?

【问题讨论】:

这是一个网络问题 您能否也将其写为下面的答案并标记为稍后已回答?谢谢。 是的,我可以,但我应该等几个小时:我有这条 *** 消息“信誉低于 10 的用户在提问后 8 小时内无法回答自己的问题。您可以在 x 小时内回答。在此之前,请使用 cmets,或改为编辑您的问题。" 【参考方案1】:

终于是网络问题了。

我们更改了防火墙配置以允许访问 Google 和 Apple 推送服务器。 对于 Apple 服务器,您可以在此地址找到更多详细信息:http://developer.apple.com/library/ios/#technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG41

整个 17.0.0.0/8 地址块分配给苹果,所以你可以 在您的防火墙规则中指定该范围。

【讨论】:

以上是关于发送推送通知时出现 Worklight 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 notnoopapns 向 apns 发送推送通知时出现 ssl 错误

在向数千名用户发送 android 推送通知时出现 405 错误

使用 curl 命令发送推送通知时出现无效注册错误

在 GCM 中发送推送通知时出现未经授权的错误

从 PHP 发送推送通知时出现主键错误

通过移动优先平台发送 Apple 推送通知时出现无效的十六进制字符错误