问题
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.
Is it necessary to have a web app to manage push notifications for Firebase?
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:
- Add 'Firebase/Messaging' pod to your project.
import FirebaseMessaging
in yourAppDelegate.swift
file.- Conform MessagingDelegate protocol to your
AppDelegate
class. - 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