0

ユーザーをアプリケーションに招待するためのダイアログ自体を表示しているときに、FBWebDialog で厄介な動作が発生しています (apprequest)。

ダイアログが表示されると、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 に答える