【问题标题】:How can I know that push notification delivered or not in iOS?我如何知道在 iOS 中是否发送了推送通知?
【发布时间】:2016-09-21 09:57:25
【问题描述】:

我正在使用 FCM(Firebase 云消息传递)接收推送通知。

一切都为我工作。

但是从我的服务器端,他们会不断地向我的应用发送通知,其中的时间为正文。

现在我只需在从服务器获取的时间达到当前时间时推送一次通知。

不应显示当前时间之前和当前时间之后的通知。

我不知道该怎么做。

谁能解释一下有没有办法得到这个。

【问题讨论】:

  • 不清楚你在问什么,但推送通知是一种“尽力而为”的服务;没有任何迹象表明消息已送达
  • 您必须发送静音通知。然后在需要时显示本地通知。看这里:stackoverflow.com/questions/20741618/…
  • @DmytroShvecov 如何区分静默通知和推送通知?
  • 不会向用户显示静音通知。您必须以这种方式发送所有通知。并在程序中处理它们,然后在需要时显示本地通知。查看我之前发布的链接
  • @DmytroShvecov 感谢您的回复

标签: ios objective-c push-notification apple-push-notifications firebase-cloud-messaging


【解决方案1】:

您可以通过在服务器上实施 cron 作业来自定义通知到达时间表。

如果您使用任何API 向任何设备推送通知,只需在调用后获取成功消息或传递消息。

【讨论】:

    【解决方案2】:

    我在 PHP 服务器上创建了一个端点,该端点采用 autoId 引用我的实时数据库中的 notifications/$autoId。通知的发送者将通知数据写入数据库,如果成功则向http://myserver.com/notifications/$autoId/send发送POST请求。

    这似乎无需身份验证,但是除了创建它的用户和接收它的用户之外,没有人会知道正在发送的通知 ID。在服务器端,当使用 FCM 成功发送消息时,我们可以设置{"sent": true} 来防止它被多次发送。当用户收到通知时,我们设置{"received": true}

    {
        "notifications": {
            "$autoId": {
                "sent": false,
                "received": "false",
                "userInfo": {
                    "notificationId": "$autoId",
                    "toId": "$toUid",
                    "fromId": "$fromUid"
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 2019-02-01
      • 2014-11-07
      • 2018-05-06
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      相关资源
      最近更新 更多