Firebase推送通知不使用body_loc_key中的Android字符串资源

Rob*_*bin 2 android firebase firebase-cloud-messaging

我有一个后端服务器,将云消息推送到iOS和Android设备.在消息中,body_loc_key属性设置为someone_commented_moment,并body_loc_args包含三个字符串参数.Firebase文档说明body_loc_key:

在Android上,填充此值时,请在应用程序的字符串资源中使用该键.

所以在Android上,我有一个包含这个条目的strings.xml:

<resources>
    [...]
    <string name="someone_commented_moment">
        \@%1$s also commented on \@%2$s\'s moment: %3$s
    </string>
    [...]
</resources>
Run Code Online (Sandbox Code Playgroud)

无论如何,此字符串资源永远不会加载到设备上显示的通知中.

在iOS上,这可以完美地运行,并且我确实从通知中获取启动我的Activity的Intent中的通知有效负载,所以我认为这不是服务器端的错误.我在这里错过了什么吗?我是否必须手动执行某些操作才能使其工作,以使Firebase查找并使用该字符串资源进行通知正文的本地化?

编辑:触发通知的python代码如下所示:

self.fcm.notify_multiple_devices(registration_ids=push_tokens,
                                 body_loc_args=notification.body_loc_args,
                                 message_body=notification.type,
                                 data_message=notification.data,
                                 body_loc_key=notification.type,
                                 sound="default")
Run Code Online (Sandbox Code Playgroud)

self.fcm类型对象在哪里pyfcm.FCMNotification,notification.type设置为"someone_commented_moment",由print语句以及发送到设备的内容确认.

Rob*_*bin 7

好吧,通过手动尝试针对FCM服务器的不同请求,我发现了什么问题.body_loc_key如果"普通"消息体也被设置,Android似乎不会使用字符串资源- 我们必须让服务器在推送到Android设备时省略消息体.