簡體   English   中英

iOS 7-靜默推送通知

[英]iOS 7 - silent push notifications

我已經設置了靜默推送通知,並且當應用程序在前台或后台運行時,一切正常。

問題是該應用程序未處於活動狀態/已被殺死(如果我很了解,任何應用程序在后台運行30秒后都會被自動殺死)。

我的有效載荷是這樣的

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

一切正常,但是當我收到此推送時,徽章圖標未更新(應用程序圖標附近未出現33)。 這是第一個問題。

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

我的想法是如果徽章圖標大於1,則調用該服務,這樣我就知道有一些通知要下載,我可以聯系服務器來獲取它們。

靜默推送通知不需要警報,也無需指定聲音,因為它不會顯示給用戶。

您將通過application: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
}

當您在應用程序中收到通知時,只需在userInfo詞典中檢查您的參數即可:

- (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文檔的《 本地和推送通知編程指南》中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM