Android Facebook SDK - How to Request Facebook Notifications

I have an Android SDK running in my application. I can't seem to find examples or documentation on how to use the SDK code to receive notifications. I have permission to manage_notifications, and I assume that I need to use the .request () method, but the graphPath parameter escapes me.

Does anyone have an example of how to receive Facebook notifications using the Facebook SDK for Android?

+6
source share
5 answers

While the other answers are useful, what I was looking for was an example of Android code. I realized this and posted it here. The code below receives registered and / or authenticated user notifications.

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

Then you need to parse the string "result". This is in json format. Here is an example of how it would look:

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

I hope other people find this useful.

+3
source

By default, the endpoint of / USER_ID / notifications includes only unread notifications (i.e. there will only be a return value if the third gem on the top line of Facebook.com lights up and has a red number inside it)

If you want to also include notifications that the user has already read, you can make the request /USER_ID/notifications?include_read=1 - manage_notifications is the correct extended permission for this

+1
source

You can check the session object of the Facebook SDK 3.0 to make sure the session is open. After that, you can get the JSON data using the following code:

  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
source

You can also use the FQL query. The request format will be

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



For more details, see this page http://developers.facebook.com/docs/reference/fql/notification/

The results of this query can be obtained in the onComplete () of the listener that implements the BaseRequestListener.

0
source

This is how I get 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..."); } } 
0
source

Source: https://habr.com/ru/post/902847/


All Articles