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的內容 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.