首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android GCM推送本地化应用程序通知

Android GCM推送本地化应用程序通知
EN

Stack Overflow用户
提问于 2013-02-19 13:13:14
回答 5查看 9.7K关注 0票数 12

我有一个android应用程序,它支持7个国家(本地化和国际化)。根据设备区域设置更改应用程序功能和语言。我需要为这个应用程序实现GCM推送通知。要求:

  • 是否可以用7种不同的语言发送推送通知单GCM帐户。
  • 是否有任何方法以其设备本地语言显示推送通知。
EN

回答 5

Stack Overflow用户

发布于 2013-02-19 13:29:43

您可以采用Ascorbin建议的方法,也可以实现类似于Apple在推送通知中的内容:

您的服务器可以发送带有消息密钥的参数的GCM消息。Yout必须为每个可能的键包含以7种语言显示的字符串(使用多个strings.xml副本)。然后,应用程序中的GCM接收者将从服务器获取密钥,并获得与其匹配的资源字符串(它将自动获得与设备区域设置相匹配的字符串)。这样,您就不必担心服务器上的本地化。这种方法的缺点是,您的所有消息都必须在应用程序.中预定义。

您也可以像Apple一样向消息键添加参数。例如,服务器发送一个key = "NEW_MAIL_FROM“和param1 = "John”。该应用程序为该键找到一个字符串资源(假设设备使用英语区域设置)--“您有来自{0}的消息”--并将param替换为John,显示消息“您有来自John的消息”。具有不同区域设置的设备将以不同的语言显示消息。

票数 12
EN

Stack Overflow用户

发布于 2013-02-19 13:29:23

您可以实现服务器端,在GCM注册后发送令牌,还可以发送设备区域设置。然后使用本地化消息立即通知用户。

有效载荷是一种“排序”的东西,它不是一个好主意,通过它这么多的信息。

另一方面,如果您有固定的消息,则可以使用:

代码语言:javascript
复制
private void handleMessage(Intent intent) {
    // server sent key-value pairs
    String name_of_resource = intent.getExtra("message_id");

    int id = getResources().getIdentifier(name_of_resource, "string", getPackageName());
    if (id != 0) {
         String text = getString(id); // the text to display
         // generates a system notification to display here
    }
}

有关处理接收到的数据,请参见数据

票数 2
EN

Stack Overflow用户

发布于 2013-02-19 13:15:42

当设备在您的服务器注册时,让它们发送区域设置。这样您就可以拥有设备的区域设置组,并以相应的语言发送消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14958412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档