【问题标题】:How to track Facebook appRequest that send from Unity app?如何跟踪从 Unity 应用发送的 Facebook appRequest?
【发布时间】:2014-02-23 22:54:22
【问题描述】:

我想跟踪从“player_1”发送给其他玩家的邀请以计算它们,并因此给“player_1”一些奖励。就像在 PVZ2 中一样。

好的,Facebook 有 Unity3d 的 SDK。这是调用允许邀请玩家的应用请求对话框的 API:

public static void AppRequest(
        string message,
        string[] to = null,
        string filters = "",
        string[] excludeIds = null,
        int? maxRecipients = null,
        string data = "",
        string title = "",
        FacebookDelegate callback = null)

Facebook 文档中提到了一些关于 redirect_url 的内容,可用于跟踪接受缩进的用户: https://developers.facebook.com/docs/reference/dialogs/requests/

但是 Unity 插件没有这个参数。

还有 doc 说如下:

请求仅适用于 Facebook.com 或 iOS 上的游戏,并且 安卓应用。接受来自游戏的请求将指示该人 到发送请求的应用程序的画布页面 URL。对于本地人 移动应用程序,接受请求会将人定向到应用程序 如果安装在他们的设备上或到适当的位置(Apple App Store 或 Google Play)下载应用程序。

游戏只能在移动设备上运行。因此我们不需要制作 Facebook Canvas 应用程序。我是否应该在我们的网站上实现这个 Canvas URL 脚本?

注入代码(服务器端脚本)以跟踪 Facebook 应用请求的正确位置在哪里?

更新: 感谢 Bhavesh Vadalia 的回答:https://stackoverflow.com/a/21597185/425707 我决定不在 Canvas App 中处理好友请求。 这是 Facebook SDK 5.0.3 的解决方案:

// Quesry string: "/fql?q=SELECT uid, name, is_app_user, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user = 1";
string q = "/fql?q=SELECT+uid,+name,+is_app_user,+pic_square+FROM+user+WHERE+uid+IN+(SELECT+uid2+FROM+friend+WHERE+uid1+=+me())+AND+is_app_user+=+1";
FB.API(q, Facebook.HttpMethod.GET, friendsResult =>
{
    if (friendsResult.Error != null)
    {
        FbDebug.Error(friendsResult.Error);
    }
    else
    {
        FbDebug.Log(friendsResult.Text);
    }
});

【问题讨论】:

    标签: android ios facebook facebook-graph-api unity3d


    【解决方案1】:

    这是使用 facebook graph api 为我的应用程序实现的跟踪代码的实现。希望对你也有帮助。

    我正在使用 facebook 3.6 sdk

    private void requestMyAppFacebookFriends(Session session) {
            Request friendsRequest = createRequest(session);
            friendsRequest.setCallback(new Request.Callback() {
    
                @Override
                public void onCompleted(Response response) {
                    List<GraphUser> friends = getResults(response);
    
                    Log.e("RESULT : ", "@"+friends.size());
    
                    for(int i =0;i<friends.size(); i++){
    
                        GraphUser user = friends.get(i);
                        boolean installed = false;
                        if(user.getProperty("installed") != null){
                            installed = (Boolean) user.getProperty("installed");
                        }
                        if(installed){
                            Log.e("USER NAME", "@"+friends.get(i).getId());
                        }
                    }
                    // TODO: your code here
                }
            });
            friendsRequest.executeAsync();
        }
     private Request createRequest(Session session) {
            Request request = Request.newGraphPathRequest(session, "me/friends", null);
    
            Set<String> fields = new HashSet<String>();
            String[] requiredFields = new String[] { "id", "name", "picture","installed" };
            fields.addAll(Arrays.asList(requiredFields));
    
            Bundle parameters = request.getParameters();
            parameters.putString("fields", TextUtils.join(",", fields));
            request.setParameters(parameters);
    
            return request;
        }
    

    【讨论】:

    • 主要问题是“如何跟踪 appRequests”。发送请求没有问题,但是怎么计算呢?我应该让 Canvas 应用程序来处理它,那么如何将 Canvas App 重定向到 AppCenter 页面?还是有其他解决办法?
    • 很抱歉,这不是你的答案。以上是我正在使用的应用程序代码。在上面的代码中,我得到了所有使用我的应用程序的成员。
    • 参数“已安装”是否响应应用程序已安装在 IOS/Android 设备上?
    • 是的,无论在 developers.facebook 中创建什么应用程序。这个 app_id 通过过滤你的朋友。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多