2013-06-19 52 views
2

是否有人使[FBDialogs canPresentShareDialogWithParams:nil]正常工作? 它總是讓我回來沒有。我應該加什麼參數? (!和我自己的經驗)[FBDialogs canPresentShareDialogWithParams:nil]是如何工作的?

if ([FBDialogs canPresentShareDialogWithParams:nil]) { 
    NSURL* url = [NSURL URLWithString:@"http://www.google.fr"]; 
    [FBDialogs presentShareDialogWithLink:url 
            handler:^(FBAppCall *call, NSDictionary *results, NSError *error) { 
             if(error) { 
              NSLog(@"Error: %@", error.description); 
             } else { 
              NSLog(@"Success!"); 
             } 
            }]; 
} else { 
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
     SLComposeViewController *fbComposer = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
     [fbComposer setInitialText:@"Google rocks !"]; 
     [self presentViewController:fbComposer animated:YES completion:nil]; 
    } else { 
     [[[UIAlertView alloc] initWithTitle:@"Informations" message:@"You have to be registered into the settings of your phone in order to share" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil] show]; 
    } 
} 

回答

3

據SDK中的HelloFacebookSample:

FBShareDialogParams *p = [[FBShareDialogParams alloc] init]; 
p.link = [NSURL URLWithString:@"http://developers.facebook.com/ios"]; 
BOOL canShareFB = [FBDialogs canPresentShareDialogWithParams:p]; 

canShareFB將返回YES如果Facebook的應用程序安裝在系統;返回 if 否Facebook找到的應用程序。

+0

謝謝。爲我工作:) –

0

事實上它總是返回。 我覺得這個問題。

+0

在我的情況下,它總是返回**沒有**。 – Daida

0

確保將非零實例的FBShareDialogParams傳遞給canPresentShareDialogWithParams方法。 SDK期望接收FBShareDialogParmas的有效實例,以便SDK可以確保設備上Facebook應用的版本實際上可以打開將要共享的內容。例如,如果FB在iOS的Facebook應用程序的未來版本中添加了通過「共享對話框」共享視頻的支持,則在設備上存在較舊版本的Facebook應用程序時,canPresentShareDialogWithParams將返回「否」。

我可以理解docs:https://developers.facebook.com/ios/share-dialog/在這裏可能會如何混淆(道歉!)。我們會更新它們以反映這一點。

感謝您的反饋;希望有所幫助!