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

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

準備工作:

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

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

2.創建certificates

註意:內部開發,隻能是用Develpment,producation是測試完瞭,準備發佈到appstore的時候再弄的。

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

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

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

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

命令參數如下:

原文地址:點擊打開鏈接https://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 伺服器交互這塊,到這裡就結束瞭

You May Also Like