Я перевожу свое приложение, и у меня возникла проблема с удаленными уведомлениями.
Следующая документация
Хранение локализованного контента в вашем приложении
Если вы используете постоянный набор сообщений для своих уведомлений, вы
может хранить локализованные версии текста сообщения в вашем приложении
и используйте ключи loc-key и loc-args в вашей полезной нагрузке, чтобы указать, какие
сообщение для отображения. Ключи loc-key и loc-args определяют сообщение
содержание уведомления. Когда присутствует, локальная система ищет
файлы Localizable.strings приложения для строки ключа, соответствующей
значение в loc-key. Затем он использует соответствующее значение из
файл строк в качестве основы для текста сообщения, заменяя любые
значения заполнителя со строками, указанными в ключе loc-args.
(Вы также можете указать строку заголовка для уведомления, используя
ключи title-loc-key и title-loc-args.)
У меня есть NSLocalizedString
для заголовка, подзаголовка и тела. Проблема в том, что когда я отправляю уведомление с английского устройства, я получаю удаленное уведомление на английском на итальянском устройстве. Я храню все пары Localized
key:value
в файле Localizable.string
, так как я понял, что это работает, при получении уведомления значения из текущего языка устройства должны быть взяты из файла Localizable.string
и отображены. Я делаю то же самое для всех щенков оповещения, и там он отлично работает, но при удаленных уведомлениях он сохраняет язык отправляющего устройства. Я использую FCM для удаленных уведомлений, поэтому я могу пропустить передачу некоторого значения в полезную нагрузку. Вы видите что-то пропущенное в полезной нагрузке?
Большое спасибо.
static func sendPushNotification(to receiverToken: String, title: String, subtitle: String, body: String) {
print("PushNotifications.sendPushNotification Started")
let serverKey = firebaseServerKey
let url = NSURL(string: "https://fcm.googleapis.com/fcm/send")
let postParams: [String : Any] = [
"to": receiverToken,
"mutable_content": true,
"content_available": true,
"priority": "high",
"notification": [
// "badge" : 1, sendig the badge number, will cause aglitch
// receiving device localized parameters
"title_loc_key" : title,
"subtitle_loc_key" : subtitle,
"body_loc_key" : body,
"sound" : true, // or specify audio name to play
],
"data" : [
"data": "ciao",
]
]
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST"
request.setValue("key=\(serverKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
do {
// request.httpBody = try JSONSerialization.data(withJSONObject: postParams, options: JSONSerialization.WritingOptions())
request.httpBody = try JSONSerialization.data(withJSONObject: postParams, options: [.prettyPrinted]) // working
print("My paramaters: \(postParams)")
} catch {
print("Caught an error: \(error)")
}
let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
if let realResponse = response as? HTTPURLResponse {
if realResponse.statusCode != 200 {
print("Not a 200 response")
}
}
if let posData = data {
if let postString = String(data: posData, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) as String? {
print("POST: \(postString)")
}
}
}
task.resume()
}
Эта функция вызывает:
PushNotifications.sendPushNotification(to: customerFcmToken, title: String(format: NSLocalizedString( "ORDER_DELETED_PUSH_TITLE", comment: ""), orderId), subtitle: String(format: NSLocalizedString( "ORDER_DELETED_PUSH_SUBTITLE", comment: ""), UserDetails.fullName!), body: String(format: NSLocalizedString("ORDER_DELETED_PUSH_BODY", comment: "") , customerName))