"iOS push全方位解析(一)【譯文】"——iOS PUSH概述

來源:互聯網
上載者:User

標籤:push   apps   openssl   

這是一篇來自raywenderlich的教程,內容翔實!結構簡單、講解循序漸進、文章品質上乘!是一篇難的的博文!使用半瓶的英語水平翻譯了一下:
1. push的概述(本博文)
2. 產生push認證,產生Provisioning Profile
3. 一個極簡的demo,並測試一下push

這裡查看原文

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    在iOS中,App在後台不能做太多的事情,僅被允許做一些有限的活動,這樣電池壽命就得到了保護。但,如果某些有趣的時間發生,並且又希望讓使用者知道,即便是使用者並沒有正在使用該App。

    比如,使用者收到一條新微博,他們喜歡的隊贏得了比賽,或者他們的晚飯準備好了,既然App並不在運行,所以APP不能檢測到這些事件。
    幸運的是Apple針對這些問題提供瞭解決方案。開發人員可以寫一個服務端的組建,替代用戶端不停的檢測或者在後台工作。

    當遇見感興趣的事件發生,服務端組建可以發送一個push通知到這個App;

    push通知可以做下面三件事:

● 顯示一條短簡訊 
● 播放一段聲音

● 設定在APP表徵圖badge數量


<學習如何在app中添加push通知>
開發人員可以組合這些特性,比如,播放一段聲音,並設定badge數字,但是不顯示簡訊。

通過這一系列的文章,你自己將實現一個簡單的APP並使用push通知。下面這部分文章,你將學會怎樣配置APP接受push通知,並發送一個測試訊息。

本篇教程適用於中進階iOS開發,如果你還是iOS新人,你應該看看其他教程。另外強烈推薦大家看看下面兩個教程

● How To Write A Simple PHP/MySQL Web Service for an iOS App
● How To Write an iOS App That Uses A Web Service
廢話少說,我們開始吧
Getting Started:Brief Overview

給APP推送push通知要做相當多的工作,是一個多方組成的拼圖:


(push工作原理圖)
1. 一個App啟用push通知。使用者得確認,自己就會收到這些通知。
2. App 收到一個“device token”,你可以認為device token是一個地址,push通知將被發送到這兒。
3. App發送該device token到你App的Server。
4. 當有趣的事件發生後,App的Server發送一個push通知到Apple Push Notification Service(簡寫為APNS)
5. APNS發送一個push通知到使用者的裝置。
當使用者裝置收到push通知,裝置上顯示一個alert,播放一段聲音或者更新App的icon。使用者通過alert可以啟動App,並給予了push的內容。
    push通知還值得存在麼,既然我們有了本地通知和多任務。本地通知僅限於設定好時間的事件,並且只有“VOIP,地圖導航和後台播放”才能使APP後台運行。假如你想通知那些App已經被close的使用者,還需要push通知。
    本教程,我會詳細闡述push通知機制,和怎麼在App中構建push。內容較多,享受它吧。
push通知需要準備什麼為了給APP添加push通知,你需要:
 一台iPhone或iPad。push通知在模擬器上不好用,所以你需要在真機上測試。
 iOS Developer Program membership。你需要建立一個新的App ID和provisioning profile還有SSL認證(APP Server使用)。這些都在iOS Provisioning Potral中操作。
 如果你想跟隨本文的例子,你還需要建立你自己的provisioning profile和SSL 憑證;你不能用我的。因為拿到認證很重要,我會闡述申請一個新的認證的詳細步驟。
 一個伺服器用來串連網路。push通知總是由Server發出的。作為開發,可以使用你的Mac作為Server,但是作為產品發布,你至少需要一個類似於VPS(Virtual Private Server)的東西。
一種廉價的共用主機託管賬戶是不夠的,你需要在後台運行,安裝SSL 憑證,並且支援特定連接埠TLS外邊串連。
大多共用主機託管提供者,不讓你這麼搞。可能你請求後,他會這麼幹。我真心建議使用VPS,比如【Linode】
剖析一個push通知App Server負責建立push訊息,所以,知道push訊息長什麼樣子很有用。一個push通知是一個條短訊息,包含了device token,payLoad,還有一些其他位元組。payLoad是包含了真是的資料。App Server應該提供一個JSON格式的字典。一個簡單push訊息的payLoad像這樣:
{"aps":{"alert": "Hello, world!","sound": "default"}}

一對{}包含了一個字典。payload是一個字典,至少包含一項“aps”,在上面的例子中,aps包含了兩個欄位alert和sound。用戶端收到這種push通知,顯示一個alert文本“helloworld”並播放了標準效果的聲音。
還可以在aps中添加其他items,比如:
{"aps":{"alert":{"action-loc-key": "Open","body": "Hello, world!"},"badge": 2}}

現在alert是一個字典了。“action-loc-key”給提供可選擇的文本。badge欄位包含了顯示在APP icon上的數字。該push不會播放聲音。
JSON格式的payload有很多中配置。開可以改變播放的聲音,可以提供本地化的文本,可以自訂添加欄位。點擊這裡查看更多Local and Push Notification Programming Guide.

push通知本身應該是短小為目的,payload最大是256bytes,,跟簡訊和微博大小差不多。聰明的push 伺服器不會浪費空格和分行符號,產生的push訊息想這樣子:
{"aps":{"alert":"Hello, world!","sound":"default"}}

這樣我們讀起來不太容易,但是它節省了位元組。payload超過256的push通知,將不會被APNS接受。
push通知的問題 它並不可靠。沒有人保證push通知將準確的派發,即使APNS伺服器接受了它們。正如 App Server擔心的那樣,push通知是fire-and-forget。沒辦法知道發給APNS的push訊息的狀態。派發的時間也是相差很大,可能秒級可能半個小時。

另外,iPhone使用者可能一直沒有啟用push通知功能;可能在一個wifi環境,該wifi環境阻塞了APNS的連接埠;可能iPhone已經關機了。APNS會嘗試發送最後一個通知,當phone回到線上後。但APNS僅會嘗試一定次數,超過這個次數。這個push訊息就永遠丟了。


(push 並不可靠)
 可能很貴。在App中添加push功能很容易也很廉價。在大使用者量下,push通知變得昂貴了。比如:你在RSS變化的時候,通知你的使用者。因為你控制著RSS並知道什麼時候變化了。你在網站上更新,Server就發出了通知。但是,假如你的App是一個RSS feed,允許使用者把自己的URL放進去。在這種情況下,你需要想出一些機制來檢測更新那些資料。
實際中,你的Server需要不停的記錄這些變化的feeds。如果你有大量使用者,可能需要擴充伺服器和寬頻。這樣push通知變得很昂貴並且不值得了。

理論知識差不多了,開始學習怎麼做push通知吧。在開始之前,我們需要在iOS provisioning portal上做一些煩人的設定工作。

硬貨是下一篇 http://blog.csdn.net/hherima/article/details/45583865

"iOS push全方位解析(一)【譯文】"——iOS PUSH概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.