Facebook IOS SDK FBWebDialog

时间:2013-11-08 18:02:17

标签: ios facebook

我在使用FBWebDialog时遇到了一个尴尬的行为,同时显示了邀请用户访问我的应用程序(apprequests)的对话框本身。

当对话框出现时,Facebook应用程序打开并停留在那里,如果我回到我的应用程序,对话框仍然应该是打开的。

FBFrictionlessRecipientCache *friendCache = [[FBFrictionlessRecipientCache alloc] init];
[friendCache prefetchAndCacheForSession:nil];

NSMutableDictionary* params =   [NSMutableDictionary dictionaryWithObjectsAndKeys: userid, @"to", nil];
[FBWebDialogs
 presentRequestsDialogModallyWithSession: nil
 message:@"my message"
 title:nil
 parameters:params
 handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
     if (error) {
         NSLog(@"Error sending request.");
     } else {
         if (result == FBWebDialogResultDialogNotCompleted) {
             NSLog(@"User canceled request.");
         } else {
             NSLog(@"Request Sent.");
         }
     }
 } friendCache:friendCache];

感谢。

1 个答案:

答案 0 :(得分:0)

我能够找出问题所在。

情况是我的应用是混合的,因此我通过file://制作HTML架构。 我正在使用这种方法“桥接”原生功能:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    AppDelegate *appDelegate =
    (AppDelegate *) [[UIApplication sharedApplication] delegate];


    NSURL *url = [request URL];
    NSLog(@"URL:%@", url);
    if ([url.scheme  isEqualToString:@"fb"]) {
        NSArray *splitUrl = [url.absoluteString componentsSeparatedByString:@"/"];
        [self inviteWithUserid:[splitUrl objectAtIndex:3]];
    } else if ([url.absoluteString  isEqualToString:@"utils://showFriendDialog"]) {
        UIAlertView *alert = [[UIAlertView alloc]
                              initWithTitle:@""
                              message:@"Você já tem um jogo criado com essa pessoa."
                              delegate:self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
    return YES;
}

我设置字符串fb://来处理邀请功能。但我不知道fb://通过Webview委托假定facebook应该打开。

为了解决这个问题,我将shceme更改为fb以外的其他内容:

if ([url.scheme  isEqualToString:@"myinviteschema"])

它有效:)