Để làm đa ngôn ngữ cho APNs rất đơn giản, đầu tiên chúng ta cần những thứ sau đây:
1. File Localizable.strings define các localization
2. Đăng ký Push Notification cho ứng dụng
Ở đây mình mặc định hai công việc trên đã được hoàn thành, và tập trung vào việc xử lý đa ngôn ngữ cho APNs.
Thông thường, một Notification đơn giản sẽ có nội dung như sau:
// Notification payload { "aps":{ "alert":{ "title":"Đây là tiêu đề thông báo", "body":"Còn đây chắc là nội dung thông báo" } } }

Như ví dụ trên, giá trị tương ứng với key title và body sẽ được hiển thị trực tiếp vào tiêu đề và nội dung của notification như ảnh. Để áp dụng đa ngôn ngữ, ta sẽ thay thế title và body bằng hai key khác là title-loc-key và loc-key, tiếp đó ta truyền giá trị của hai trường trên bằng key của localization đã define trong file Localizable.strings:
// Notification payload { "aps":{ "alert":{ "title-loc-key":"notification_title", "loc-key":"notification_content" } } }
// Localizable.strings content "notification_title" = "Thông báo "; "notification_content" = "Nội dung thông báo";

Như vậy là ta xong với các Notification có nội dung cố định. Đối với các Notification có sử dụng thêm tham số ví dụ như “Bạn có 10 thông báo mới” hay “NhatHM đã ném tiền vào mặt bạn”, chúng ta sử dụng thêm hai key title-loc-args và loc-args, và setting như sau:
// Notification payload { "aps":{ "alert":{ "title-loc-key":"notification_title_args", "title-loc-args":["10"], "loc-key":"notification_content_agrs", "loc-args":["tinh thần"] } } }
// Localizable.strings content "notification_title_args" = "Bạn có thêm %@ thông báo mới"; "notification_content_agrs" = "Nội dung thông báo với giá trị %@";

Để đề phòng trường hợp ứng dụng chưa định nghĩa các key trong file Localizable.strings, ta chỉ cần cung cấp thêm hai key title và body và truyền vào giá trị mặc định cho Notification. Hai giá trị này sẽ được hiển thị khi ứng dụng client không tìm thấy strings được trả về trong Notification payload. Nên để đẹp trai thì Notification sẽ như thế này:
// Notification payload { "aps":{ "alert":{ "title":"Đây là tiêu đề thông báo", "body":"Còn đây chắc là nội dung thông báo", "title-loc-key":"notification_title_args", "title-loc-args":["10"], "loc-key":"notification_content_agrs", "loc-args":["tinh thần"] } } }
Như vậy là đủ để quẩy đa ngôn ngữ cho Notification rồi đấy 😀
Leave a Reply