2014-02-17 76 views
3

我想在發送通知時嚮應用程序中的UIButton添加徽章圖標,但我不太確定如何實現此目的。它需要與跳板圖標上的徽章相匹配,並且在應用程序中按下UIButton時,跳板徽章和UIButton上的徽章都需要消失。將推送通知徽章添加到UIButton

UPDATE:

我得到一個徽章出現,但是當我打開應用程序的徽章被重置回零的應用程序被打開時,所以我最終沒有看到按鈕上的徽章。我知道徽章的作品,因爲我做這個測試吧:

[[UIApplication sharedApplication]setApplicationIconBadgeNumber:1]; 

下面是徽章代碼:

NSString *badgeNumber = [NSString stringWithFormat:@"%d", [[UIApplication sharedApplication]applicationIconBadgeNumber]]; 

    JSCustomBadge *actionAlertBadge = [JSCustomBadge customBadgeWithString:badgeNumber]; 
    actionAlertBadge.frame = CGRectMake(188, 6, 30, 30); 

    [self.view addSubview:actionAlertBadge]; 

    if ([badgeNumber isEqual:@"0"]) 
    { 
     actionAlertBadge.hidden = YES; 
    } 

我怎麼能有徽章得不到打開應用程序時重置,但而是在應用程序中按下按鈕時重置?

我有這個工作,但仍然有一個問題。如果應用程序未在後臺運行,則徽章會顯示在跳板圖標和UIButton上。當按鈕被按下時,新的視圖打開並且徽章被重置,所以當用戶用UIButton返回到屏幕時,徽章不再存在。我遇到的問題是應用程序在後臺運行時,徽章不會顯示在按鈕上,而是顯示在跳板上。

- (IBAction)gotoActionAlerts 
{ 
    ActionAlertsViewController *actionAlerts = [[ActionAlertsViewController alloc]initWithStyle:UITableViewStylePlain]; 
    WebViewController *wvc = [[WebViewController alloc]init]; 
    [actionAlerts setWebViewController:wvc]; 
    actionAlerts.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [[UAPush shared] resetBadge]; 
    actionAlertBadge.hidden = YES; 
    [self.navigationController pushViewController:actionAlerts animated:YES]; 
} 

在viewDidLoad中

badgeNumber = [NSString stringWithFormat:@"%d", [[UIApplication sharedApplication]applicationIconBadgeNumber]]; 

    actionAlertBadge = [JSCustomBadge customBadgeWithString:badgeNumber]; 
    actionAlertBadge.frame = CGRectMake(83, 6, 30, 30); 

    [self.view addSubview:actionAlertBadge]; 

    if ([badgeNumber isEqualToString:@"0"]) 
    { 
     actionAlertBadge.hidden = YES; 
    } 
+0

我一直在想這是否可能,我需要做同樣的事情! – meda

+2

是的,這是可能的。作爲@Viruss的回答,你可以使用UIApplication的'applicationIconBadgeNumber'屬性來設置和獲取徽章。 –

回答

3

對於徽章上的UIButton可以利用現有的here一些自定義庫,

並設置/讓你的應用程序的徽章,你可以使用方法,

[UIApplication sharedApplication]setApplicationIconBadgeNumber:1]

編輯

The issue I'm having is when the app is running in the background, the badge doesn't show on the button, but shows on the springboard. 

如果您的應用程序在後臺徽章將顯示在App圖標,如果您使用的是由有效載荷設置徽章值推送通知,

{"aps": {"alert":"content test","badge":1,"sound":"default"}} 

,或者你使用localnotification徽章值設置在applicationIconBadgeNumber屬性的UILocalNotification,即

notification.applicationIconBadgeNumber=1; 

因此,如果你在後臺應用程序,你有不同的通知兩個代表席方法,

所以實現該委託方法推送通知本地通知didReceiveLocalNotification:didReceiveRemoteNotification:

所以請在實施前參考Apple Document

+0

查看問題的更新。 – raginggoat