Facebook graph API/FB UNITY SDK 处理应用请求(发送和接收)



首先,这是与我的特定帮助请求相关的原始问题线程的链接:Unity 3d 游戏上的 Facebook AppRequest 句柄

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

我最初的评论:@Aaron,感谢您在上述链接上发布您的回复,因为我发现它试图弄清楚如何做尼克·马斯卡雷尼亚斯也试图弄清楚的事情。我(作为 Unity 开发人员)还希望看到一个 GetRequests 类型函数,该函数返回来自 UserID 的数组和发送给登录用户的请求代码。我对Facebook的做事方式相当陌生(尽管我有一个非常强大的编程背景),我发现这非常......试图让Facebook整合失败令人沮丧。(这一点,以及示例 Unity 项目无法在 Unity 中编译,但我最近了解了原因......并且没有像其他 SDK 那样完成的项目......同样,非常令人沮丧,因为我希望能够弄清楚这一点,然后回到构建我的游戏。至于亚伦的回答,我都跟着,除了:

您可以通过调用FB从appid获取"数据"。应用程序接口:

打电话给FB。AppRequest(...,data="life") => 请求 ID = 1234 之后,玩家使用您调用 FB 的请求 ID 为 1234 访问您的游戏。API("/1234") :生成的 JSON 字符串将有一个字段 data="life"

主要问题是我没有完全了解如何在 unity C-Sharp 框架内将特定的 AppRequest 发送给一个人。

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

这是使用的代码,它大部分是从 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 在导入脚本时会给出此错误,因此如果缺少参数:

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

任何关于如何获取我的应用程序在玩家玩我的游戏时发送给他们的请求的说明(来自 FACEBOOK)将不胜感激。

我有一个类似的问题,最终在这里提出了一个黑客解决方案:Facebook Unity 和处理应用请求

我敢肯定,在某个地方有一个更简单、更优雅的解决方案,但它对我来说已经足够好了。我忘了在答案中提到,您可以在发送 AppRequest 时包含一个"data"字符串,然后可以从 JSON 中读回该字符串以处理请求类型(例如 life)。

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

尽管其中很多都不是特定于Unity的,这就是为什么我的答案如此笨拙的原因。我测试它的方式是在测试用户之间发送请求。您可以使用此链接在浏览器中检查所有请求:https://graph.facebook.com/me/apprequests?access_token=[用户访问令牌]

并将用户访问令牌

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

此外,对于 AppRequest 函数,它可以通过多种方式以不同的顺序获取参数。您可以通过键入(在Monodevelop/Visual Studio中)FB来循环浏览它们。AppRequest(

这应该显示参数,并且可以通过按箭头键循环浏览它们。

希望这有帮助!

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

最新更新