Я думаю, что мою проблему не так сложно решить.Я должен что-то упустить.Я позволил своим пользователям войти в систему через Facebook, поэтому в настройках приложения у меня есть возможность выйти из Facebook с помощью переключателя вкл / выкл.Мой Root.plist
в Settings.bundle
выглядит следующим образом:
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Title</key>
<string></string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<false/>
<key>Key</key>
<string>facebookLogoutTriggered</string>
<key>Title</key>
<string>Logout Facebook</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
Итак, в основном, функциональность, которая мне нужна, заключается в том, что если пользователь переключает переключатель в положение ON, он должен выйти из Facebook.После того, как он вышел из системы, переключатель должен снова переключиться в положение ВЫКЛ.Поэтому я хочу, чтобы OFF было значением по умолчанию для переключателя.
Поскольку логическое значение по умолчанию равно NO (OFF), я думаю, мне не нужно использовать NSUserDefault
´s registerDefaults:
Поэтому я проверяю applicationWillEnterForeground:
, включил ли пользователь переключатель в настройках приложения, установив следующее:
// Check if the user wants to logout from Facebook
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL facebookLogoutTriggered = [defaults boolForKey:@"facebookLogoutTriggered"];
// Set "Logout Facebook" setting to OFF (NO)
[defaults setBool:NO forKey:@"facebookLogoutTriggered"];
[defaults synchronize];
Но по какой-то причине этот код, похоже, не работает.Большую часть времени это работает (swith выключается после проверки).Но иногда, т. Е. После входа в Facebook он по какой-то причине переключается на включение.Код, который я запускаю после входа в Facebook, выглядит следующим образом:
#pragma mark - FBSessionDelegate Methods
- (void)fbDidLogin {
DLog(@"User logged in to Facebook.");
AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
// Save accesstoken and expirationdate
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[appDelegate.facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[appDelegate.facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
DLog(@"defaults %@", [defaults objectForKey:@"facebookLogoutTriggered"]);
}
Я пытался исправить это в течение 6 часов, но сейчас не могу продолжить.