iOS:如何知道设备语言何时更改?

iOS:如何知道设备语言何时更改?,ios,Ios,我想知道当设备语言发生变化时,是否有任何回调或其他方法可以知道这一点。我需要通知远程服务器,用户已更改其设备语言。 在再次启动应用程序之前,我无法注意到更改。我需要尽快了解设备语言的变化。这背后的原因是,在我将语言更改通知远程服务器之前,我可能会收到任何错误语言的推送通知。当设备语言更改时,所有应用都会被终止。因此,检查语言更改的一种简单方法是将当前语言代码存储在ApplicationIdentinterBackground(:)中的UserDefaults中,然后在设备语言更改时对照应用程序中

我想知道当设备语言发生变化时,是否有任何回调或其他方法可以知道这一点。我需要通知远程服务器,用户已更改其设备语言。
在再次启动应用程序之前,我无法注意到更改。我需要尽快了解设备语言的变化。这背后的原因是,在我将语言更改通知远程服务器之前,我可能会收到任何错误语言的推送通知。

当设备语言更改时,所有应用都会被终止。因此,检查语言更改的一种简单方法是将当前语言代码存储在
ApplicationIdentinterBackground(:)
中的
UserDefaults
中,然后在设备语言更改时对照
应用程序中的当前语言代码(:didFinishLaunchingWithOptions:)
检查该值,所有应用程序都被删除。因此,检查语言更改的一种简单方法是将当前语言代码存储在
ApplicationIdentinterBackground(:)
中的
UserDefaults
中,然后对照
应用程序中的当前语言代码检查该值(:didFinishLaunchingWithOptions:)

不完全重复的可能重复项,但您要查找的是
NSCurrentLocaleDidChangeNotification
。在应用程序启动时注册此应用程序。另外,检查
didBecomeActive
didEnterForeground
中的
locale
更改。当我们更改设备语言时,请在
NSCurrentLocaleDidChangeNotification
的帮助下使用iOS将从内存中删除所有应用程序并重新启动。那么重启后我会得到通知吗?可能的副本不是完全的副本,但您要查找的是
NSCurrentLocaleDidChangeNotification
。在应用程序启动时注册此应用程序。另外,检查
didBecomeActive
didEnterForeground
中的
locale
更改。当我们更改设备语言时,请在
NSCurrentLocaleDidChangeNotification
的帮助下使用iOS将从内存中删除所有应用程序并重新启动。那么重启后我会得到通知吗?@Shubham在你的应用重启之前,你无法知道语言的变化。你对此无能为力。不过我得说这是一个真正的边缘案例——有多少人在测试时改变了他们的设备语言(除了开发人员之外)?谢谢你提供的信息。在这种情况下,您是对的,一般来说,我们很少更改设备语言。@Shubham在重新启动应用程序之前,您将无法了解语言更改。你对此无能为力。不过我得说这是一个真正的边缘案例——有多少人在测试时改变了他们的设备语言(除了开发人员之外)?谢谢你提供的信息。在这种情况下你是对的,一般来说,我们很少改变设备语言。