обновление настроек из приложения в iphone 3.1 вступает в силу при перезапуске приложения - не работает в iOS4 - PullRequest
0 голосов
/ 31 июля 2010

Я работаю над приложением для iphone OS 3.1.В приложении у меня есть вкладка «Настройки», где пользователь может обновить некоторые значения, которые вступают в силу, когда приложение завершается и перезапускается.

Я сейчас создал это приложение с Base SDK, установленным на «Device 4.0», ицель развертывания на iOS 3.1, так как я не хочу терять пользовательскую базу iOS 3.1.

Запустив эту версию приложения на симуляторе iphone 3.2, у меня не возникло никаких проблем.

Чтобы проверить приложение на ситуацию, когда iPhone OS 3.1 была обновлена ​​до iOS4, я запускаюэта версия на устройстве «iPhone» и версия «4.0» в iphone Simulator.Из-за многозадачности приложений в iOS4 мое приложение не завершает работу, когда я нажимаю кнопку «Домой», вместо этого (как и ожидалось) оно уходит в фоновый режим, а при нажатии значка приложения оно возвращается на передний план.

Все это хорошо, проблема возникает, когда пользователь изменяет что-то в настройках приложения, нажатие клавиши «home» не завершает работу приложения .... и, следовательно, новые настройки не будут действовать какприложение не будет перезапущено, а будет возвращаться только на «переднем плане» .... фактически приложение может никогда не завершиться, если пользователь специально не завершит приложение.

Без использования API iOS4, как мне определить, когда приложение «перезапускается» и когда оно выходит на «передний план», чтобы я мог принудительно перечитать настройки при перемещении приложенияна переднем плане?

Заранее спасибо.

1 Ответ

2 голосов
/ 31 июля 2010

Чтобы обработать изменения настроек вашего приложения в фоновом режиме, вам нужно прослушать NSUserDefaultsDidChangeNotification и ответить на него, обновив части вашего приложения, затронутые измененными настройками. Когда ваше приложение возвращается на передний план, оно получит это уведомление, если какие-либо параметры приложения были изменены, пока оно было приостановлено.

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleChangeInUserSettings:) name:NSUserDefaultsDidChangeNotification object:nil];

, где -handleChangeInUserSettings: - метод, в котором вы выполняете обновления, необходимые для отражения измененных пользовательских настроек.

...