我如何知道在 iOS 中是不是发送了推送通知?

Posted

技术标签:

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

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

一切都为我工作。

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

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

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

我不知道该怎么做。

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

【问题讨论】:

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

【讨论】:

以上是关于我如何知道在 iOS 中是不是发送了推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中使用 Google Firebase 向特定用户发送推送通知?

如何静音推送通知?

向 iOS 发送推送通知的问题,(云功能)

推送通知测试工作流程 [iOS]

iOS - 推送通知:它是不是总是显示通知

iOS 推送通知 - 向所有人发送消息