程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> IOS php 服務器 客戶端 准備工作

IOS php 服務器 客戶端 准備工作

編輯:關於PHP編程

今天終於完完全全的搞明白了,APNs 推送前,客戶端的准備工作需要那一些。如果有錯誤的地方,歡迎大神指出來。

准備工作:

原文地址:點擊打開鏈接http://blog.csdn.net/tuxiangqi/article/details/17245553

1.到開發者中心,創建app Id,選擇push notification 功能(game center 和另外一個是必選的)。

\


2.創建certificates

注意:內部開發,只能是用Develpment,producation是測試完了,准備發布到appstore的時候再弄的。

其中按照Develop 流程的介紹,會創建一個CSR文件(production版本也可以公用這個CSR文件),通過 鑰匙串(通用菜單裡的某個應用)創建,詳情見官方<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Q2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdC5jZXJ0U2lnbmluZ1JlcXVlc3SjrNXiuPbKx9fu1tXJ+rL6s/a1xM7EvP48YnI+CjwvcD4KPHA+My60tL2oY2VydCDOxLz+oaO4+b7dtdq2/rK9o6y74bXDtb3Su7j2Y2VydM7EvP6jrGNlcnTOxLz+t9YgZGV2us1wcm+w5rG+oaPXotLiztLDx9PDZGV2suLK1KOscHJvyse3orK8PC9wPgo8cD40LrW8yOtjZXJ0IM7EvP7I6yDUv7PXtK48L3A+CjxwPjxpbWcgc3JjPQ=="http://www.Bkjia.com/uploadfile/Collfiles/20131211/2013121109360487.jpg" alt="\">

5.制作 SSL和 私鑰 的 PEM格式文件(php服務端需要)

a。分別制作SSL(cert文件)和 key(私鑰)的p12格式文件,通過導出獲得。(注意命名)

\

b.通過終端shell 輸入命令,得到SSL 和 key 的 2個PEM 格式的文件,並且將它們合二為一

\


命令參數如下:


原文地址:點擊打開鏈接http://blog.csdn.net/tuxiangqi/article/details/17245553

cd 存放文件夾的路徑

openssl pkcs12 -clcerts -nokeys -out 輸出文件名.pem -in 原文件的名字例如SSL(Cert文件).p12 (將SSLcert文件從p12變為pem)

openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12 (將key.p12 文件變為 pem,這裡會提示一定要設置 私鑰的解壓密碼,至少4位,你輸入即可)

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem (這個命令是將私鑰剛才設置的 至少4位密碼 去除,如果你想保留也可以,但是需要和php服務端的同事說明下)

cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem (這個命令是將 SSL 和私鑰 編譯為一個文件pem 命名可以自己改)

下面是從網上找到的其他資源,關於php服務器的設置


 array("alert" => "message123gggg32323333", "badge" => 1, "sound"=>'default'));  //推送方式,包括了提示內容,提示方式和提示聲音。
	    
	    $ctx = stream_context_create();
	    
	    //如果在Windows的服務器上,尋找pem路徑會有問題,路徑修改成這樣的方法:
	    $pem = !empty($this->cfg['isga']) && $this->cfg['isga'] == 2?'apns-dev.pem':'apns-dev.pem'; //臨時全部為開發狀態
	    stream_context_set_option($ctx, 'ssl', 'local_cert', "/data/web/cert/".$pem);
	    //linux 的服務器直接寫pem的路徑即可
	    
	    stream_context_set_option($ctx, 'ssl', 'local_cert', 
"/data/web/cert/".$pem);
	    //如果你的pem存有密碼,需要加一個密碼登陸語句	
stream_context_set_option($ctx, 'ssl', 'passphrase', '');
        
        //如果你的pem存有密碼,需要加一個密碼登陸語句        
        //$pass = ”123123“;
        //stream_context_set_option($ctx, ‘ssl’, ‘passphrase’, $pass);
        
        //此處有兩個服務器需要選擇,如果是開發測試用,選擇第二名sandbox的服務器並使用Dev的pem證書,如果是正是發布,使用Product的pem並選用正式的服務器        
        $fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
        
        $fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
        
        if (!$fp) {        
            print_r("Failed to connect $err $errstrn");        
            return;        
        }        
        print_r("Connection OK\n");        
        $payload = json_encode($body);        
        $msg = chr(0).pack("n", 32).pack('H*', str_replace(' ', '', $deviceToken)).pack("n",strlen($payload)).$payload;               
        print_r("sending message :".$payload."\n");        
        fwrite($fp, $msg);        
        fclose($fp);

?>

差不多這裡弄好了,你就可以 按照其他 的服務器 教程去弄了。。。網上很多。

當然,你的

關於 和php 服務器交互這塊,到這裡就結束了


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved