В последнее время я столкнулся с очень странной проблемой с NSUserDefaults и расширением приложения.Я использую NSUserDefaults для хранения некоторого значения (например: valueA).И мне нужно получить значение A при открытии моего приложения через Safari.Это работает хорошо, когда я развертываю свое приложение непосредственно на устройстве, я могу получить значение A, когда открываю свое приложение через Safari.Но когда я архивирую свое приложение и экспортирую в него базу данных iPA или отправляю свое приложение в TestFlight, когда я открываю свое приложение через safari, я больше не могу получить значение A.
Я полагаю, что группа приложенийрасширение приложения изменяется при распространении, но я не могу знать, что такое группа приложений при распространении?Так что я не уверен в этом.
Я только что столкнулся с этой проблемой недавно после того, как обновил инициализацию своего приложения.Кто-нибудь сталкивался с этой проблемой раньше?Любые идеи заслуживают моего уважения.
Ниже приведен код, который я использую для получения и установки значения с помощью 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];
}