2014-07-02 72 views
1

我已設置安靜推送通知,並且所有工作都很好,當應用處於前臺或後臺時。iOS 7 - 靜默推送通知

問題是當應用程序沒有被激活/殺死(如果我理解的很好,任何應用程序在後臺30秒後自動終止)。

我的有效載荷是這樣

{"aps":{"alert":"test","sound":"bingbong.aiff","badge":33,"content-available":1}} 

一切工作正常,但是當我收到這推,徽章圖標不更新(沒有33出現在應用程序圖標附近)。這是第一個問題。

第二個問題是,我不知道如何在應用程序被殺時獲得通知。

我的想法是打電話給服務,如果徽章圖標大於1,這樣我知道有一些通知要下載,我可以聯繫服務器來獲取它們。

+3

根據[Apple](https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler :)「如果用戶強制退出,系統不會自動啓動您的應用程序」 – Leonardo

回答

2

無聲推送通知不需要警報,即要指定的聲音,因爲它沒有呈現給用戶。

沉默的通知,你會通過應用程序獲得:didReceiveRemoteNotification:fetchCompletionHandler ::

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
    //load the new available content and call the completionhandler. 
} 

如果應用程序具有正確的權限的徽章應顯示。你可以註冊你的應用程序,以顯示徽章是這樣的:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge]; 

反正你沒有檢查證件號碼下載新的內容。你可以簡單地附上自己的鍵值對來通知:

{ 
    "aps": { 
     "badge": 33, 
     "content-available":1 
    }, 
    "load-data": 1, 
    "load-data-id": 12 
} 

當您收到的應用通知只是檢查您的PARAM在用戶信息詞典:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
{ 
    int loadData = [[userInfo objectForKey:@"load-data"] intValue]; 
    int loadDataId = [[userInfo objectForKey:@"load-data-id"] intValue]; 
} 

所有這一切記錄在iOS文檔的Local and Push Notification Programming Guide中。