1

首先,这是与我的特定帮助请求有关的原始问题线程的链接: Facebook AppRequest handle on unity3d game

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

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

您可以通过调用 FB.API 从 appid 获取“数据”:

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

主要问题是我没有完全了解如何在统一的 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在导入脚本的时候会出现这个错误,如果缺少参数:

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

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

4

1 回答 1

2

我有一个与此类似的问题,最后在这里提出了一个 hacky 解决方案: Facebook Unity 和处理应用程序请求

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

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

尽管其中很多都不是 Unity 特有的,但这就是为什么我的回答如此骇人听闻的原因。我测试它的方式是在测试用户之间发送请求。您可以使用以下链接在浏览器中检查所有请求: https ://graph.facebook.com/me/apprequests?access_token= [USER ACCESS TOKEN]

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

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

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

希望这可以帮助!

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

于 2016-02-13T08:13:57.203 回答