2013-09-02 2 views
1

Я использую UIActivityViewController для обмена изображениями и текстом в Facebook и Twitter. Если я войду в систему с Facebook на странице настроек, значок facebook отобразит UIActivityViewController. Однако, если я еще не входил в систему, значок facebook не отображается в UIActivityViewcontroller. Как включить значок facebook без входа в системуВключить логин facebook в iOS

Как я могу пригласить пользователя войти в систему, когда попытаются поделиться, вместо того, чтобы не поделиться ими?

enter image description here

Вот мой код:

NSArray *activityItems = @[viewImage]; 

    UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    avc.excludedActivityTypes = [NSArray arrayWithObjects:UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, nil]; 
    [self presentViewController:avc animated:YES completion:nil]; 

ответ

1

(IOS 6,0 и выше)

Я называю эту функцию:

- (void)askUserToLoginToFacebookInSettings 
{ 
    if(![SLComposeViewController isAvailableForServiceType: SLServiceTypeFacebook]) 
    { 
     // Facebook Service Type is Available 

     SLComposeViewController *slVC = [SLComposeViewController composeViewControllerForServiceType: SLServiceTypeFacebook]; 
     SLComposeViewControllerCompletionHandler handler = ^(SLComposeViewControllerResult result) 
     { 
      [slVC dismissViewControllerAnimated:YES completion:Nil]; 
     }; 

     slVC.completionHandler = handler; 

     [slVC.view setHidden:YES]; 

     [(MainViewController *)[(SettingsLayoutView *)delegate delegate] presentModalViewController:slVC animated:NO]; 

     [slVC.view endEditing:YES]; 
    } 
    else 
    { 
     NSLog(@"Service Unavailable!!!"); 
    } 
} 

Затем пользователю предоставляется предупреждение, что отображается на вашем скриншоте. Форма сообщения не будет видна.

, но перед этим - я прошу разрешения сделать это:

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) 
{ 
    ACAccountStore *accountStore = [[ACAccountStore alloc]init]; 
    ACAccountType *FBaccountType= [accountStore accountTypeWithAccountTypeIdentifier: 
     ACAccountTypeIdentifierFacebook]; 

    NSDictionary *options = @{ 
      ACFacebookAppIdKey: @"xxxxxxxxxxx", 
      ACFacebookPermissionsKey: @[@"user_birthday"], 
      ACFacebookAudienceKey: ACFacebookAudienceFriends 
    }; 

    [accountStore requestAccessToAccountsWithType:FBaccountType options:options 
     completion: ^(BOOL granted, NSError *e) 
    { 
     if (granted) 
     { 
      NSLog(@"access granted"); 
     } 
     else 
     { 
      NSLog(@"error getting permission %@",e); 
     } 
     }]; 
} 
+0

Это правильно. Но я использую UIActivityViewController для всех сервисов, таких как твиттер, почта, facebook. При нажатии кнопки отображается вся услуга. Я не использовал только facebook. Если я использую только facebook, ваш ответ правильный. – user2674668

+0

Вы можете запросить разрешение (см. Мое редактирование) - возможно, тогда он начнет работать. –

+0

Я не хочу использовать SLComposeViewController. Есть ли способ использовать UIActivityViewController. Я думаю, вы не поняли мой вопрос – user2674668

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