Я использую ТСМ для отправки пуш уведомления устройств, использующих этот методКак получить содержимое удаленного уведомления с помощью FCM (iOS)?
func push(message: String, toUser: String) {
var token: String?
for person in self.users {
if toUser == person.username && person.firebaseToken != nil {
token = person.firebaseToken
}
}
if token != nil {
var request = URLRequest(url: URL(string: "https://fcm.googleapis.com/fcm/send")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("key=[your FCM Server Key]", forHTTPHeaderField: "Authorization")
let json = [
"to" : token!,
"priority" : "high",
"notification" : [
"body" : message
]
] as [String : Any]
do {
let jsonData = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("Error=\(error)")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
// check for http errors
print("Status Code should be 200, but is \(httpStatus.statusCode)")
print("Response = \(response)")
}
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(responseString)")
}
task.resume()
}
catch {
print(error)
}
}
}
Но эти устройства просто получают сообщение, ничего не делая с ним. Я также пытаюсь сохранить его содержимое. Как я могу это сделать? Единственный вариант - сохранить его в базе данных Firebase?
Спасибо.
Благодаря! Знаете ли вы, сколько времени уведомление останется, если устройство не получит его? Если я отправлю уведомление, которое говорит «123», а другое устройство будет закрыто, а затем я открою его через неделю, приложение получит нажатие? Или, если приложение открыто, все равно будет вызывать эту функцию для сохранения данных? – MuMtaZ
После того, как уведомление получено на устройстве, оно остается на устройстве, пока приложение не откроется снова. Если приложение было запрограммировано, оно вызывает callReceieveRemoteNotification или эквивалент ios 10 (userNotificationCenter), но если приложение было закрыто, то полезная нагрузка push-уведомления будет содержаться в «вариантах» приложения (didFinishLaunchingWithOptions) –