2016-02-12 1 views
0

Я вытащил свой оригинальный вопрос, потому что мне удалось разобраться с ним через след и ошибки и много глубоких поисков. Итак, я понимаю, что с использованием новейшего Facebook SDK в Unity, вы можете вытащить все ожидающие запросы на плеер с помощью:Facebook Unity и обращения с приложениями

FB.API("/me/apprequests", HttpMethod.GET, RequestHandler) 

Где RequestHandler является IGraphResult, который затем можно разобрать в словарь, например, так:

void RequestHandler(IGraphResult result){ 
    if (result != null) { 
     Dictionary<string, object> reqResult = Json.Deserialize(result.RawResult) as Dictionary<string, object>; 
    } 

}

документация объясняет, как особая просьба будет отображаться в формате JSON, и я нашел несколько примеров того, как работать с этой информацией (я смутно понимаю JSON в), однако если тянущий ВСЕ запросы для игрока, как мне работать с этой информацией?

Из JSON я просто пытаюсь вытащить идентификатор объекта и идентификатор отправителя каждого запроса, обработать запрос на основе идентификатора объекта, а затем удалить запрос с графика, объединив два, что я думаю, что я уже понял.

Таким образом, мой вопрос заключается в том, как я могу получить идентификатор объекта и идентификатора отправителя для каждого запроса?

ответ

0

Таким образом, после множества проб и ошибок и много журналов проверки, я понял, действительно Hacky способ сделать это, для тех, которые не уверены:

public void TestRequests(){ 
    FB.API("/me/apprequests", HttpMethod.GET, TestResponse); 
} 

public void TestResponse(IGraphResult result){ 
    if (result.Error == null) { 
     //Grab all requests in the form of a dictionary. 
     Dictionary<string, object> reqResult = Json.Deserialize(result.RawResult) as Dictionary<string, object>; 
     //Grab 'data' and put it in a list of objects. 
     List<object> newObj = reqResult["data"] as List<object>; 
     //For every item in newObj is a separate request, so iterate on each of them separately. 
     for(int xx = 0; xx < newObj.Count; xx++){ 
      Dictionary<string, object> reqConvert = newObj[0] as Dictionary<string, object>; 
      Dictionary<string, object> fromString = reqConvert["from"] as Dictionary<string, object>; 
      Dictionary<string, object> toString = reqConvert["to"] as Dictionary<string, object>; 
      string fromName = fromString["name"] as string; 
      string fromID = fromString["id"] as string; 
      string obID = reqConvert["id"] as string; 
      string message = reqConvert["message"] as string; 
      string toName = toString["name"] as string; 
      string toID = toString["id"] as string; 
      Debug.Log ("Object ID: " + obID); 
      Debug.Log ("Sender message: " + message); 
      Debug.Log ("Sender name: " + fromName); 
      Debug.Log ("Sender ID: " + fromID); 
      Debug.Log ("Recipient name: " + toName); 
      Debug.Log ("Recipient ID: " + toID); 
     } 
    } 
    else { 
     Debug.Log ("Something went wrong. " + result.Error); 
    } 
} 

Опять же, это это мой первый опыт использования JSON, и я уверен, что есть гораздо более эффективный способ сделать это, но в основном после большого количества разбивки и конвертирования мне удалось извлечь идентификатор объекта, имя отправителя и идентификатор, сообщение и имя получателя и идентификатор. Идентификатор объекта входит в конкатенацию с идентификатором получателя, поэтому для работы с самим идентификатором объекта это нужно будет удалить, однако, как это облегчит передачу строки, чтобы удалить запрос из API-интерфейса Graph.

Если кто-нибудь может предложить мне более эффективный способ сделать это, я был бы благодарен! В конце концов, всегда есть чему поучиться.

Смежные вопросы