您好,我正在尝试创建类似于此常见用例的简单推送通知系统: 1.用户获得一个宝箱,可以观看广告以跳过等待时间,也可以等待一个小时让宝箱打开。该应用程序发送一个上游请求,该请求设置了一个下游推送通知,该通知应在一小时内交付,让用户知道宝箱已准备就绪。
2一.然后用户等待一个小时,收到推送通知(在应用程序外部)打开他们的箱子,他们做到了!
或
2b.他们等待 20 分钟,然后决定观看广告。该应用程序发送一个上游请求,该请求取消了原本会在 40 分钟内传递的待处理推送通知。
好的,太棒了,这就是问题所在,我很难理解如何做到这一点。我已经查看了每个程序的文档,但它们似乎是为下游推送通知而设计的。这个用例没有内置支持似乎很奇怪。这似乎是一个很常见的用例。
到目前为止,我找到了 3 个解决方案,这些解决方案将集成到我的跨平台 Unity 设置中,并免费或超便宜地提供服务:
- Amazon Simple Notification Service (SNS)
- Google Firebase Cloud Messaging (FCM)
-
壹信号
-
亚马逊似乎将客户分组为"主题",所以我想我会建立一个单设备主题,本质上。我可以订阅和取消订阅它们,但它似乎不支持延迟 60 分钟的主题。 2一.创建一个主题:https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html(它只包括当前设备) 2b.订阅它 2c.https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-publish-message-with-attributes.html 向其发送消息 所以基本上我可以向我的消息添加属性,但似乎我需要实现服务器端代码来读取延迟属性,然后以某种方式将消息排队等待延迟。也许我错过了什么?
-
对于Firebase,我几乎看到了与亚马逊相同的东西。有一些主题 https://firebase.google.com/docs/cloud-messaging/android/topic-messaging 和发送上游消息的方法 https://firebase.google.com/docs/cloud-messaging/android/send-with-console 但是对于我在这里无论如何都看不到的消息来获得时间延迟,https://firebase.google.com/docs/cloud-messaging/unity/topic-messaging 我看到该文章底部的条件,但我不知道它是否适用于此用例。
-
OneSignal具有最容易滚动的API。我将引用一些可以使用格式("创建通知")按 CTRL-F 的字符串,因为所有内容都在此页面上:https://documentation.onesignal.com/reference 所以基本上我可以("发送到特定设备"),我想这将是发送设备,然后我可以使用send_after参数("安排未来交付的通知"。最后,如果需要,我可以("取消通知")。所以这似乎是我需要的一切。我目前正在研究此选项,并试图弄清楚如何实际使其工作。
因此,在过去的几个小时里,我在研究这些选项中的每一个方面都取得了进展。我希望你能帮助我更好地理解我是如何误解上述选项的,因为在我看来,这是一个非常常见的用例。也许我只是没有正确地谷歌搜索这个问题。任何帮助表示赞赏。
每当您可能需要取消发送的通知的很大一部分时,都应使用本地通知。这样,您可以轻松地在本地安排和取消它们,而无需发出任何网络请求。此外,此解决方案适用于离线设备,非常适合游戏(在飞机上玩等......