1

我试图在我的 iOS 应用程序中实现 Facebook 共享对话框。我尝试了共享对话框

https://developers.facebook.com/ios/share-dialog/

和提要对话框

https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/

在这两种情况下,我都能够真正分享我的内容,但我的问题是我无法跟踪用户是否真的“分享”或“取消”了。

上面的链接显示了处理程序(甚至有评论),如果用户实际共享内容,就会被触发。但是当代码实际运行时,它总是返回正数,或者换句话说,我无法区分是点击取消按钮还是分享按钮。

请指出我是否遗漏了什么,或者是否有其他人遇到过同样的问题。

谢谢,

4

2 回答 2

0

更新以防万一这对任何人都有帮助,以下链接终于对我有用:

https://developers.facebook.com/docs/howtos/ios-6/#nativepostcontroller

虽然它有它的限制(不在 iOS < 6 上运行),但是当用户取消对话框时它成功返回我。这是我使用的代码:

BOOL displayedNativeDialog = [FBDialogs presentOSIntegratedShareDialogModallyFrom:self
                  initialText:[NSString stringWithFormat:@"%@", url]
                  image:nil
                  url:url
                  handler:^(FBOSIntegratedShareDialogResult result, NSError *error) {                                                  
                  if(result == 0)
                  {
                       //Fire our callback

                  }
                  else{
                        NSLog(@"USER CANCELLED");
                  }
          }];
于 2013-08-04T08:22:54.803 回答
0

这是在控制台上获得显式结果的方法。

FBDialogs.PresentShareDialog(myAction,"altimeterthree:share","flight",(call, results, error) => {
    if(call != null)show("Call = " + call.ToString());
    if(results != null)Console.WriteLine("Results = "+results.ToString());
    if(error != null)Console.WriteLine("Error = "+FBErrorUtility.UserMessage(error));
});

这是控制台输出的样子。请注意,结果也在呼叫信息中。

2014-05-11 10:09:26.067 AltimeterThree[18988:60b] Call = <FBAppCall: 0x19e02350, ID: 4589F102-3D11-40D5-BC95-1A1852B341AC
 dialogData: <FBDialogsData: 0x19e04e20, method: ogshare
 arguments: {
    action =     {
        flight =         {
            data =             {
            };
            description = "my description";
            "fbsdk:create_object" = 1;
            id = 1413672752238899;
            image =             (
                                {
                    url = "<UIImage: 0x147f9180>";
                    "user_generated" = true;
                }
            );
            title = "Flight 23";
            type = "altimeterthree:flight";
            url = "http://http://samples.ogp.me/1413756595563848";
        };
    };
    actionType = "altimeterthree:share";
    previewPropertyName = flight;
}
 results: {
    completionGesture = cancel;
    didComplete = 1;
}>
>
2014-05-11 10:09:26.070 AltimeterThree[18988:60b] Results = {
    completionGesture = cancel;
    didComplete = 1;
}
于 2014-05-11T19:24:09.727 回答