詳解IOS開發(fā)中生成推送的pem文件
詳解IOS開發(fā)中生成推送的pem文件
具體步驟如下:
首先,需要一個pem的證書,該證書需要與開發(fā)時簽名用的一致。 具體生成pem證書方法如下:
1. 登錄到 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action )并點(diǎn)擊 App IDs
2. 創(chuàng)建一個不使用通配符的 App ID 。通配符 ID 不能用于推送通知服務(wù)。例如, com.itotem.iphone
3. 點(diǎn)擊App ID旁的“Configure”,然后按下按鈕生產(chǎn) 推送通知許可證。根據(jù)“向?qū)А?的步驟生成一個簽名并上傳,最后下載生成的許可證。
4. 通過雙擊.cer文件將你的 aps_developer_identity.cer 引入Keychain中。
5. 在Mac上啟動 Keychain助手,然后在login keychain中選擇 Certificates分類。你將看到一個可擴(kuò)展選項(xiàng)“Apple Development Push Services”
6. 擴(kuò)展此選項(xiàng)然后右擊“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存為 apns-dev-cert.p12文件。
7. 擴(kuò)展“Apple Development Push Services” 對“Private Key”做同樣操作,保存為 apns-dev-key.p12 文件。
8. 需要通過終端命令將這些文件轉(zhuǎn)換為PEM格式:
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12 openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
9. 如果你想要移除密碼,要么在導(dǎo)出/轉(zhuǎn)換時不要設(shè)定或者執(zhí)行:
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
10. 最后,你需要將鍵和許可文件合成為apns-dev.pem文件,此文件在連接到APNS時需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
實(shí)現(xiàn)代碼:
<?php
$_POST['token'] = "fe28006a9d57b0727514cf42e9549446f0d4fc509cdexxxxxxxxxx";
$deviceToken = $_POST['token']; //取得設(shè)備的Token,獲取方法便見下文
$body = array("aps" => array("alert" => "message123gggg32323333", "badge" => 1, "sound"=>'default')); //推送方式,包括了提示內(nèi)容,提示方式和提示聲音。
$ctx = stream_context_create();
//如果在Windows的服務(wù)器上,尋找pem路徑會有問題,路徑修改成這樣的方法:
$pem = !empty($this->cfg['isga']) && $this->cfg['isga'] == 2?'apns-dev.pem':'apns-dev.pem'; //臨時全部為開發(fā)狀態(tài)
stream_context_set_option($ctx, 'ssl', 'local_cert', "/data/web/cert/".$pem);
//linux 的服務(wù)器直接寫pem的路徑即可
stream_context_set_option($ctx, 'ssl', 'local_cert', <pre name="code" class="html">"/data/web/cert/".$pem);
<pre name="code" class="html"><pre name="code" class="html"> //如果你的pem存有密碼,需要加一個密碼登陸語句
stream_context_set_option($ctx, 'ssl', 'passphrase', '');
//如果你的pem存有密碼,需要加一個密碼登陸語句
//$pass = ”123123“;
//stream_context_set_option($ctx, ‘ssl', ‘passphrase', $pass);
//此處有兩個服務(wù)器需要選擇,如果是開發(fā)測試用,選擇第二名sandbox的服務(wù)器并使用Dev的pem證書,如果是正是發(fā)布,使用Product的pem并選用正式的服務(wù)器
$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);
以上就是IOS開發(fā)中生成推送的pem文件的實(shí)例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
iOS實(shí)現(xiàn)動態(tài)的開屏廣告示例代碼
啟動圖是在iOS開發(fā)過程中必不可少的一個部分,很多app在啟動圖之后會有一張自定義的開屏廣告圖,但是有的時候需要讓啟動圖看起來就是一個廣告,而且還要這個廣告里面會動,iOS的啟動圖只能是靜態(tài)的,而且固定,為了實(shí)現(xiàn)看起來的動畫效果,只能進(jìn)行偽造了。下面來一起看看2016-09-09
IOS 開發(fā)之UILabel 或者 UIButton加下劃線鏈接
這篇文章主要介紹了IOS 開發(fā)之UILabel 或者 UIButton加下劃線鏈接的相關(guān)資料,需要的朋友可以參考下2017-07-07
IOS開發(fā)之tableView點(diǎn)擊行跳轉(zhuǎn)并帶有“顯示”更多功能
這篇文章給大家介紹通過點(diǎn)擊城市中的tableView跳轉(zhuǎn)到旅游景點(diǎn)的tableView,下面會有“顯示”更多的功能,代碼簡單易懂,對ios點(diǎn)擊tableview跳轉(zhuǎn)相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2016-03-03
IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12
詳細(xì)整理iOS中UITableView的性能優(yōu)化
最近在微博上看到一個很好的開源項(xiàng)目,是關(guān)于如何優(yōu)化UITableView的,加上正好最近也在優(yōu)化項(xiàng)目中的類似朋友圈功能這塊,思考了很多關(guān)于UITableView的優(yōu)化技巧,所以決定詳細(xì)的整理下對優(yōu)化UITableView的理解,需要的朋友們可以參考借鑒。2017-03-03

