【问题标题】:Success callback for Azure mobile services `push.apns.send`Azure 移动服务“push.apns.send”的成功回调
【发布时间】:2013-03-16 16:00:54
【问题描述】:

push.apns.send 方法不调用 success 回调。因此,如果执行成功,我们无法确定此操作何时完成。

这是我的代码(它是服务器端脚本的一部分,在该数据表之一的插入事件上运行):

  push.apns.send(message.deviceToken, {
    alert: message.alert,
    badge: message.badge,
    sound: message.sound,
    payload: {
      message: message.alert,
      appID: message.appID
    }
  }, {
    success: function(resp) {
      console.log(resp)
    },
    error: function(err) {
      console.error(err)
    }
  })

error 回调有效。例如,当我传递无效的deviceToken 时,我可以在日志中看到错误消息。但是在成功执行的情况下,日志中没有任何内容。好像根本不调用success回调。

本例中没有显示,但在我的情况下,我需要success 回调来更改记录的状态并保存。

【问题讨论】:

    标签: javascript azure push-notification apple-push-notifications azure-mobile-services


    【解决方案1】:

    更改以下代码即可。

    success: function(data) {
      console.log(data)
    },
    

    【讨论】:

      【解决方案2】:

      不幸的是,Apple Push Notification Service (APNS) 就是这样工作的。基本上,在幕后打开一个 TCP 连接到 APNS,并将与您的消息对应的字节(正确格式化)发送到服务。如果推送成功,APNS 不会发回任何响应。如果没有,它可能会立即响应(这是调用错误回调的情况),也可能不会 - 稍后当您尝试访问反馈服务时,它可能告诉您出现错误。

      因此,鉴于没有可靠的方法告诉 push.apns.send 的调用者推送成功,团队认为添加 success 回调没有意义(这会给人一种错误的印象,即推送成功)。

      您可能要使用的一种启发式方法是首先发送推送,然后等待 (setTimeout) 一段时间,如果未调用错误回调,则假定推送成功。请注意,正如我上面提到的,它不是 100% 准确的,但对于您的场景来说可能就足够了。

      【讨论】:

      • 现在我明白了,感谢您的澄清和解决方法。我认为这对我们有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      相关资源
      最近更新 更多