0

在显示对话框本身以邀请用户加入我的应用程序(apprequests)时,我遇到了 FBWebDialog 的尴尬行为。

当对话框出现时,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];

谢谢。

4

1 回答 1

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"])

它奏效了:)

于 2013-11-20T18:54:03.467 回答