1

Parse SDKを使用してapprequests、アプリにFacebookダイアログを実装しています。すべての目的と目的で、Facebook SDKをラップし、Facebookメソッドの前に。を付けPF_ます。

このコードを使用して、ダイアログを準備して表示します。

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"I just challenged you to a game!"], @"message",
 [friendIds componentsJoinedByString:@"," ], @"to",
 nil];

PF_FBSession *session = [PFFacebookUtils session];
PF_Facebook *facebook = [[PF_Facebook alloc] initWithAppId:session.appID andDelegate:nil];

facebook.accessToken = session.accessToken;
facebook.expirationDate = session.expirationDate;

[facebook dialog:@"apprequests" andParams:params andDelegate:self];

これはうまく機能し、ダイアログが表示され、友達を招待してアプリで遊ぶことができます。

PF_FBDialogDelegate問題は、View Controllerを:として設定したにもかかわらず、デリゲートメソッドが呼び出されないことです。

@interface ChallengeFriendsViewController : UIViewController <UITableViewDelegate, PF_FBDialogDelegate> {
    NSArray *facebookFriends;
    NSMutableArray *selectedFriends;
}

これらは私が話しているデリゲートメソッドの一部です:

- (void)dialog:(PF_FBDialog *)dialog didFailWithError:(NSError *)error {
    NSLog(@"Error in Dialog: %@", error);
}

- (void)dialogDidNotCompleteWithUrl:(NSURL *)url {
    NSLog(@"Failure on Facebook server side");
}

- (void)dialogCompleteWithUrl:(NSURL *)url {
    NSLog(@"Did complete with URL");
    [self.navigationController popViewControllerAnimated:YES];
    [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
}

- (void)dialogDidNotComplete:(PF_FBDialog *)dialog {
    NSLog(@"Cancelled");
    [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
}

これらのメソッドが呼び出されないと、直感的な方法で共有を処理することはできません。なぜ彼らが呼ばれないのかと困惑し、私はすべてを試したと感じています。私が間違っているところへのポインタはありますか?

4

2 に答える 2

3

あなたのコードでは

PF_Facebook *facebook = [[PF_Facebook alloc] initWithAppId:session.appID andDelegate:nil];

nil デリゲートを設定したので、説明したように、デリゲート メソッドが呼び出されることはないと思います。

これを次のように変更できますか

PF_Facebook *facebook = [[PF_Facebook alloc] initWithAppId:session.appID andDelegate:self];

これは、デリゲート メソッドを同じクラスに配置することを前提としています。

于 2013-02-07T08:38:21.337 に答える
0

facebookによって提供されたインスタンスを使用して、最終的に問題を回避しましたPFFacebookUtils。これは非推奨ですが、現時点で正しいデリゲートメソッドを呼び出させる唯一の方法のようです。

交換済み:

PF_Facebook *facebook = [[PF_Facebook alloc] initWithAppId:session.appID andDelegate:nil];

と:

PF_Facebook *facebook = [PFFacebookUtils facebook];

JPとAromalのご意見に感謝します。

于 2013-02-07T13:18:37.407 に答える