Загрузка пользовательских настроек по умолчанию, которые изменились, когда приложение в фоновом режиме на iPhone OS 4.0 - PullRequest
1 голос
/ 23 июня 2010

У меня в приложении установлено несколько пользовательских настроек по умолчанию:

Снимки вкл. / Выкл. Советы по запуску ВКЛ. / ВЫКЛ. Игровая музыка ВКЛ. / ВЫКЛ. Музыка iPod ВКЛ. / ВЫКЛ. Звуковые эффекты ВКЛ. / ВЫКЛ.

Когда мое приложение входит в фоновый режим (в OS 4.0), мой метод saveDefaults: вызывается из метода applicationWillResignActive: (UIApplication *).

Затем в методе applicationWillEnterForeground: я загружаю свой методПользователь по умолчанию снова.Затем я вызываю метод, который запускает menuMusic, если он включен.

Используя довольно простой метод сохранения по умолчанию, который должен работать:

- (void)saveGameDefaults {

 [[NSUserDefaults standardUserDefaults] setObject:(NSString *)myDoll.currentDoll forKey:@"DollName"];
 [[NSUserDefaults standardUserDefaults] setInteger:[gameState intValue] forKey:@"GameState"];
 [[NSUserDefaults standardUserDefaults] setInteger:[startScreen intValue] forKey:@"StartScreen"];
 [[NSUserDefaults standardUserDefaults] setBool:snapShots forKey:@"SnapShots"];
 [[NSUserDefaults standardUserDefaults] setBool:resetDolls forKey:@"Reset"];
 [[NSUserDefaults standardUserDefaults] synchronize];


}

Вот небольшая часть моего метода загрузки по умолчанию:

{
    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"GameState"] == nil) gameState = [NSNumber numberWithInt:MENU_VIEW];
 else gameState = [[NSUserDefaults standardUserDefaults] objectForKey:@"GameState"];


 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"StartScreen"] == nil) startScreen = [NSNumber numberWithInt:SHOW_START_SCREEN];
 else startScreen = [[NSUserDefaults standardUserDefaults] objectForKey:@"StartScreen"];



 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"GameSound"] == nil) gameSound = [NSNumber numberWithInt:SOUNDS_ON];
 else gameSound = [[NSUserDefaults standardUserDefaults] objectForKey:@"GameSound"];
}

Кажется, настройки по умолчанию еще не обновлены и не доступны для приложения, когда оно возвращается из фона.Я отправляю его в фоновый режим, переключаясь прямо в настройки iPhone, меняя настройки, а затем переключаясь обратно, дважды нажав кнопку «Домой» и выбрав мое приложение.Но если я снова вернусь и вернусь, он прочитает новые установленные параметры.

Например: 1. У меня включена музыка, и я запускаю приложение.Музыка играет в меню.2. Дважды нажмите кнопку «Домой», выберите приложение «Настройки» и измените настройку «Музыка меню» на «НЕТ».3. Дважды нажмите кнопку «Домой» и вернитесь в игру.Музыка все еще играет.4. Дважды нажмите на дом снова и вернитесь в настройки приложения.Музыка меню по-прежнему установлена ​​на NO.5. Вернитесь к моему приложению во второй раз, и теперь музыка больше не воспроизводится.

У кого-то еще есть проблемы с обновлением пользовательских настроек, когда приложение находится в фоновом режиме?

Спасибозаранее - марка

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Обнаружил, что после возвращения из фона мне нужно было выполнить синхронизацию standardUserDefaults перед получением объекта для ключа.

1 голос
/ 23 мая 2011

спасибо за совет. Для тех, кто ищет код:

- (void)applicationDidBecomeActive:(UIApplication *)application {
[[NSUserDefaults standardUserDefaults] synchronize];
}
...