Я думаю, что моя проблема не так уж трудно решить. Я должен упустить что-то. Я разрешаю своим пользователям входить в систему с Facebook, поэтому в настройках приложения у меня есть возможность выйти из Facebook с помощью переключателя вкл./Выкл. в Settings.bundle
Мой Root.plist
выглядит следующим образом:iOS - Настройки приложения, попытка сброса коммутатора
<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. После выхода из системы коммутатор должен переключиться на ВЫКЛ. Поэтому я хочу, чтобы ВЫКЛ был значением по умолчанию для коммутатора.
Поскольку булевы по умолчанию NO (OFF) Я думаю, мне не нужно использовать NSUserDefault
-х registerDefaults:
Так я проверяю в applicationWillEnterForeground:
если пользователь включил переключатель в настройках App, проверяя это:
// 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 часов в настоящее время, но не может продолжить дальше.