Ответ 1
Удаление проверки для [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]
исправило проблему для меня.
Я использую новую интеграцию Facebook в iOS6
следующим образом:
SLComposeViewController *fbController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){
[fbController dismissViewControllerAnimated:YES completion:nil];
switch(result){
case SLComposeViewControllerResultCancelled:
default:
{
NSLog(@"Cancelled.....");
}
break;
case SLComposeViewControllerResultDone:
{
NSLog(@"Posted....");
}
break;
}};
//[fbController addImage:[UIImage imageNamed:@"1.jpg"]];
[fbController setInitialText:@"Test message"];
[fbController addURL:[NSURL URLWithString:self.asset.url]];
[fbController setCompletionHandler:completionHandler];
[self presentViewController:fbController animated:YES completion:nil];
} else {
NSLog(@"no facebook setup");
}
Проблема здесь в том, что я тестирую ее, не войдя в Facebook
, и все, что я получаю, это сообщение журнала.
** Странно, я получаю диалог в симуляторе, но НЕ устройство! **
Как я могу показать пользователю предупреждение, которое сообщает им, что им нужно войти в Facebook? Я видел скриншоты системного оповещения, но по какой-то причине я этого не понимаю. Что я сделал неправильно?
Удаление проверки для [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]
исправило проблему для меня.
Кажется, что [SLComposeViewController isAvailableForServiceType:]
возвращает true в симуляторе, даже если вы не создали там свою учетную запись.
Я не думаю, что вы получите системное предупреждение (я не уверен, но на основе опыта Twitter). Хотя я видел это в некоторых последних блогах/веб-сообщениях, но он не работает и для меня. Я предлагаю в таком случае вам лучше спросить учетные данные пользователя FB (пользовательский диалог или FBDialog) и добавить учетную запись FB в iPad. Код ниже не проверен, но вы можете получить представление. Я делаю подобное для Twitter, и это отлично работает в моих приложениях.
ACAccountStore *store = [[ACAccountStore alloc] init] ;
ACAccountType *fbType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[store requestAccessToAccountsWithType:fbType options:[NSDictionary dictionaryWithObjectsAndKeys:kAppID,ACFacebookAppIdKey, nil] completion:^(BOOL granted, NSError *error) {
if(YES) {
ACAccount *fbAccount = [[ACAccount alloc] initWithAccountType:[store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]];
ACAccountCredential *outhCredential = [[ACAccountCredential alloc] initWithOAuth2Token:[appDelegate.facebook accessToken] refreshToken:refesrhToken expiryDate:[appDelegate.facebook expirationDate]];
fbAccount.credential = outhCredential;
[store saveAccount:fbAccount withCompletionHandler:^(BOOL success, NSError *error) {
if(success)
{
[self performSelectorOnMainThread:@selector(showFBPostSheet) withObject:nil waitUntilDone:NO];
}
}];
[outhCredential release];
[fbAccount release];
[store release];
}
// Handle any error state here as you wish
}];