java servlet手機app訪問接口(四)推送


 

本人開發的開發者技術變現資源聚集地,大家支持下,下面是網址

https://www.baiydu.com

 

一、 服務端DEMO下載及運行。

  登錄友盟后,瀏覽器直接輸入下面這個URL,直接進入文檔開發和DEMO下載頁面:http://dev.umeng.com/push/ios/integration(下面截圖)

1、下載DEMO

 

2、執行上面步驟后將下載下來的JAVA DEMO導入到Ecplise中,運行

   這里我使用的是java控制台方式來運行DEMO案例,上面的截圖右鍵點擊Demo.java運行,默認是執行android的單個手機推送方法,這里我們可以修改,

   因為我測試的是IOS的推送,所以這里在main方法里將運行方法,修改成IOS的單個手機推送方法。下面截圖

下面是修改上面調用方法中的部分參數截圖

這樣修改之后,官方的DEMO你就可以直接 右鍵 DEMO.JAVA運行了。

返回結果:

記得友盟創建的對應APP的IP一定要修改成服務器的IP,否則會返回IP錯誤。

 

 

二、將推送功能集成到Servlet中

     集成這個DEMO我是遇到了多處問題,首先一個自己封裝的HTTP請求方法執行就返回500錯誤,至於是為什么,昨天本想問他們客戶,但是由於周末沒上班,所以就沒管它了,之后使用了官方DEMO中集成的HTTP請求包之后這個問題解決了。

  1、將官方的HTTP請求包增加到Servlet應用中.下面截圖

   

  將上面圈中的.jar Copy到項目對應的Apatch-Tomcat 路徑下的lib文件夾內,

  接着將下面這幾個類引入到對應的Servlet頁面中。

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

 

  下面是執行代碼:

  

//友盟推送      
         JSONObject UmentPushIosPrameter=new JSONObject();
	        try {                                        //對應APP key
				UmentPushIosPrameter.put("appkey", "568f2ccbe0f55a3e050017?");
				//下面是將時間轉換為時間格式字符串   這里時間戳必須使用10位
			  	UmentPushIosPrameter.put("timestamp", System.currentTimeMillis()/ 1000);
			  	//推送類型:單個設備
				UmentPushIosPrameter.put("type", "unicast");      
				                                             //測試設備TOKEN
				 UmentPushIosPrameter.put("device_tokens", "4aecb635c2a43da05eeca57d7e97665df6d7c26f6bd00f6dcfd5c70477b0dd30");
				UmentPushIosPrameter.put("production_mode", "false");
				
				
				//production_mode
				 
				 JSONObject payloadFirstPrameter=new JSONObject();
				 //自定義鍵值對 
			     payloadFirstPrameter.put("name", "阿薩德發射點發");
			 
			 
				 JSONObject apsFirstPrameter=new JSONObject();
				 //推送內容
				 String postContent= "阿萊克斯的法律框架";
				 apsFirstPrameter.put("alert", postContent);
				 apsFirstPrameter.put("badge", "1");
				 apsFirstPrameter.put("sound", "default");
				 
			     payloadFirstPrameter.put("aps", apsFirstPrameter);
			     //增加到根節點
				  UmentPushIosPrameter.put("payload",payloadFirstPrameter);
				  
				  //增加到根節點                                                                   
			  String GetEncryptStr="POST"+"http://msg.umeng.com/api/send"+UmentPushIosPrameter.toString()
					  +"pa4nfw4hz3mprilryuo2yjdwjlipkv?";//對應的App Master Secret
					  
			  //加密
			    String Ok1 = DigestUtils.md5Hex(GetEncryptStr);
				      
			      String  unicastParameter= UmentPushIosPrameter.toString();
			      StringEntity se = new StringEntity(unicastParameter.toString(), "UTF-8");
			 String    url = "http://msg.umeng.com/api/send" + "?sign=" + Ok1;
			      HttpPost post = new HttpPost(url);
			        post.setHeader("User-Agent", USER_AGENT);
			     post.setEntity(se);
			        // Send the post request and get the response
			        HttpResponse response1 = client.execute(post);
			        int status = response1.getStatusLine().getStatusCode();
			        System.out.println("Response Code : " + status);
			        BufferedReader rd = new BufferedReader(new InputStreamReader(response1.getEntity().getContent()));
			        StringBuffer result = new StringBuffer();
			        String line = "";
			        while ((line = rd.readLine()) != null) {
			            result.append(line);
			        }
			        System.out.println(result.toString());
			        if (status == 200) {
			            System.out.println("Notification sent successfully.");
			        } else {
			            System.out.println("Failed to send the notification!");
			        } 
			     
				  
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
	        

  當然推送方式還有很多種,包括Android的,這些直接去官方文檔看,增加對應參數就可以了。

這里我要說一個我遇到的問題, 拼接MD5加密字符串時遇到的,官方的DEMO是將 App Master Secret:這個拼接參數 .getBytes("utf8")轉成Byte類型了的,但是這里我使用相同的方法后,返回一個加密token錯誤,之后我不將這個參數轉換成Byte類型,就通過了。

 
        
 String GetEncryptStr="POST"+"http://msg.umeng.com/api/send"+UmentPushIosPrameter.toString()
					  +"pa4nfw4hz3mprilryuo2yjdwjlipkv?";//對應的App Master Secret
 
        

 

 

 

 

  本人創業做的一款androidApp, 下載量已經有2000多萬,各種當前熱門的網絡手機獎勵紅包全部集成,另外還有熱門電影和淘寶高額優惠券!很適合各類型的用戶。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM