2016-02-05 5 views
0

Может быть, кто-то может мне помочь.- (void) applicationWillEnterForeground:

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

dispatch_async(dispatch_get_main_queue(), ^{ 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Wi-Fi"]]; 
     }); 

После возвращения в App появляется то же UIAlertController сообщения, используя этот код в ViewDidLoad:

-(void)viewDidLoad { 
    if (launched == NO) { 
    launched = YES; 
    defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setBool:launched forKey:@"boolKey"]; 
    [defaults synchronize]; 

    My code for the UIAlertController. 

    } else if (launched == YES) { 

    [self doSomeThing]; 
    } 

} 

Он появляется мое Bool значения не сохраняется, когда параметры в info.plist Application не работает в фоновом режиме: установлено значение YES, но если приложение не работает в фоновом режиме: установлено значение NO, оператор else выполняется. Однако это не очень хорошо, потому что мое приложение приостановлено, и при запуске снова мне нужно, чтобы исходное сообщение появилось, а оно нет, приложение восстановлено до последнего состояния.

Любые предложения приветствуются.

JZ

ответ

1

1.- Сохранение в NSUserDefaults не спасает ничего до info.plist. NSUserDefaults имеет свой собственный plist, который уничтожается, если вы удалите приложение.

Если вы хотите, чтобы запустить то же alertview:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if([defaults boolForKey:@"boolKey"]) { 
    defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setBool:YES forKey:@"boolKey"]; 
    My code for the UIAlertController. 
} 
else { 
    //Whatever you need to do if its not first launch 
} 

Теперь в следующий раз, когда вы нажмете ваш viewDidLoad, так как boolForKey: @ «boolKey» имеет ДА, вы не ударите этот код и alertView не будет представлен.

+0

вам также нужно добавить '[defaults synchronize]' после того, как вы установили значение bool для его сохранения –

+0

Привет, спасибо за помощь !!! Он отлично работал. Я не понимал, что пропустил эту штуку. –

+0

Пожалуйста, @JohnZ проголосовать за мой ответ как правильный, чтобы он помог другим – iOSAddicted