Android Facebook SDK - Как запрашивать уведомления Facebook - PullRequest
6 голосов
/ 01 декабря 2011

В моем приложении работает Facebook SDK для Android. Я не могу найти какие-либо примеры или документацию о том, как использовать код SDK для получения уведомлений. У меня установлено разрешение «manage_notifications», и я предполагаю, что мне нужно использовать метод .request (), но параметр graphPath ускользает от меня.

У кого-нибудь есть пример того, как получать уведомления Facebook с помощью Facebook SDK для Android?

Ответы [ 5 ]

3 голосов
/ 01 декабря 2011

В то время как другие ответы полезны, я искал пример кода Android. Я понял это, хотя и разместил здесь. Код ниже получает уведомления вошедших в систему / аутентифицированных пользователей.

//Initialze your Facebook object, etc.
Facebook _facebook = ...
...
Bundle bundle = new Bundle();
bundle.putString(Facebook.TOKEN, _accessToken);
String result = _facebook.request("me/notifications", bundle, "GET");

Тогда вам нужно будет проанализировать строку «result». Это в формате JSON. Вот пример того, как это будет выглядеть:

JSONObject jsonObjectResults = new JSONObject(result);
JSONArray jsonNotificationDataArray = jsonObjectResults.getJSONArray("data");
for (int i=0;i<jsonNotificationDataArray.length();i++)
{
    JSONObject jsonNotificationData = jsonNotificationDataArray.getJSONObject(i);
    if (_debug) Log.v("Title: " + jsonNotificationData.getString("title"));
}

Я надеюсь, что другие люди находят это полезным.

1 голос
/ 07 июля 2013

Вы можете проверить Session Object в Facebook SDK 3.0, чтобы убедиться, что Session открыт. После этого вы можете получить данные JSON с помощью следующего кода:

    Session session = Session.getActiveSession();
    if (session.isOpened()) 
    {
        //access_token = session.getAccessToken();
        Request graphRequest = Request.newGraphPathRequest(session, "me/home", new    
        Request.Callback() 
    {
    public void onCompleted(Response response) 
            {
                //Create the GraphObject from the response
                GraphObject responseGraphObject = response.getGraphObject();

                //Create the JSON object
                JSONObject json = responseGraphObject.getInnerJSONObject();
                Log.i("JSON", json.toString());
                try 
                {
                    YOUR_JSON_ARRAY= json.getJSONArray("data");
                } 
                catch (JSONException e) 
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    Request.executeBatchAsync(graphRequest); 
     }
1 голос
/ 01 декабря 2011

По умолчанию конечная точка / USER_ID / notifications включает в себя только непрочитанные уведомления (т. Е. Будет возвращаемое значение, только если третий драгоценный камень в верхней строке Facebook.com подсвечен и имеет красный номер внутри)

Если вы хотите также включить уведомления, которые пользователь уже прочитал, вы можете сделать запрос к /USER_ID/notifications?include_read=1 - manage_notifications - правильное расширенное разрешение для этого

0 голосов
/ 30 июля 2014

Так я получаю уведомления

final Session session =Session.getActiveSession();
            if(session.isOpened()){  
                String aaa=new String();
                aaa="SELECT title_text,updated_time FROM notification WHERE recipient_id=me() AND is_unread=1";
                Bundle params = new Bundle();
                params.putString("q", aaa);
                     new Request(session,"/fql",params,HttpMethod.GET,new Request.Callback() {
                                 public void onCompleted(Response response) {
                                     try
                                     {
                                        GraphObject go  = response.getGraphObject();
                                        JSONObject  jso = go.getInnerJSONObject();
                                        JSONArray   arr = jso.getJSONArray( "data" );
                                        String splitting=arr.toString().replaceAll("\\\\|\\{|\\}|\\[|\\]", "");
                                        String[] arrayresponse=splitting.split("\\,");
                                        String s = "";
                                        for (int i = 0; i < arrayresponse.length; i++) {
                                            if (arrayresponse[i].length()>13){
                                                if (arrayresponse[i].substring(1,13).equals("updated_time"))
                                                    s+="* "+getDate(Long.valueOf(arrayresponse[i].substring(15,arrayresponse[i].length())))+"\n";
                                                else
                                                    s+="   "+arrayresponse[i].substring(14,arrayresponse[i].length()-1)+"\n\n";

                                            }
                                        }
                                        text2.setVisibility(View.VISIBLE);
                                        NotificationMessage.setVisibility(View.VISIBLE);
                                        NotificationMessage.setMovementMethod(new ScrollingMovementMethod());
                                        NotificationMessage.setText(s);
                                        readMailBox(session);

                                     }catch ( Throwable t )
                                     {
                                         t.printStackTrace();
                                     }


                                 }
                             }  
                     ).executeAsync();
            }
             else{
    //           NotificationMessage.setVisibility(View.INVISIBLE);
                 Log.i(TAG, "Logged out...");
             }
     }
0 голосов
/ 18 декабря 2012

Вы также можете использовать FQL-запрос. Формат запроса будет

SELECT notification_id, sender_id, title_html, body_html, href
FROM notification
WHERE recipient_id=userid
AND is_unread = 1
AND is_hidden = 0 



Подробнее см. На этой странице http://developers.facebook.com/docs/reference/fql/notification/

Результаты этого запроса могут быть получены в onComplete () слушателя, который реализует BaseRequestListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...