3

HelloFacebookSample のコードを使用してアプリからリンクを共有していますが、実際に共有が行われたかどうかを知る方法がわかりません。これを共有に使用します:

FBAppCall *appCall = [FBDialogs presentShareDialogWithLink:urlToShare
                                                      name:@"Hello Facebook"
                                                   caption:nil
                                               description:@"The 'Hello Facebook' sample application showcases simple Facebook integration."
                                                   picture:nil
                                               clientState:nil
                                                   handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                                       if (error) {
                                                           NSLog(@"Error: %@", error.description);
                                                       } else {
                                                           NSLog(@"Success!");
                                                       }
                                                       NSLog(@"Results: %@",results);
                                                   }];

そしてそれはうまくいきます。問題は結果ディクショナリへのアクセスです。これをアプリデリゲートに追加する必要があることがわかりました:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
  // attempt to extract a token from the url
  return [FBAppCall handleOpenURL:url
                sourceApplication:sourceApplication
                  fallbackHandler:^(FBAppCall *call) {
                    NSLog(@"In fallback handler");
                  }];
}

それ以外の場合、ハンドラーはまったく実行されません。ここで奇妙なことに、サンプル アプリでは結果ディクショナリに 2 つのフィールドがあり、

completionGesture = cancel;
didComplete = 1;

しかし、同じ電話で自分のアプリでまったく同じコードを使用すると、辞書には次のものが含まれます

didComplete = 1;

それはなぜですか?また、ユーザーが共有したかキャンセルしたかを確認する他の方法はありますか?

4

1 に答える 1