【问题标题】:Facebook Share Dialog/Feed Dialog on iOS - how to know if share button or cancel button is tappediOS 上的 Facebook 分享对话框/提要对话框 - 如何知道是否点击了分享按钮或取消按钮
【发布时间】:2013-07-30 19:21:05
【问题描述】:

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

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

和提要对话框

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

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

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

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

谢谢,

【问题讨论】:

  • 在您的第二个链接中有一个如何知道用户是否取消共享的示例。
  • @giorashc 是的,但是当该代码 sn-p 在设备上运行时,即使用户实际共享了内容,流程也永远不会到达成功块,这是一个很大的谜团。它总是进入“用户取消”块。甚至该链接中 git 存储库中提供的示例代码库的行为方式也完全相同。

标签: ios facebook dialog share


【解决方案1】:

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

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;
}

【讨论】:

    【解决方案2】:

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

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

    虽然它有它的限制(不能在 iOS

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

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2018-11-02
      • 2018-02-26
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多