1

Facebookアプリを送信しています-iOSアプリから招待し、ブロックを使用して成功/失敗フローを実装しようとしています。

sendinviteメソッドを公開するFacebookSDKとの通信をラップするクラスを作成しました。

そのメソッドでは、次のコードがあります。

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

ドキュメントで説明されているように。

私のラッパークラスはFBDialogDelegateプロトコルに準拠しており、5つのデリゲートメソッドを実装しました。

dialog:(FBDialog *)dialog didFailWithError:(NSError *)error, 
dialogCompleteWithUrl:(NSURL *)url, 
dialogDidComplete:(FBDialog *)dialog, 
dialogDidNotCompleteWithUrl:(NSURL *)url 
dialogDidNotComplete:(FBDialog *)dialog

問題は、ユーザーがダイアログをキャンセルするかリクエストを送信するかにかかわらず、呼び出されるメソッドはdialogCompleteWithUrl:(NSURL *)urlメソッドだけであるということです。誰かがこれを説明できますか?

4

1 に答える 1

2

これは、何度か報告されている未解決の問題のようです。ユーザーがキャンセル ボタンを押したときに didComplete が呼び出されるという事実は、実際には有効なアクションであるため、didComplete が呼び出されるのは設計によるものです。ドキュメントは古くなっている可能性があり、修正する必要がありますが、開発者サイトでドキュメントのバグを報告すると、進行状況を追跡できます。

あなたの質問に答えるには、ユーザーが「x」ボタンを押すと、didNotComplete を呼び出す必要があります。ユーザーが送信またはキャンセルを押すと、didComplete が呼び出されるように設計されているため、didComplete が呼び出されます。

ただし、この人は、成功したときとユーザーがキャンセルを押したときの URL の値をチェックし、その場合をチェックする if チェックを行うなど、おそらく同様のことができる FBDialog の適切な回避策を思いつきました。

お役に立てれば。

于 2012-12-21T19:11:11.603 に答える