Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios &引用;SharerDicCancel:“;未安装Facebook应用程序时,在首次成功共享后调用_Ios_Facebook_Facebook Share_Facebook Sdk 4.x - Fatal编程技术网

Ios &引用;SharerDicCancel:“;未安装Facebook应用程序时,在首次成功共享后调用

Ios &引用;SharerDicCancel:“;未安装Facebook应用程序时,在首次成功共享后调用,ios,facebook,facebook-share,facebook-sdk-4.x,Ios,Facebook,Facebook Share,Facebook Sdk 4.x,我使用一个UIButton来分享Facebook的SDK 4.31.1。点击后,将显示一个共享对话框 - (IBAction)btnSharePressed:(id)sender { [self displayShareDialog]; } - (void)displayShareDialog { FBSDKShareLinkContent *content = [self getShareContent]; if ([FacebookHandler isFacebo

我使用一个UIButton来分享Facebook的SDK 4.31.1。点击后,将显示一个共享对话框

- (IBAction)btnSharePressed:(id)sender
{
    [self displayShareDialog];
}

- (void)displayShareDialog {
    FBSDKShareLinkContent *content = [self getShareContent];

    if ([FacebookHandler isFacebookAppInstalled]) {
        [FBSDKShareDialog showFromViewController:self
                                     withContent:content
                                        delegate:self];
    } else {
        FBSDKShareDialog * shareDialog = [[FBSDKShareDialog alloc] init];
        [shareDialog setMode:FBSDKShareDialogModeBrowser];
        [shareDialog setDelegate:self];
        [shareDialog setFromViewController:self];
        [shareDialog setShareContent:content];
        [shareDialog show];
    }
}

// Expects the URL of the scheme e.g. "fb://"
+ (BOOL)isFacebookAppInstalled {
    NSArray* fbSchemes = @[@"fbapi://",
                           @"fb-messenger-api://",
                           @"fbauth2://",
                           @"fbshareextension://"];
    BOOL isInstalled = false;

    for (NSString* fbScheme in fbSchemes) {
        isInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:fbScheme]];
        if(isInstalled) {
            break;
        }
    }
    return isInstalled;
}
但是,如果没有安装Facebook应用程序,在每次启动时,在第一次成功共享时,会调用委托方法
SharerDiCancel:
,在任何进一步成功共享时,会调用正确的委托方法
sharer:didCompleteWithResults:
。 我已经在
plist
文件中正确设置了
facebook显示名称
facebook id
,因此这与此无关。 我还尝试了用
FBSDKShareDialogModeFeedBrowser
切换
FBSDKShareDialogModeBrowser
,但没有成功

有人能解释一下为什么在共享成功完成的情况下首先调用
cancel
方法,以及为什么只有在第一次共享之后才会这样吗