<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                這是一篇來自[raywenderlich](http://www.raywenderlich.com)的教程,內容翔實!結構簡單、講解循序漸進、文章質量上乘!是一篇難的的博文!使用半瓶的英語水平翻譯了一下: 1.【iOS push全方位解析】(一)push的概述(本博文) 2.【iOS push全方位解析】(二)[生成push證書,生成Provisioning Profile](http://blog.csdn.net/hherima/article/details/45583865) 3.【iOS push全方位解析】(三)[一個極簡的demo,并測試一下push](http://blog.csdn.net/hherima/article/details/45624075) [這里查看原文](http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1) 在iOS中,App在后臺不能做太多的事情,僅被允許做一些有限的活動,這樣電池壽命就得到了保護。但,如果某些有趣的時間發生,并且又希望讓用戶知道,即便是用戶并沒有正在使用該App。 比如,用戶收到一條新微博,他們喜歡的隊贏得了比賽,或者他們的晚飯準備好了,既然App并不在運行,所以APP不能檢測到這些事件。 幸運的是Apple針對這些問題提供了解決方案。開發者可以寫一個服務端的組建,替代客戶端不停的檢測或者在后臺工作。 當遇見感興趣的事件發生,服務端組建可以發送一個push通知到這個App; push通知可以做下面三件事: ● 顯示一條短文本消息? ● 播放一段聲音 ● 設置在APP圖標badge數量 ![](https://box.kancloud.cn/2016-03-10_56e11b0f520f6.jpg) <學習如何在app中添加push通知> 開發者可以組合這些特性,比如,播放一段聲音,并設置badge數字,但是不顯示文本消息。 通過這一系列的文章,你自己將實現一個簡單的APP并使用push通知。下面這部分文章,你將學會怎樣配置APP接受push通知,并發送一個測試消息。 本篇教程適用于中高級iOS開發,如果你還是iOS新人,你應該看看其他教程。另外強烈推薦大家看看下面兩個教程 ● [How To Write A Simple PHP/MySQL Web Service for an iOS App](http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app) ● [How To Write an iOS App That Uses A Web Service](http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service) 廢話少說,我們開始吧 ### Getting Started:Brief Overview 給APP推送push通知要做相當多的工作,下圖是一個多方組成的拼圖: ![](https://box.kancloud.cn/2016-03-10_56e11b0f6c94e.jpg) (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](https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html). 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消息就永遠丟了。 ![](https://box.kancloud.cn/2016-03-10_56e11b0f87a2e.jpg) (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](http://blog.csdn.net/hherima/article/details/45583865)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看