2013-07-22 57 views
1

我試圖在收到個人識別號時更新我應用的徽章圖標(關閉)。應用關閉時更新徽章圖標

我已經嘗試添加代碼,但當我的應用程序關閉時它不工作。它在應用程序在前臺運行時起作用。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
     NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; 

//Accept push notification when app is not open 
    if (remoteNotif) { 
     [application setApplicationIconBadgeNumber:100]; 
    return YES; 
    } 

} 
    -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
    { 

      [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 30]; 

    } 

回答

3

如果你的應用程序是關閉或在後臺,推送通知不會喚醒它。你需要做這個服務器端,包括你想看到的圖標在您的通知有效載荷數量:

{ 
    "aps" : { 
     "alert" : "Your notification message", 
     "badge" : 1 
    } 
} 

看一看蘋果的文檔上Push Notification programming guide

+0

感謝您的澄清。我閱讀推送通知編程指南並看到這樣一句話:「如果目標應用程序在通知到達時未運行,則會播放或顯示警報消息,聲音或徽章值。如果應用程序正在運行,系統會將通知應用程序委託作爲一個NSDictionary對象。該字典包含相應的Cocoa屬性列表對象(加上NSNull)。「我一直認爲應用程序可以在關閉時聽。 – LDWP

+0

不客氣! –

0

爲設置applicationIconBadgeNumber = 1didFinishLaunchingWithOptions:方法類似波紋管0 ...

[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

UILocalNotification另一個答案從這個鏈接ios-badge-number-live-update

而且從這個鏈接RemoteNotificationsPG Guide另一個鏈接RemoteNotifications

0

由於推送通知的iOS和被處理不是您的應用程序,您無法在收到推送通知時更改應用程序徽章。

但是,您可以在推送通知的有效負載中發送徽章號碼,但是您必須執行計算服務器端。

有效載荷看起來是這樣的:

{ 
     "aps" : { 
     "alert" : "You got your emails.", 
     "badge" : 1 
    } 
    } 

現在的應用程序圖標徽章將顯示1

+0

感謝您的澄清。我閱讀推送通知編程指南並看到這樣一句話:「如果目標應用程序在通知到達時未運行,則會播放或顯示警報消息,聲音或徽章值。如果應用程序正在運行,系統會將通知應用程序委託作爲一個NSDictionary對象。該字典包含相應的Cocoa屬性列表對象(加上NSNull)。「我一直認爲應用程序可以在關閉時聽 – LDWP