2014-05-29 6 views
0

У меня есть приложение, которое необходимо проверить на счет Facebook и Twitter, сохраненный в настройках iOS. Я могу получить оба успешно. Мой вопрос: как я могу проверить, удалил ли пользователь учетную запись и вставил ли ее в настройки iOS. Если пользователь возвращается в приложение, ему необходимо проверить новую учетную запись, хранящуюся у пользователя.Проверьте, изменилась ли учетная запись Facebook/Twitter в настройках iOS.

Это приложение, которое я пытаюсь создать в моем приложении.

enter image description here

ответ

1

Часы для "ACAccountStoreDidChangeNotification". например.

- (void)viewDidLoad 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshAccounts:) name:ACAccountStoreDidChangeNotification object:nil]; 
} 

- (void)refreshAccounts:(NSNotification *)note 
{ 
    NSLog(@"Refreshing Accounts"); 
    //whatever code you want 
} 
+0

Это не работает для меня. Можете ли вы опубликовать весь код. Я попытался добавить NSNotification, но он не срабатывает, когда я удаляю учетные записи в настройках> FB/Twitter. –

+0

Обновлен код. Когда ваше приложение будет задумано, чтобы пользователь мог изменять настройки, изменение доступа к данной социальной учетной записи автоматически инициирует это событие и выполняет любой код до возобновления вашего приложения. – gro

+0

Я пробовал это, но не работал для меня. Просто установите NSLog внутри refreshAccounts, но не запускается. Могу ли я что-то упустить? –

0

Take щебет счет, например.

Как насчет добавления следующей функции, как показано ниже? Вы можете снова получить аккаунт после изменения информации об учетной записи.

- (void)checkTwitterAccountUpdate 
{ 
    ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 
    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; 
    NSArray *accounts = [accountStore accountsWithAccountType:accountType]; 
    ACAccount *twitterAccount = [accounts lastObject]; 
    NSString *localTwitterName = [[NSUserDefaults standardUserDefaults] objectForKey:@"kTwitterKey"]; 
    if([localTwitterName length] > 0) 
    { 
     if(![twitterAccount.username isEqualToString:localTwitterName]) 
     { 
      NSLog(@"Account did change"); 
     } 
    } 
    else 
    { 
     [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) { 
      if(granted) { 
       NSArray *accounts = [accountStore accountsWithAccountType:accountType]; 
       ACAccount *twitterAccount = [accounts lastObject]; 
       NSLog(@"%@", twitterAccount.username); 
       [[NSUserDefaults standardUserDefaults] setObject:twitterAccount.username forKey:@"kTwitterKey"]; 
       [[NSUserDefaults standardUserDefaults] synchronize]; 
      } 
     }]; 
    } 

} 

в

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [self checkTwitterAccountUpdate]; 
} 
+0

Я бы хотел только сделать запросAccessToAccountsWithType один раз ... Возможно, после этого сохраните ACAccount. Но я не могу хранить ACAccount на стандартномUserDefaults. –

+0

Как установить имя пользователя для nsuserdefault? Просто обновил код. –

Смежные вопросы