Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 848
XCode Warrier Avatar asked Sep 15 '25 23:09

XCode Warrier


1 Answers

  • 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)
    
like image 155
Ashvini Avatar answered Sep 19 '25 03:09

Ashvini