使用NSLocalizedString实现通知服务扩展

5

我正在使用通知服务扩展(Notification Serivce Extension)根据我的需要更改来自服务器的文本。

然而,当我在其中使用了 NSLocalizedString 时,它对普通字符串的处理效果很好,但它不会显示本地化字符串,而是显示字符串的字段名。

例如:在 UNNotificationServiceExtension 内部:

let CompanyViewLM = NSLocalizedString("Notifications.View", comment: "No Comment")

在Localizable.strings中,我添加了以下行:

Notifications.View = "I Viewed your profile";

请注意,我将相同的代码放在普通视图控制器中,它可以正常工作。


1
我有相反的问题。基础开发语言(英文)在 NSLocalizedString 中没有正确显示,但是我的本地化语言(法语、西班牙语)却能正确显示。有什么想法吗? - ChrisJF
1个回答

11

我自己找到了问题所在。 通知服务目标在项目中工作时没有认识到项目中的其他文件。

为了让它认识到其他文件,你需要前往目标 -> NotificationService -> 复制捆绑资源 -> 添加你想要通知服务一起使用的文件。

在我的情况下,我添加了Localizable.strings文件,它工作得非常好。


2
它是否适用于多种语言。假设我的应用程序语言是阿拉伯语,但手机语言是英语。我们能否以阿拉伯语显示警报? - Jaydeep Vyas
1
可以使用通知服务,我们可以将文本更改为想要的内容。 - FamousMaxy
当我的应用程序接收到推送时终止,如何获取应用程序语言? - Jaydeep Vyas
您的应用程序在接收到推送通知时不得终止,而是应该接收并有一个函数来修改它,然后再呈现出来。 - FamousMaxy
是的,这是我的应用程序所面临的问题。如果用户选择了阿拉伯语并终止了应用程序(设备语言为英语),则它只会以英语显示推送通知,而应该显示为阿拉伯语。有没有什么办法? - Jaydeep Vyas
有许多方法,在终止应用程序之前,您必须先设置应用程序语言,然后如果您例如使用 Firebase 通知,可以在通知中发送附加数据,并不仅限于 aps 参数(请参阅 iOS 通知结构),在其中传递英语和阿拉伯文字,根据应用程序语言呈现适当的文本。如果您正在使用 Azure 进行通知,则有更简单的方法可以做到这一点,您可以使用所需语言进行新的通知注册,然后完成。 - FamousMaxy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接