? ? iOS推送國際化的方式有幾種凄贩,根據(jù)可控度劃分如下:
? ? 1、從源頭上解決問題苟鸯,讓服務(wù)端的同事根據(jù)語言下發(fā)推送同蜻,這個看個人實力了。
? ? 2早处、通過Notification Content Extension 在通知顯示前完成翻譯湾蔓。這個需要iOS10+版本開始支持,而且在推送頻繁時可能會跳過系統(tǒng)回調(diào)砌梆,漏掉幾條沒有翻譯到默责。
????主要是通過在Notification Content Extension的didReceiveNotificationRequest:withContentHandler:方法中實現(xiàn)國際化操作贬循。當(dāng)然也可以隨便干點啥,不過不能做耗時操作桃序,耗時太久系統(tǒng)會跳過回調(diào)直接顯示通知杖虾。而且該方法只能修改推送內(nèi)容,不能取消推送媒熊。
? ? 3奇适、通過推送內(nèi)容Alert Keys 實現(xiàn)國際化。從iOS8.2開始支持芦鳍,具體參數(shù)和示例可以參照?蘋果官方說明嚷往。
? ? 主要是loc-key和loc-args的用法,系統(tǒng)收到推送消息時會通過loc-key的值在Localizable.strings中查找對應(yīng)的國際化字符串柠衅,字符串中的%@會用loc-args中的參數(shù)替換间影,第一個%@使用第一個參數(shù),按照順序替換茄茁,loc-args中多的參數(shù)不顯示,少的會用<null>補位巩割。