Изменение языка оповещения в баннере Push Notification

Я столкнулся с проблемой изменения языка оповещения в баннере, когда наступает приход. На самом деле я работаю над приложением, которое работает на двух языках. Один - английский, второй - норвежский. Нажатие, которое я получаю с конца моего веб-сервера, и то, что строка, содержащаяся в alert, отображается в баннере, когда нажимается, и вы находитесь вне приложения. Но в качестве требования мы хотим, чтобы, если я изменяю язык от установки с английского на норвежский, тогда, когда нажимает, эта строка предупреждения баннера также изменится на норвежский. Будет ли возможно на моем конце, или я должен изменить его с сервера всякий раз, когда я меняю язык.

Любое предложение было бы полезно.

Спасибо

Ответ 1

Существует два способа отображения локализованного текста в push-уведомлении в iOS:

Локализовать сообщение на вашем сервере

В этом случае вы должны отправить язык устройства на свой сервер. Код, который вы должны добавить в приложение iOS, будет похож на следующий:

NSString *preferredLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
const char *langStr = [preferredLanguage UTF8String];
[self sendCurrentLanguage:langStr]; // Method that communicates with your server

Затем вы можете отправить уведомление на соответствующем языке с помощью клавиши alert в полезной нагрузке уведомления JSON.

Отправьте строку локализации с полезной нагрузкой уведомления

Вы можете отправить локализованную строку в полезную нагрузку. Клавиша alert принимает дочерний ключ loc-key, который вы можете использовать для отправки локализованной строки:

"alert" : { 
    "loc-key" : "My Localized String",
    ...
}

И затем в файле Localizable.strings внутри идентификатора соответствующего языка добавьте следующее:

"My Localized String" = "The localized string in the language you want.";

Если вам нужно передать аргументы для построения окончательной локализованной строки, вы можете передать ее как массив loc-args JSON в полезной нагрузке уведомления:

"alert" : { 
        "loc-key" : "My Localized String",
        "loc-args" : [ "First argument", "Second argument" ],
        ...
    }

И в вашем Localizable.strings:

 "My Localized String" = "The localized string with first argument %@, and second argument %@."

Или, если вам нужно изменить позиции:

 "My Localized String" = "The localized string with second argument %[email protected], and first argument %[email protected]";