Facebook图形API / FB UNITY SDK处理应用程序请求(发送和接收)

时间:2013-10-14 01:23:55

标签: c# facebook facebook-graph-api sdk unity3d

首先,以下是与我的特定帮助请求相关的原始问题主题的链接: Facebook AppRequest handle on unity3d game

如果不阅读上述内容,这将没有意义。所以,请你在投票之前说不清楚,或者不相关,或者别的什么,看看上面的链接,阅读它...然后,如果可以,那么评论。如果你不能,那么请忽略它。我真的很想得到我的问题的答案,但回来发现它不可见是非常令人沮丧的,因为有人想对它进行投票。这是我在这里的第一个问题,我已经尝试了5次,只是让它看了超过5分钟。

我原来的评论: @Aaron,我感谢你发表你对上述链接的回复,因为我发现它试图弄清楚如何做Nick Mascarenhas也想弄清楚的。我(作为Unity开发人员)也希望看到一个GetRequests类型函数,它返回一个来自UserID的数组和发送给用户登录的Request代码。我对Facebook的做事方式很新(虽然我有一个非常强大的编程背景)我发现这非常......令人沮丧的尝试让Facebook整合下来。 (那个,并且示例统一项目无法统一编译,但我最近了解了为什么......并且没有完成的项目,就像其他SDK一样......再次,非常令人沮丧,因为我想能够弄清楚这一点,然后回到构建我的游戏。)至于Aaron的答案,我跟着所有这些,除了:

  

您可以通过调用FB.API来获取appid中的'数据':

     

调用FB.AppRequest(...,data =“life”)=>请求ID = 1234之后,玩家使用您调用FB.API(“/ 1234”)的请求ID 1234访问您的游戏:生成的JSON字符串将具有字段数据=“生命”

主要问题是我没有完全了解如何在Unity C-Sharp框架内获取发送给某人的特定AppRequests。

例如,我希望能够在我的游戏中向其他玩家发送一个名为“加速”的加电,然后拉出发送的请求(当用户登录时)并知道有多少/来自他们收到了谁/他们。我正在使用下面的SendPowerUp函数。

以下是使用的代码,它主要是从FBUtil.cs文件中复制出来的,并稍加修改以与6.0beta sdk一起使用...

    public void SendPowerUp()
{
    DirectRequestTitle = "Send a Mystery Gift to a friend.";

    FriendFilters.Add ("all");
    FriendFilters.Add ("app_users");
    FriendFilters.Add ("app_non_users");

    // sends a gift request to players... 
    FB.AppRequest (
        message: DirectRequestMessage,
        actionType: OGActionType.Send, 
        objectId: "gift" + FB.UserId,
        filters: FriendFilters, 
        excludeIds: null, 
        maxRecipients: 49, 
        data: FriendSelectorData, 
        title: DirectRequestTitle, 
        callback: (Facebook.FacebookDelegate)AppRequestAsDirectRequestComplete);
}

这是以下版本的修改版本:

    public void CallAppRequestAsDirectRequest()
{
    if (DirectRequestTo == "")
    {
        throw new ArgumentException("\"To Comma Ids\" must be specificed", "to");
    }
    FB.AppRequest(
        message: DirectRequestMessage,
        to: DirectRequestTo.Split(','),
        title: DirectRequestTitle,
        callback: AppRequestAsDirectRequestComplete
    );
}

由于Unity在导入脚本时出现此错误,因此缺少参数:

  

Assets / Scripts / CSharp / FB_Controller.cs(287,12):错误CS1501:方法AppRequest' takes 4'参数没有重载

任何有关如何获取我的应用在玩游戏时发送给玩家的请求的解释(来自FACEBOOK)将不胜感激。

1 个答案:

答案 0 :(得分:2)

我有一个与此类似的问题,最终在这里提出了一个hacky解决方案: Facebook Unity and handling app requests

我确信在那里有一个更简单,更优雅的解决方案,但它对我来说运作良好。 我忘记在答案中提到你可以在发送AppRequest时包含一个'data'字符串,然后可以从JSON读回来处理请求类型(例如生活)。

所有信息都在此页面上: https://developers.facebook.com/docs/games/services/gamerequests

虽然很多不是特定于Unity的,但这就是为什么我的答案如此hacky。我测试它的方式是在测试用户之间发送请求。您可以使用以下链接在浏览器中检查所有请求: https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]

用测试用户访问令牌替换USER ACCESS TOKEN。这也有助于确定在处理请求后是否已删除该请求。

此外,对于AppRequest函数,有多种方法可以采用不同顺序的参数。您可以通过键入(在Monodevelop / Visual Studio中)FB.AppRequest(

)来循环它们

应显示参数,然后按箭头键循环显示。

希望这有帮助!

编辑:刚刚意识到这是2年前被问到的。希望你已经找到了解决方案。