Używam następujący kod do wyświetlania toast po Facebooku uwierzytelnianiaZobacz pojawiać się z opóźnieniem po uwierzytelnieniu Facebooku
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) // check Fb is configured in Settings or not
{
accountStore = [[ACAccountStore alloc] init]; // you have to retain ACAccountStore
ACAccountType *fbAcc = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSString *key = @"xxxxx";
NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];
[accountStore requestAccessToAccountsWithType:fbAcc options:dictFB completion:^(BOOL granted, NSError *error) {
if (granted) {
NSLog(@"Perform fb registration");
} else {
NSLog(@"Facebook 1”);
[[Toast shared] showToast:self.view withText:@"You disabled your app from settings."];
NSLog(@"Facebook 2”);
}
}];
}
NSLog(@"Facebook 1”);
i NSLog(@"Facebook 2”);
są wykonującego i dzienników drukowania odpowiednio. Jednak oświadczenie toast pomiędzy tymi dwoma dziennikami opóźnia się i wyświetla po 15-20 sekundach.
Jeśli mogę umieścić oświadczenie tosty [[Toast shared] showToast:self.view withText:@"You disabled your app from settings."];
z następującym obsługi realizacji:
[accountStore requestAccessToAccountsWithType:fbAcc options:dictFB completion:^(BOOL granted, NSError *error) {
}];
Działa prawidłowo i wyświetla tosty terminowe nigdy opóźnień. Jakieś rozwiązanie, aby usunąć opóźnienie?
Jestem zakładając, że requestAccess ... jest asynchronicznie pracy i showToast: jest praca UI, więc może trzeba jawnie wywołać showToast: w głównym wątku -jeżeli nie already-. – EDUsta
@EDUsta Tak, nazwałem to w głównym wątku i działało dobrze. Dzięki –