2014-01-31 65 views
0

我想跟蹤從「player_1」發送給其他玩家的邀請數,並因此給「player_1」一些獎勵。就像在PVZ2中一樣。如何跟蹤從Unity應用程序發送的Facebook appRequest?

好吧,Facebook的SDK爲Unity3d。下面是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插件不有這個參數。

而且醫生說是如下:

的要求僅適用於在Facebook.com上的遊戲或iOS和 Android應用。接受來自遊戲的請求將指示人 到發送請求的應用程序的Canvas頁面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); 
    } 
}); 

回答

4

這是落實使用Facebook的圖形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; 
    } 
+1

的主要問題是 「如何跟蹤appRequests」。發送請求沒有問題,但如何計算它們?我應該讓Canvas應用程序來處理它,那麼如何將Canvas App重定向到AppCenter頁面?或者還有其他解決方案嗎? –

+1

不好意思說這不是你的答案。以上是我正在使用的應用程序代碼。在上面的代碼中,我得到了正在使用我的應用程序的所有成員。 –

+0

參數「安裝」是否響應該應用程序安裝在IOS/Android設備上? –