为什么FB.Feed报告总是在android / ios上返回"取消" = true?

时间:2015-01-28 19:00:30

标签: facebook-unity-sdk

我正在将Facebook整合到我的团结项目中(使用官方的Facebook unity SDK beta 6.2)。我在团结4.5.5p5。

我正在使用FB.Feed在我的墙上显示一个帖子,而且一切正常。我使用我的帖子中的FBreport根据用户是否发帖来做事情。这个代码块在桌面上按预期工作,但它给了我关于android和IOS的另一个结果。我的问题是FBReport总是返回“cancel”:“true”,即使我真的在我的墙上发帖。这里我的代码:

     FB.Feed
(
linkDescription: "Test!",
picture: "http://www.link.com/picture.png",
linkName: "link",
link: "http://www.url.com",
linkCaption: "Caption",
callback: ShareCallback
);
}
void ShareCallback(FBResult shareResult)
{
if (shareResult.Error != null || shareResult.Text.Contains("\"cancelled\":true"))
{
// This block runs on desktop if user abort post, but on android and ios this runs every time, even when post is successful.
}
else
{
//This part runs on desktop if user posts, but never on android and ios.
}

帖子通过,并显示在我的墙上,但在android / ios的FBReport中似乎有些奇怪。

我使用FB.Apprequest向我的游戏发送邀请,并使用相同的方法获取帖子的状态。在FB.Apprequest中,一切都在Android,桌面和ios上运行。谁知道如何解决或解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是他们的Unity SDK中的已知错误:https://developers.facebook.com/bugs/598200610227965/

有一种解决方法,你可以在FbUnityInterface.mm中更改DialogMode

从此

self.dialogMode = NativeDialogModes::FAST_APP_SWITCH_SHARE_DIALOG;

到此

self.dialogMode = NativeDialogModes::WEBVIEW_DIALOG_MODE;

答案 1 :(得分:0)

在Android上,为了显示Webview对话框而不是使用Facebook应用程序,我提出了以下黑客攻击:

  1. 将Unity项目导出为“Google Android Project”
  2. 打开导出的项目文件FacebookDialog.java(com.facebook.widget)
  3. 修改方法canPresentShareDialog(...)以始终返回FALSE
  4. 通过此修改,当Facebook尝试启动共享对话框(FB.java方法FeedRequest())时,它始终认为没有安装Facebook应用程序。我今天才想到这一点,但到目前为止我还没有注意到任何其他Facebook功能的破坏。