0

我有问题FB.AppRequest。我需要用户只从 Facebook UI 中显示的列表中选择一个朋友,但我无法找到一种方法来查看 Facebook Unity3d SDK。

谢谢您的帮助。

public void ShareWithUsers()
{
    FB.AppRequest(

        "Come and join me, i bet u cant beat my score",
        null,
        new List<object>() {"app_users"},
        null,
        null,
        null,
        null,
        ShareWithUsersCallback

    );
}

void ShareWithUsersCallback(IAppRequestResult result)
{   
    if (result.Cancelled)
    {
        Debug.Log("Challenge Cancel");
        GameObject.Find("CallBacks").GetComponent<Text>().text = "Challenge Cancel";
    }
    else if (!String.IsNullOrEmpty(result.Error))
    {
        Debug.Log("Challenge on error");
        GameObject.Find("CallBacks").GetComponent<Text>().text = "Challenge on error";
    }
    else if (!String.IsNullOrEmpty(result.RawResult))
    {
        Debug.Log("Success on challenge");

    }
}
4

1 回答 1

1

如果您查看FB.AppRequest的文档,它会解释第四个参数是“to”。

public static void AppRequest(
    string message, 
    OGActionType actionType,
    string objectId,
    IEnumerable<string> to,
    string data = "",
    string title = "",    
    FacebookDelegate<IAppRequestResult> callback = null
)

to将请求发送到的 Facebook ID 列表在哪里,如果您null像现在这样离开它,发件人将看到一个对话框,允许他/她选择收件人。

因此,在您的情况下,您可以保留它null并让用户选择,或者如果它已经选择(您已经知道他想挑战哪个朋友),那么您将需要创建一个列表并添加他的 Facebook ID。

FB.AppRequest(

        "Come and join me, i bet u cant beat my score",
        null,
        new List<object>() {"app_users"},
        new List<string>() {"[id of your friend]"},
        null,
        null,
        null,
        ShareWithUsersCallback

    );

无论哪种方式,这条线new List<object>() {"app_users"}都意味着可以将请求发送给已经玩过游戏的人。但是,如果您删除它,它可能会发送给他的任何朋友。

我见过一些较旧的代码设置了 a maxRecipients,如果设置为一个,则可以确保用户通过 UI 只选择一个朋友:

FB.AppRequest(
        string message,
        IEnumerable<string> to = null,
        IEnumerable<object> filters = null,
        IEnumerable<string> excludeIds = null,
        int? maxRecipients = null,
        string data = "",
        string title = "",
        FacebookDelegate<IAppRequestResult> callback = null);

但这不再出现在文档中。

于 2017-04-13T16:11:17.277 回答