iphone 推播通知 伺服器端java 實現

來源:互聯網
上載者:User

前提準備,

在編寫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的內容
              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();
             }

    }
}


依賴包 開發套件.zip
(2384 K)

工程代碼   apns_iphone.zip
(2348 K)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.