你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iphone推送通知java 實現

iphone推送通知java 實現

編輯:IOS開發綜合

 

前提准備,

 

在編寫push notification之獲取device token中拿到device token以後,需要把token字符串發送給應用的服務器端,即provider。

 

 

 

 

對於越獄手機獲取不到device token的可以通過cydia安裝pushdoctor,安裝方法可以google一下在這就不多說了,我的越獄手機通過安裝push補丁可以獲取token了。

 

 

provider將token號、通知內容、通知形式(比如是否彈出提示窗口、是否發聲等)發送給蘋果的服務器(apns)。

 

最簡單的provider實現,其實就是通過證書,和蘋果服務器建立安全連接(tsl或ssl),通過認證建立連接後,向蘋果服務器發送符合蘋果要求的數據流。

 

獲得證書

 

蘋果提供兩種接入方式的證書:

 

developer,用於測試

production,用於產品

 

如果是內部測試,使用developer方式即可。

 

下載證書,通過ios provisioning portal:

 

 

 

這要求:

 

登錄的apple developer program帳號必須是級別最高的agent(這是針對企業帳號來說的,如果是個人帳號就無所謂了),agent帳號即創始帳號,否則看不到configure鏈接;

必須經過configure操作,已經enable了developer和product。

然後進入configure鏈接,點擊download按鈕即可:

 

 

 

 

 

處理證書

 

如果是編寫在mac下跑的objc程序,無需對證書做處理,可跳過這一步。

 

如果是在java下使用,需要把打證書用的私有專用密鑰和上述的支持通知的證書(注意,不是iphone developer證書)合並導出。

 

 

 

生成證書:

 

 

 

點擊存儲的時候,會提示生成一個文件密碼:

 

 

 

當然可以密碼為空。

 

之後會提示:

 

 

 

這裡需要輸入mac登錄用戶的密碼。

 

文件生成。

 

編寫發送通知的實例

 

如果是編寫mac代碼,有一個現成的項目可用:http://stefan.hafeneger.name/download/PushMeBabySource.zip

 

導入到xcode中,只需將:

 

 

 

deviceToken填寫成設備的token字符串,另外,pathForResource改為上面圖中的:

 

aps_developer_identity

 

另外,要把剛才獲得證書步驟中下載的證書復制到xcode項目Resources目錄下:

 

 

 

可以看到文件名和上面的pathForResource的參數一致。

 

之後運行程序就可以在設備上收到推送通知。

 

 

 

 

第三方依賴包(下載在下面):

bcprov-jdk16-145-1.jar

 

commons-io-2.0.1.jar

 

commons-lang-2.5.jar

 

log4j-1.2.16.jar

 

javapns-jdk16-163.jar

 

java代碼:

 

package com.sdunisi.iphone.apns.send;

 

import java.util.HashMap;

import java.util.Iterator;

 

import javapns.back.PushNotificationManager;

import javapns.back.SSLConnectionHelper;

import javapns.data.Device;

import javapns.data.PayLoad;

 

public class MainApnsSend {

 

    public static void main(String[] args) throws Exception {

        try {

              String deviceToken = "e775b5892f3334427c14def8aa4d8189a4ec1c795020072f4baa7ee92e50b1db";//iphone手機獲取的token

 

              PayLoad payLoad = new PayLoad();

              payLoad.addAlert("我的push測試");//push的內容 www.2cto.com

              payLoad.addBadge(1);//圖標小紅圈的數值

              payLoad.addSound("default");//鈴音

                       

              PushNotificationManager pushManager = PushNotificationManager.getInstance();

              pushManager.addDevice("iPhone", deviceToken);

                        

              //Connect to APNs

                          /************************************************

                          測試的服務器地址:gateway.sandbox.push.apple.com /端口2195

              產品推送服務器地址:gateway.push.apple.com / 2195

                         ***************************************************/

              String host= "gateway.sandbox.push.apple.com";

              int port = 2195;

              String certificatePath= "/Users/jcjc/Desktop/push_p.p12";//導出的證書

              String certificatePassword= "sunlg";//此處注意導出的證書密碼不能為空因為空密碼會報錯

              pushManager.initializeConnection(host,port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

                       

              //Send Push

              Device client = pushManager.getDevice("iPhone");

              pushManager.sendNotification(client, payLoad);

              pushManager.stopConnection();

 

              pushManager.removeDevice("iPhone");

             }

             catch (Exception e) {

              e.printStackTrace();

             }

 

    }

}

 

摘自VV's RIA

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved