0

我想本地化服务器发送的 firebase 通知。通过 php 我向 Android 设备发送远程通知。我在 php 中使用的以下 postdata:

$postData = array(
    			'to' => ''.$fcmtoken,
				  'priority' => 'high',
    			'notification'=> array("body"=> "message body",  "loc_key" => "body_key" "title"=> "message title",                  "icon" => "ic_stat_gdr_notification_icon", 
           "sound" => "default" ),
		);

通知正在设备上正确发送,正文为“消息正文”。但我希望显示键“body_key”的本地化文本(“Cuerpo del menage”)。

另外请检查我用来接收消息的android代码:

notificationBuilder = new NotificationCompat.Builder(this)
                            .setSmallIcon(R.drawable.ic_stat_gdr_notification_icon)
                            .setContentTitle(from)
                            .setContentText(message)
                            .setSound(defaultSoundUri)
                            .setContentIntent(contentIntent)
                            .setStyle(new NotificationCompat.BigTextStyle().bigText(message));

                }

                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                manager.notify(1, notificationBuilder.build());

在这里我不知道如何使用从通知消息中获得的密钥对其进行本地化?loc_key 是一个字符串。但在 android 中,它期望在此方法中传递 'integer':getResources().getString(R.string.body_key) 其中 'R.string.body_key' 是一个整数。

那么如何在 getString() 方法中传递 loc_key 并获取本地化文本?请帮我。

4

1 回答 1

0

您可以像这样获取与您的 body_key 对应的整数 id

public static int getStringIdentifier(Context context, String name) {
    return getResources().getIdentifier(name, "string", 
        getPackageName());
}


getResources()
 .getString(getStringIdentifier(getApplicationContext(),loc_key)); 
于 2017-09-11T13:30:51.577 回答