2011-12-01 4 views
6

Tengo el Facebook SDK para Android que funciona en mi aplicación. Parece que no puedo encontrar ejemplos o documentación sobre cómo usar el código SDK para recibir notificaciones. Tengo el permiso "manage_notifications" establecido y asumo que necesito usar el método .request(), pero el parámetro graphPath me elude.Android Facebook SDK - Cómo consultar las notificaciones de Facebook

¿Alguien tiene un ejemplo de cómo obtener las notificaciones de Facebook utilizando el SDK de Facebook para Android?

Respuesta

3

Mientras que las otras respuestas son servicial, lo que estaba buscando era una ejemplo del código de Android. Aunque lo he descubierto y lo he publicado aquí. El código siguiente obtiene las notificaciones de usuarios autenticados/iniciados.

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

Luego tendrá que analizar la cadena "resultado". Está en formato json. Aquí hay un ejemplo de cómo se verá:

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")); 
} 

Espero que a otras personas les resulte útil.

+0

Donde agrego este código .. Dentro de onCreate() o onComplete() – Vivekanand

+0

@Vivekanand Este código debe agregarse donde quiera que desee consultar los datos json de notificación de Facebook. Puede estar en cualquier lugar. –

+0

_facebook objeto se deprecia :) –

1

Por defecto, el/USER_ID/punto final de notificaciones solo incluye notificaciones no leídas (es decir, solo habrá un valor de retorno si la tercera joya en la línea superior de Facebook.com está iluminada y tiene un número rojo dentro)

Si desea incluir también notificaciones al usuario ya ha leído, puede hacer una petición a /USER_ID/notifications?include_read=1 - manage_notifications es el permiso extendido correcto para este

+0

Esta información es muy útil, gracias. Sin embargo, buscaba un código específico para Android con respecto al método request(). –

+0

¿Me podría decir cómo añadir manage_notification permission.Thankyou.i intentó usar este: facebook.authorize (esto, \t \t \t \t \t nueva String [] { "e-mail", "publish_stream", "manage_notifications"} .. .pero no funciona. –

0

También puede usar una consulta FQL. El formato de la consulta será

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



favor refiérase a esta página para obtener más información http://developers.facebook.com/docs/reference/fql/notification/

Los resultados de esta consulta se pueden recibir en onComplete() de un oyente que implementa BaseRequestListener.

1

Puede verificar el objeto de sesión de Facebook SDK 3.0 para asegurarse de que la sesión esté abierta. Después de que se pueden obtener los datos JSON con la ayuda del siguiente código:

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

Esto se parece a lo que estoy buscando. Déjame probar cosas cuando tenga tiempo. –

0

Esto es cómo consigo notificaciones

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..."); 
      } 
    } 
Cuestiones relacionadas