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

否则处理程序根本不会运行。现在奇怪的是,在示例应用程序中,结果字典有两个字段,

completionGesture = cancel;
didComplete = 1;

但是当我在自己的应用程序中使用完全相同的代码时,在同一部手机上,字典只包含

didComplete = 1;

为什么会这样,还有其他方法可以查明用户是共享还是取消?

4

1 回答 1

1

请参阅此处的本节,了解您在结果字典中可以期待什么,以及为什么只有一些值可用:

https://developers.facebook.com/ios/share-dialog/#handling-responses

于 2013-07-17T23:18:07.477 回答