Firebase, Swift: Send a push notification to specific user given device token

时光毁灭记忆、已成空白 提交于 2020-12-12 06:27:21

问题


I have a Firebase Swift chat app where I'd like to send a push notification to a specific user. I have already captured and have access to the user's device token.

All the references mention having to have a 'web app' to manage this, but I haven't managed to find any specific examples of this.

  1. Is it necessary to have a web app to manage push notifications for Firebase?

  2. If so, are there any examples of how this can work?

Thank you.


回答1:


  • First do the all configuration for Firebase Cloud Messaging. Can follow this link https://firebase.google.com/docs/cloud-messaging/ios/client
  • Now you need to access Firebase registration token for your associated user whom you want to send a push notification. You can get this token by following below steps:
    1. Add 'Firebase/Messaging' pod to your project.
    2. import FirebaseMessaging in your AppDelegate.swift file.
    3. Conform MessagingDelegate protocol to your AppDelegate class.
    4. Write didRefreshRegistrationToken delegate method and get your user's registration token:
  • Now you are ready to send push notification to your specific user. Send notification as below:

    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()
    }
    
  • Now call above function as:

    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)
    


来源:https://stackoverflow.com/questions/45678212/firebase-swift-send-a-push-notification-to-specific-user-given-device-token

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!