Tuesday 16 July 2013

Implement Urban Airship For Push Notification In Java

MyAuthenticator.java
import java.net.Authenticator;
import java.net.PasswordAuthentication;

/**
* MyAuthenticator is the class to authenticate the user using userName and password
* @author Harit Kumar
*/
public class MyAuthenticator extends Authenticator{
 
 private String user;
    private String passwd;

    public MyAuthenticator(String user, String passwd)
    {
        this.user = user;
        this.passwd = passwd;
    }

    public PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(user, passwd.toCharArray());
    }

}
PushUtil.java

import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.net.Authenticator;
import java.net.URL;
import java.net.URLConnection;

import javax.net.ssl.HttpsURLConnection;

import org.apache.log4j.Logger;

public class PushUtil {

 static Logger logger = Logger.getLogger(PushUtil.class);
 
 public static boolean sendPushMessage(String message,String deviceToken){
    boolean result=false;

    try {
     
     Authenticator.setDefault(new MyAuthenticator("App Key","App Master Secret"));
     URL url = new URL("https://go.urbanairship.com/api/push/");
     URLConnection urlConnection = url.openConnection();
     HttpsURLConnection httpConn = (HttpsURLConnection)urlConnection;
     ByteArrayOutputStream bout = new ByteArrayOutputStream();
     String postdata = "{\"aps\": {\"alert\": \""+message+"\"}, \"device_tokens\": [\""+deviceToken+"\"]}";
     
     logger.info("postdata : "+postdata);
     
     byte[] buffer = new byte[postdata.length()];
     buffer = postdata.getBytes("UTF8");
     bout.write(buffer);
     byte[] b = bout.toByteArray();
     httpConn.setRequestProperty("Content-Length",String.valueOf(b.length));
     httpConn.setRequestProperty("Content-Type","application/json");
     httpConn.setRequestMethod("POST");
     httpConn.setDoOutput(true);
     httpConn.setDoInput(true);
     OutputStream out = httpConn.getOutputStream();
     out.write(b);
     out.close();
     logger.info("Push ResponseCode : "+httpConn.getResponseCode());
     if(httpConn.getResponseCode()==200)
     {
        result=true;
     }
    }
    catch (Exception e) {
     logger.error("Error : "+e);
    }
    return result;
   }
 
 
 public static void main(String[] args) {
  PushUtil.sendPushMessage("Hi Demo","98b79b2f 74f4457d 55966598 03be5fa3 36693326 37700848 33454309 c408f253");
 }
}


1 comments:

  1. This is a great tutorial.

    I was trying another payload but it received a 400 response even though it is tested valid JSON.

    {"audience": {"alias": "some_alias"}, "notification": {"alert": "Hi demo from Java application"}, "device_types": ["ios"]}

    Do you have a tutorial for sending a notification to an alias instead of a device token?

    ReplyDelete

Related Posts Plugin for WordPress, Blogger...