Send localized string key in loc-args for iOS Push notifications

iOSAppDev picture iOSAppDev · Aug 7, 2014 · Viewed 7.3k times · Source

My application supports 4 languages & push notifications. When I send push notification to APNS , I am sending loc_key & loc-args. Now I need to send localized strings in loc-args array so that I can translate those on iOS app side when app receives the push notification.

But when I send localized strings in loc-args , instead of showing translated string in notification center , it just showed localized key as it is.

My string file contains below 2 messages:

"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
"ROLE_PROFESSIONAL_LOCALIZED_KEY" = "professional"

Server sends below payload

{
    aps =     {
        alert =         {
            "loc-args" =             (
                "John",
                "ROLE_PROFESSIONAL_LOCALIZED_KEY"
            );
            "loc-key" = "WINNER_ALERT";
        };
        badge = 1;
        sound = default;
    };
}

When I send above payload then in iOS Notification Center , message look like

Congratulations! John won the match & became ROLE_PROFESSIONAL_LOCALIZED_KEY player

instead of

Congratulations! JOHN won the match & became professional player

Can anyone tell me whether it is possible to send localized strings in loc-args ? If yes, what's wrong in my payload ?

Thanks in advance

Answer

Zakaria Braksa picture Zakaria Braksa · Sep 17, 2015

I believe your Localizable.strings file should look like this :

"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";

And the push notification payload should look like this :

{
    aps =     {
        alert =         {
            "loc-args" = (
                "JOHN",
                "professional"
            );
            "loc-key" = "WINNER_ALERT";
        };
        badge = 1;
        sound = default;
    };
}

This will give the desired result :

Congratulations! JOHN won the match & became professional player


Here's why (according to Apple's Local and Remote Notification Programming Guide) :

  • loc-key : A key to an alert-message string in a Localizable.strings file for the current localization
  • loc-args : Variable string values to appear in place of the format specifiers in loc-key