Perfect FCM 服务器

概要

我创建了这个 Perfect 包,目的是通过 Firebase 云消息传递系统向 iOS 和 Android 设备发送推送通知。

Swift 兼容性

该项目的主分支目前可以使用 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 控制台中创建一个项目,以便检索服务器密钥。

配置

为了从您的服务器端使用 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!”的推送通知。