使用 Firebase 和 Swift 推送通知 [重复]

Posted

技术标签:

【中文标题】使用 Firebase 和 Swift 推送通知 [重复]【英文标题】:Push notifications with Firebase and Swift [duplicate] 【发布时间】:2016-11-14 13:07:18 【问题描述】:

我有这个应用程序,并且我已经在它上面启用了推送通知。我可以通过 Firebase 控制台发送通知,但我真正想做的是能够在对应用程序执行操作时向特定用户发送通知。我尝试遵循 Firebase 文档,但是有关此的文档似乎真的很差..

它告诉你使用这个方法:

FIRMessaging.messaging().sendMessage(message: ([NSObject : AnyObject]), to: (String), withMessageID: (String), timeToLive: (Int64))

但是我真的不知道要作为参数输入什么,并且如上所述,文档并没有太大帮助.. 有没有人尝试过使用这种方法,如果是,它是如何完成的?感谢任何帮助,谢谢!

【问题讨论】:

向设备发送消息需要您指定所谓的服务器令牌。顾名思义,此令牌只能在您控制的服务器(或其他安全环境)上使用。出于这个原因,目前也只能通过运行自定义应用服务器来发送设备到设备消息。见***.com/questions/37634046/… 如何将答案应用于我自己的问题?我发现它必须通过 HTTP post-requests 到 Firebase 提供的网络服务器来完成。所以下面的答案是错误的。可以将通知从一个设备发送到另一个设备,它只需要通过一个网络服务器,像这样:设备发出 POST 请求 -> firebase webserver 转发 -> Apple APNS -> 接收设备 .. 就是这样完成的.. 这是本的答案和我链接的问题的答案所描述的路径。请随意就该链接问题提供您自己的答案。 但是我只是发现没有必要建议自己托管 nodeJs 服务器,因为 Firebase 已经提供了 API .. 当我阅读本的答案时,现在他的意思是有道理的,但我必须承认起初,它让我感到困惑而不是帮助.. 我理解它,因为 Firebase 根本无法向设备发送设备通知.. 也许这确实是 FIREBASE 不能,因为它正在通过一个网络服务器,但它仍然是一个有点误导,对于像我这样对推送通知完全陌生的人:) 无论如何,我找到了解决方案。感谢您的回复! :) @NicolaiHarbo 你能帮我找到解决办法吗? 【参考方案1】:

据我所知,不可能触发从具有 firebase 的设备发送推送通知。您需要的是一个单独的服务(在不同的服务器上运行),它具有访问由 firebase 管理的设备令牌并向某些设备发送推送通知的必要权限。所有这些都必须在您的 Nosql firebase 数据库上运行。 您可以将您的推送通知请求存储在您的数据库中,并让您的推送通知服务监听该路径。如果有来自设备的请求,则触发发送通知并从数据库中删除请求。

你可以在这个包中使用 nodejs 应用程序:https://www.npmjs.com/package/fcm-node

【讨论】:

现在可以了。见:***.com/a/47106374/144088

以上是关于使用 Firebase 和 Swift 推送通知 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift firebase 推送通知无法使用零错误?

Swift 从用户向用户发送推送通知 Firebase

swift 3,ios 10 - 未收到推送通知 firebase

iOS Swift 使用 Firebase 云消息发送丰富的推送通知

如何从fireBase推送通知swift 4中获取数据

带有 Swift 的 Firebase 推送通知在 ios 11.4 中不起作用