1.反饋服務
Apple 還提供了一個?反 饋服務?,你應該定期查詢。它提供了一個以前使用過但不再有效的(例如用戶卸載了你的iPhone程序)設備令牌列表。你可以從你的數據庫中刪除這些設備令牌。
本教程不涉及反饋服務的使用。
2.創建載荷
使用 PHP 很容易根據數組并?轉 換成 JSON而創建載荷:
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
顯示 $payload 的內容可以看到傳送到APNS 的?JSON字符串:
{
"aps" : { "alert" : "This is the alert text", "badge" : 1, "sound" : "default" }
}
這將使消息顯示于設備上,觸發提升聲音并將“1”置于程序圖標上。默認按鈕“Close”和“View”同時會顯示于彈出窗口上。
對于 Server Density iPhone程序而言,讓用戶按下“View”直接進入產生此提示的服務器是很重要的,所以我們增加了額外的自定義值:
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload['server'] = array('serverId' => $serverId, 'name' => $name);
$output = json_encode($payload);
當用戶按下“View”后,自定義server值將被傳遞到設備中的程序。JSON 值如下:
{
"aps" : { "alert" : "This is the alert text", "badge" : 1, "sound" : "default" },
"server" : { "serverId" : 1, "name" : "Server name")
}
256字節的限制適用于整個載荷,包括自定義字典集。
原生接口
在Server Density中,一旦產生了一條提示,將建立一個載荷并插入隊列中。因此有必要時我們可以同時發送多個載荷。
Apple推薦使用這種方法,因為如果你在發送各載荷時頻繁連接和斷開,APNS有可能會封鎖你的IP。
3.Push Notification Provider 是一個應用程序,用于通過 APNs 發送推送通知給 iPhone 應用。
通過 APNs 發送推送通知有幾個步驟:1. 使用前面創建的 SSL 證書與 APNs 通訊;
2. 構造所要發送的消息載體;
3. 發送載體到APNs;
APNs 是一個基于流的 TCP socket,你的 provider 以 SSL 協議與其通訊。推送通知(包括載體)是以二進制流的方式發送的。和APNs 建立連接后,你可以維持該連接并在連接中斷之前發送多個通知。
技巧: 應避免每發送一次推送通知就建立、關閉一次連接。頻繁的建立、關閉連接可能會被 APNs 認為是 DOS 攻擊,從而拒絕發送 provider 的推送通知發送請求。