1.反饋服務(wù)
Apple 還提供了一個(gè)?反 饋服務(wù)?肺蔚,你應(yīng)該定期查詢。它提供了一個(gè)以前使用過但不再有效的(例如用戶卸載了你的iPhone程序)設(shè)備令牌列表儡羔。你可以從你的數(shù)據(jù)庫中刪除這些設(shè)備令牌宣羊。
本教程不涉及反饋服務(wù)的使用。
2.創(chuàng)建載荷
使用 PHP 很容易根據(jù)數(shù)組并?轉(zhuǎn) 換成 JSON而創(chuàng)建載荷:
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
顯示 $payload 的內(nèi)容可以看到傳送到APNS 的?JSON字符串:
{
"aps" : { "alert" : "This is the alert text", "badge" : 1, "sound" : "default" }
}
這將使消息顯示于設(shè)備上汰蜘,觸發(fā)提升聲音并將“1”置于程序圖標(biāo)上段只。默認(rèn)按鈕“Close”和“View”同時(shí)會(huì)顯示于彈出窗口上。
對(duì)于 Server Density iPhone程序而言鉴扫,讓用戶按下“View”直接進(jìn)入產(chǎn)生此提示的服務(wù)器是很重要的赞枕,所以我們?cè)黾恿祟~外的自定義值:
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload['server'] = array('serverId' => $serverId, 'name' => $name);
$output = json_encode($payload);
當(dāng)用戶按下“View”后,自定義server值將被傳遞到設(shè)備中的程序坪创。JSON 值如下:
{
"aps" : { "alert" : "This is the alert text", "badge" : 1, "sound" : "default" },
"server" : { "serverId" : 1, "name" : "Server name")
}
256字節(jié)的限制適用于整個(gè)載荷炕婶,包括自定義字典集。
原生接口
在Server Density中莱预,一旦產(chǎn)生了一條提示柠掂,將建立一個(gè)載荷并插入隊(duì)列中。因此有必要時(shí)我們可以同時(shí)發(fā)送多個(gè)載荷依沮。
Apple推薦使用這種方法涯贞,因?yàn)槿绻阍诎l(fā)送各載荷時(shí)頻繁連接和斷開,APNS有可能會(huì)封鎖你的IP危喉。
3.Push Notification Provider 是一個(gè)應(yīng)用程序宋渔,用于通過 APNs 發(fā)送推送通知給 iPhone 應(yīng)用。
通過 APNs 發(fā)送推送通知有幾個(gè)步驟:1. 使用前面創(chuàng)建的 SSL 證書與 APNs 通訊辜限;
2. 構(gòu)造所要發(fā)送的消息載體皇拣;
3. 發(fā)送載體到APNs;
APNs 是一個(gè)基于流的 TCP socket,你的 provider 以 SSL 協(xié)議與其通訊氧急。推送通知(包括載體)是以二進(jìn)制流的方式發(fā)送的颗胡。和APNs 建立連接后,你可以維持該連接并在連接中斷之前發(fā)送多個(gè)通知吩坝。
技巧: 應(yīng)避免每發(fā)送一次推送通知就建立毒姨、關(guān)閉一次連接。頻繁的建立钉寝、關(guān)閉連接可能會(huì)被 APNs 認(rèn)為是 DOS 攻擊手素,從而拒絕發(fā)送 provider 的推送通知發(fā)送請(qǐng)求。