6 votes

Android Facebook SDK - Comment interroger les notifications Facebook

Le SDK de Facebook pour Android fonctionne dans mon application. Je n'arrive pas à trouver d'exemples ou de documentation sur la façon d'utiliser le code du SDK pour obtenir des notifications. J'ai défini la permission "manage_notifications" et je suppose que je dois utiliser la méthode .request(), mais le paramètre graphPath m'échappe.

Quelqu'un a-t-il un exemple de la façon d'obtenir les notifications Facebook à l'aide du kit SDK Facebook pour Android ?

3voto

Camille Sévigny Points 2617

Les autres réponses sont utiles, mais ce que je cherchais, c'était un exemple du code Android. J'ai trouvé la solution et je l'ai postée ici. Le code ci-dessous récupère les notifications des utilisateurs connectés/authentifiés.

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

Ensuite, vous devrez analyser la chaîne "result". Elle est au format json. Voici un exemple de ce à quoi cela ressemblera :

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

J'espère que d'autres personnes trouveront cela utile.

1voto

Igy Points 33181

Par défaut, le point de terminaison /USER_ID/notifications n'inclut que les notifications non lues (c'est-à-dire qu'il n'y aura une valeur de retour que si le troisième bijou de la ligne supérieure de Facebook.com est allumé et contient un chiffre rouge).

Si vous souhaitez également inclure les notifications que l'utilisateur a déjà lues, vous pouvez faire une demande à l'adresse suivante /USER_ID/notifications?include_read=1 - manage_notifications est l'autorisation étendue correcte pour ceci

1voto

Vous pouvez vérifier l'objet de session de Facebook SDK 3.0 pour vous assurer que la session est ouverte. Après cela, vous pouvez obtenir les données JSON avec l'aide du code suivant :

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

0voto

Rishi Verma Points 49

Vous pouvez également utiliser une requête FQL. Le format de la requête sera

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

Veuillez vous référer à cette page pour plus de détails http://developers.facebook.com/docs/reference/fql/notification/

Les résultats de cette requête peuvent être reçus dans onComplete() d'un écouteur qui implémente BaseRequestListener.

0voto

Dany19 Points 531

C'est ainsi que je reçois les notifications

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X