iOS6和iOS7處理push不同之處,解決反覆push,-(void) application: didReceiveRemoteNotification: fetchCompletionHandl

來源:互聯網
上載者:User

標籤:第一條   推斷   push   ica   share   sdn   tracking   lan   大致   

如果讀者已經知道push的基本知識,本文僅僅是解決一些適配,相容問題。如果對push 不甚瞭解,參考以下的文章

1.【iOS push全方位解析】(一) push的概述
2.【iOS push全方位解析】(二) 產生push認證,產生Provisioning Profile

3. 【iOS push全方位解析】(三)一個極簡的demo。並測試一下push

4. 給iOS程式加入push代碼

======================本文=======================

client須要處理三中情況:

1. client在前台。一般是彈窗● iOS6 的-(void) application: didReceiveRemoteNotification:被調用
● iOS7 的-(void) application: didReceiveRemoteNotification: fetchCompletionHandler:被調用
所以,為了相容iOS6.通常的做法是,在-(void) application: didReceiveRemoteNotification: fetchCompletionHandler:中調用-(void) application: didReceiveRemoteNotification: 方法。


● push處理模組,推斷一下程式是否是活躍 [UIApplication sharedApplication].applicationState == UIApplicationStateActive。


進而推斷是否須要彈出對話方塊。
2. client在後台。可是還活著大致原理同第一條,注意處理是否彈框。
3. client被殺死的狀態。進來push訊息。滑動(點擊)push訊息調起client。● iOS 6調用 -(void) application: didFinishLaunchingWithOptions:帶有launchDictionary。裡麵包括了push訊息
須要簡單處理一下,擷取真正的內容[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]
● iOS 7以後調用兩個方法:
-(void) application: didFinishLaunchingWithOptions:
-(void) application: didReceiveRemoteNotification: fetchCompletionHandler:
這樣就有一個坑。iOS7以上,可能就反覆處理同一個push訊息了。

【解決】:因為僅僅有iOS7以上都會調用-(void) application: didReceiveRemoteNotification: fetchCompletionHandler:方法。


那麼。為了相容iOS6:在-(void) application: didFinishLaunchingWithOptions:中僅僅處理iOS6。

4.如今的APP都有一個啟動圖過程。如果push訊息過來。APP正好是被殺死狀態,且如果啟動後有啟動圖。


這中push拉起APP後是直接處理push的,不彈框。
【解決】首先想到的方法是:暫存這個push訊息。然後等啟動圖完了再展示push內容。注意,等到啟動圖完畢,再使用push模組
[UIApplication sharedApplication].applicationState == UIApplicationStateActive就不好用了。由於此時APP應該是活躍的了,就須要彈框了。

所以。須要push模組支援一個強制不彈框的介面。

iOS6和iOS7處理push不同之處,解決反覆push,-(void) application: didReceiveRemoteNotification: fetchCompletionHandl

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.