Pushbullet + WebClient = download only body content from note notification - android

This is my first attempt to use the Pushbullet API to read the latest notification sent.
I have successfully authenticated my WebClient and upload/download its last push, but I want to download only the body (note's message) from the push of note type. If you guys take a look at the example bellow, the WebClient.DownloadString brings not only the body, but also every information available from the push.
Is there a way to download only the note's message, and not everything from it?
wc.DownloadString("https://api.pushbullet.com/v2/pushes?limit=1");
Result:
"{\"accounts\":[],\"blocks\":[],\"channels\":[],\"chats\":[],\"clients\":[],\"contacts\":[],\"devices\":[],\"grants\":[],\"pushes\":[{\"active\":true,\"iden\":\"ujCch9rXhnwsjAvxQ1EFi0\",\"created\":1.454030974949465e+09,\"modified\":1.454031099564189e+09,\"type\":\"note\",\"dismissed\":true,\"direction\":\"self\",\"sender_iden\":\"ujCch9rXhnw\",\"sender_email\":\"xx#gmail.com\",\"sender_email_normalized\":\"xx#gmail.com\",\"sender_name\":\"ABC\",\"receiver_iden\":\"ujCch9rXhnw\",\"receiver_email\":\"x#gmail.com\",\"receiver_email_normalized\":\"xx#gmail.com\",\"title\":\"abc\",\"body\":\"test line 1\r\ntest line 2\r\ntest line
3\"}],\"profiles\":[],\"subscriptions\":[],\"texts\":[],\"cursor\":\"eyJWZXJzaW9uIjoxLCJNb2RpZmllZEFmdGVyIjoiMDAwMS0wMS0wMVQwMDowMDowMFoiLCJNb2RpZmllZEJlZm9yZSI6IjIwMTYtMDEtMjlUMDE6MzE6MzkuNTY0MTg5WiJ9\"}"

In the API, no. The easiest way is to parse the response with a JSON parser and get response["pushes"][0]["body"]

Related

Tasker App: Why my HTTP POST is not sending parameters?

I'm making a simple HTTP POST request using Tasker app, it's working fine but somehow it's not sending my arguments. HTTP GET is working fine. What am I doing wrong?
The only thing the server does is JSON stringify all received parameters and return them like: Text: { parameters }
HTTP GET is working:
HTTP POST works, it returns the response "text: {}" but doesn't return any parameter:
Now sometimes it shows "Bad Request Error 400"
I've tested it with another server and this issue persists...
Here's a fiddle to send get and post requests to the same server and both work.
I've exported my task as xml for you to test: You can download it here
Thanks in advance guys!
I have done a little testing with what you have supplied. It appears that your post parameters are making it to the server but %HTTPR is not getting populated. The Tasker documentation says that this variable will be populated if the response is "text-based", but this does not seem to be the case. I may not know what Tasker considers to be "text-based", but I have tried "text/plain" and "text/html" with no luck.
The work-around that I have come up with is to put the response into a file using the "Output File" field of the post task. (Leave "Content Type" blank or this won't work.) You can then read the file into a variable and do what you need to.
This is either a defect in Tasker, incorrect documentation, or just a misunderstanding of what it takes to make it work. This work-around, however, will get you what you need.
Here is a link to a GitHub repository with the updated task export. You may need to change the output file name/location to work with your device.
Update:
Since I posted the above solution, I have run across a Tasker plugin called "RESTask for Tasker". Evidently, Tasker has enough issues with HTML requests that a separate plugin was needed. I have tested this plugin with POST and it does work, so this is another way to go. The plugin is available on the Google Play store.

Getting Bad Request (400) on Azure Notification Hub's "Test Send"

I'm trying to send the following payload to a specific device (which is why I'm using the registration_ids) via Test Send on Azure's Notification Hub, but I'm getting a bad request error.
{
"registration_ids" : ["2670873167838193734-9582072870486547213-1"],
"data":{"message":"Hello World!"},
}
I'm not sure why since I checked the formatting and it looked fine to me based on other sources I saw.
Does anyone have an idea on what's happening?
EDIT:
Here's how I eventually managed to send a notification to a specific user:
on the client side (Java), I replaced the line
hub.register(regid)
with
hub.register(regid,"myTag")
Where "myTag" can be any other string tag you want. That way you can enter the word myTag in the 'Send to Tag' on Azure's Notification Hub and verify that you received the notification on your device.
Also, if you want to send the notification from the server side (C#), you'll need to add this header to your http request:
request.Headers.Add("ServiceBusNotification-Tags", "myTag");
Hope this helps anyone.
registration_id would not be part of the payload (see https://msdn.microsoft.com/en-us/library/azure/dn223273.aspx request body) although it is part of GCM's payload. To send to a specific device, you will need to tag that device with an id of sorts (e.g. registration_ids) and send to the tag "{registration_id}".
This is due to registration_ids field in the payload. Notification Hub does allow passing the registration_ids in the payload. Notification Hub internally substitute the registration id (before sending to GCM/FCM) based on selected devices.
https://msdn.microsoft.com/en-us/library/azure/dn530749.aspx
Thanks,
Sateesh

Android PushNotification From Json URL

I have a Json URL, which contains data about Latest Job Postings, I am successfully parsing the Json URL and able to display the top job postings in my ListView.
But my requirement is to create a push notification, so that whenever a new job is posted, the user should be able to get a notification on device.
I have followed this: http://www.vogella.com/articles/AndroidNotifications/article.html
But I don't know how to get notifications in my case.
Could anyone help me?
Issue:
Give push notification to user's device about the updated data even when application is in background mode.
Solution:
Upon successful insertion of new data in your database (which is going to give updated set of data to your JSON request) , just call the file which send GCM push notification to all your users.
Reference:
GCM docs
GCM push-notification using php server
In context of implementation presented in demo app of 2nd link,
upon successful insertion,you can call send_message.php file,but make sure that $regId and $message should be retrieved from your database
You have created ActionBar Notifications for your app, but now you need to create the ability to receive notifications from a web client, instead of going to find them yourself from the URL.
To create a push notification you would need to have a constant thread (BroadcastReceiver) on the device that is waiting for the notification from the sever.
Google 'Cloud to Device Messaging' is the simplest way to do this.
This is a good link with lots of info on how to do this :
http://blog.mediarain.com/2011/03/simple-google-android-c2dm-tutorial-push-notifications-for-android/
If you require these notifications to be displayed on the device even when the application is not running (which seems to be the case from what you describe), you can use Google Cloud Messaging.
You would need a server that would poll the Json URL for updates, and send a GCM message to all the devices where your app is installed once such an update is detected.
Your app would have to register to Google Cloud Messaging and send the Registration ID received from Google to your server.
When your app receive a GCM message, you would create a notification and when the notification is tapped, you would start the activity that loads the data from the JSON URL.

Android: Fail to retrieving a tag value of the EWS response

I am hitting my Exchange server using (EWS+Basic Authentication). I could authenticate and hit my services with these Request GetItem (E-mail Message),SyncFolderItems and few other and getting the response successfully. I could parse the SyncFolderItems response to get basic info abt the Mail Items (Like Subject,To,From,HasAttachments etc.). But when i hit the GetItem request i am receiving a response but i couldnt get the Mail item Body (i.e, the Message). Is it any tutorial to do this. I am using XMLPullParser..
The response might be look like this . Plz guide me on this
I've used JWebServices for Exchange (Android version) several times. It's not free but accomplished what I needed. You should try the API to see if they get correct Body to see if your application fails or body is empty.
Thanks for ur valuable replies.. I found the data (values) that i stored from the saxparser is not complete. So only i couldnt get the html content properly in the webview.
i used the following link as reference and used the string buffer to resolve this issue.
Thx

How to push XML file from server to android application via GCM server

I am trying GCM based android app to push messages from server to android client. I am able to push fix string with the following coe. I am wondering about the ways to push XML file from server and parse at the android application. I have done some research but I couldn't find push XML rather I found send XML file. Thank you
if (androidArray.size() == 1) {
String registrationId = androidArray.get(0);
Message message = new Message.Builder()
.collapseKey(collapseKey)
.timeToLive(30)
.delayWhileIdle(true)
.addData("message", Message)
.build();
Result result = sender.send(message, registrationId, 5);
You don't push xml (or JSON preferably) to the android app. You send a simple message to the app.
when the app receives the message it then needs to go and pull the xml/json from the website with an http get request to the relevant url that will supply the xml.
The android app can then parse the response and do whatever you want it to.
Here is an EXCELLENT tutorial on C2DM (The forerunner to GCM) http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html
You should be able to work out the differences needed.
UPDATE
Google Android has a complete section on GCM which can be found here
http://developer.android.com/google/gcm/index.html
Within that link there are getting started guides and a GCM Demo app
There are limits to the amount of data you can send and you should not rely on your data not ever exceeding the limits or Google arbitrarily changing the amount of data you are allowed to send.
Should either of those occur you would need to update your app so just do it right in the first place.
The message you send should act as a "key" to determine what action to take when the message is received.
UPDATE
If you are feeling REALLY adventurous you could use a custom sync adapter to help you consume your web services. It's pretty advanced stuff but if you are feeling curious about this then watch the Google I/O seminar on consuming RESTfull web services http://www.youtube.com/watch?v=xHXn3Kg2IQE

Categories

Resources