最近,我遇到了NSUserDefaults和App扩展的一个非常奇怪的问题。 我正在使用NSUserDefaults存储一些值(例如:valueA)。通过野生动物园打开我的应用程序时,我需要获得valueA。 当我直接将我的应用程序部署到设备上时,它可以很好地工作。 但是,当我存档我的应用程序并导出到基于它的iPA文件或将我的应用程序推送到TestFlight时,通过野生动物园打开我的应用程序时,我再也无法获得valueA。
我想发布时扩展了App extension的App组,但是我不知道发布时的App组是什么?所以我不确定。
更新我的应用程序配置后,我最近刚遇到这个问题。 有人遇到过这个问题吗?任何想法都能赢得我的尊重。
下面是我用来通过NSUserDefaults获取和设置值的代码
#define GROUPID @"group.****"
...
bool NVDataManagerNative::putString(const std::string& key, const std::string& value)
{
NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:GROUPID];
if(ud == nil){
ud = [NSUserDefaults standardUserDefaults];
}
[ud setObject:convertNSString(value) forKey:convertNSString(key)];
[ud synchronize];
return true;
}
...
std::string NVDataManagerNative::getString(const std::string& key, const std::string& def)
{
NSUserDefaults *ud = [[NSUserDefaults alloc] initWithSuiteName:GROUPID];
if(ud == nil){
ud = [NSUserDefaults standardUserDefaults];
}
NSString *ret = [ud stringForKey:convertNSString(key)];
if (nil == ret) {
return def;
}
return [ret UTF8String];
}