Firebase,Swift:向特定用户发送推送通知给定设备令牌

时间:2017-08-14 15:41:45

标签: ios swift firebase apple-push-notifications

我有一个Firebase Swift聊天应用,我想向特定用户发送推送通知。我已经捕获并可以访问用户的设备令牌。

所有参考文献都提到必须有一个“网络应用程序”来管理这个,但我还没有找到任何具体的例子。

  1. 是否需要使用网络应用来管理Firebase的推送通知?

  2. 如果有,是否有任何关于如何运作的例子?

  3. 谢谢。

2 个答案:

答案 0 :(得分:0)

  • 首先对 Firebase Cloud Messaging 进行所有配置。可以点击此链接https://firebase.google.com/docs/cloud-messaging/ios/client
  • 现在,您需要为要发送推送通知的关联用户访问 Firebase注册令牌。您可以通过以下步骤获取此令牌:
    1. “ Firebase /消息传递” 窗格添加到您的项目中。
    2. import FirebaseMessaging 在您的 AppDelegate.swift 文件中。
    3. MessagingDelegate 协议符合您的 AppDelegate 类。
    4. 编写 didRefreshRegistrationToken 委托方法并获取用户的注册令牌:
  • 现在,您可以准备向特定用户发送推送通知了。发送通知如下:

    func sendPushNotification(payloadDict: [String: Any]) {
       let url = URL(string: "https://fcm.googleapis.com/fcm/send")!
       var request = URLRequest(url: url)
       request.setValue("application/json", forHTTPHeaderField: "Content-Type")
       // get your **server key** from your Firebase project console under **Cloud Messaging** tab
       request.setValue("key=enter your server key", forHTTPHeaderField: "Authorization")
       request.httpMethod = "POST"
       request.httpBody = try? JSONSerialization.data(withJSONObject: payloadDict, options: [])
       let task = URLSession.shared.dataTask(with: request) { data, response, error in
          guard let data = data, error == nil else {
            print(error ?? "")
            return
          }
          if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print(response ?? "")
          }
          print("Notfication sent successfully.")
          let responseString = String(data: data, encoding: .utf8)
          print(responseString ?? "")
       }
       task.resume()
    }
    
  • 现在将上面的函数调用为:

    let userToken = "your specific user's firebase registration token"
    let notifPayload: [String: Any] = ["to": userToken,"notification": ["title":"You got a new meassage.","body":"This message is sent for you","badge":1,"sound":"default"]]
    self.sendPushNotification(payloadDict: notifPayload)
    

答案 1 :(得分:0)

不,不需要网络应用来管理 Firebase 推送通知

看看 Ashvini 的回答,它为您提供了一种直接从您的 iOS 应用向其他设备发送消息的方法。

您还可以使用 Firebase 控制台手动向多个用户同时发送推送消息。

这是通过网络应用程序/服务器发送消息的文档。 Firebase Documentation