В одном из наших проектов мы используем кодирование-декодирование сообщений, поскольку смайлик, отправленный из iOS, не выглядел корректно в Android, и наоборот, смайлик из Android не выглядел корректно в iOS.
Итак, у нас был подход, закодировать сообщение и отправить его на сервер. Они сохраняли данные в закодированном виде и отправляли те же закодированные данные на другой мобильный конец, где они были декодированы.
Но для удаленного уведомления,
Push-уведомление с сервера отображается во всплывающем окне iOS по умолчанию в центре уведомлений, обрабатываемом самим устройством. Наше декодирование происходит только внутри приложения, поэтому ваше сообщение будет отображаться в зашифрованном виде на устройстве.
Чтобы решить эту проблему:
Мы попросили бэкэнд-команду сначала отправить удаленное push-сообщение, расшифровав его конец.
Мы использовали следующий код для кодирования-декодирования методов в Swift:
// Encode strings in UTF-8 format
func encode(_ s: String) -> String {
let variable = s.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!
return variable
}
// Decode strings in UTF-8 format
func decode(_ s: String) -> String? {
let val = s.replace(target: "+", withString: "%20") // + appears in string while encoded from android
let decodedString = val.removingPercentEncoding!
return decodedString
}