我创建了这个 Perfect 包,目的是通过 Firebase 云消息传递系统向 iOS 和 Android 设备发送推送通知。
该项目的主分支目前可以使用 Xcode 9.2 或 Ubuntu 上的 Swift 4.0 工具链进行编译。
将此项目作为依赖项添加到您的 Package.swift 文件中。
.package(url: "https://github.com/iMac0de/Perfect-FCM-Server.git", "1.0.0"..<"2.0.0")
首先要做的是在 Firebase 控制台中创建一个项目,以便检索服务器密钥。
为了从您的服务器端使用 Firebase API,您需要将您的服务器密钥提供给 Perfect FCM Server 包。
let config = PerfectFCM.Config(serverKey: YOUR_SERVER_KEY)
一旦 Perfect FCM Server 被配置,您应该能够通过 Firebase 云消息传递系统发送推送通知。
do {
try PerfectFCM.send(config, to: "A_FCM_DEVICE_TOKEN_OR_TOPIC", title: "YOUR_TITLE", body: "YOUR_BODY", data: ["CUSTOM_KEY": "CUSTOM_DATA"])
} catch {
print(error.localizedDescription)
}
可以通过将设备令牌(通过 Firebase 客户端检索)提供给 *to* 参数,来将推送通知发送到特定设备;也可以发送到主题,例如 * /topics/daily-news *,此主题每天向一组设备发送推送通知。
一旦您获得了设备令牌,创建存储设备令牌的逻辑取决于您。 在我的例子中,我通常创建一个 REST API,允许我 POST 一些关于设备的数据并将它们保存在数据库中。 这是我的 *Device* 类
class Device {
var name: String
var token: String
var brand: String
var model: String
var os: String
var version: String
init() {
self.name = ""
self.token = ""
self.brand = ""
self.model = ""
self.os = ""
self.version = ""
}
init(name: String, token: String, brand: String, model: String, os: String, version: String) {
self.name = name
self.token = token
self.brand = brand
self.model = model
self.os = os
self.version = version
}
}
然后,您可以在客户端设备上收集这些数据,并将它们存储到您选择的 数据库中。
您应该知道,对于同一设备,令牌会不时更新。您应该考虑到这一点,以便能够在令牌更改时更新数据库中的设备。
如果您想测试它,您可以在一个文件中创建以下脚本(例如 test.sh)
#!/bin/sh
export FCM_SERVER_KEY="YOUR_SERVER_KEY"
export FCM_DEVICE_TOKEN="YOUR_DEVICE_TOKEN"
swift test
应用文件的执行权限
chmod +x test.sh
然后运行脚本
./test.sh
您应该在您的设备上收到一个标题为“Hello world!”,内容为“Perfect FCM PUSH notification!”的推送通知。