无论何时启动ios应用程序应用程序,我们都会读取从MDM推送的配置以使用它们。 如果用户更改配置,我们会将其保存到本地存储,因为MDM写入配置的“ UserDefaults”字典是只读的。现在,我们在“ UserDefaults”中具有来自MDM的配置,并且在本地存储中具有用户更新的配置。 因此,现在如果我们使用本地存储中的用户更新的配置,则即使再次从MDM推送了新配置,MDM配置也将被忽略。
因为我们没有获得有关MDM配置更改的任何信息或通知。因此,如果我们使用用户编辑的配置,则更新的配置将被忽略。
我尝试使用如下所示的键值观察器,
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:kConfigurationServerURLKey
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == [NSUserDefaults standardUserDefaults]) {
NSLog(@"%s %@ %@", __func__, keyPath, change);
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
当再次从MDM推送应用程序时,永远不会调用observeValueForKeyPath函数。如果应用使用计时器对用户默认键中的键进行了更改,则将调用观察者方法,但使用新配置从MDM推送应用时,不会调用观察器方法。
有没有办法做到这一点。因为根据用例,我希望允许用户编辑配置,并且如果再次从MDM推送配置,也要更新配置