2012-03-04 101 views
51

在我試圖製作的這個應用程序中,我使用了推送通知。這部分工作得很好。當我發送通知時,我還會將徽章添加到應用圖標。問題是,當我午餐的應用程序,它應該再次消失,但事實並非如此。從iOS應用程序中刪除徽章應用程序圖標

-(IBAction)Push{ 

    NSMutableDictionary *data = [NSMutableDictionary dictionary]; 

    [data setObject:@"Numfeud: Troels made a move!" forKey:@"alert"]; 

    [data setObject:[NSNumber numberWithInt:1] forKey:@"badge"]; 

    [data setObject:@"bar" forKey:@"foo"]; 

    [PFPush sendPushDataToChannelInBackground:@"GameChannel2" withData:data]; 
} 

application didFinishLaunchingWithOptions我嘗試徽章以這種方式設置爲0:

[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 

我怎樣才能清除應用程序圖標徽章?

回答

8

可能,-application:didFinishLaunchingWithOptions:未被調用,因爲您的應用程序仍在後臺運行。爲了在應用程序從後臺啓動時刪除徽章計數,您還必須重置-applicationWillEnterForeground:中的徽章編號。

+0

謝謝Fabian!你的答案正是我所需要的:) thannnkkss – thar 2012-03-04 18:06:32

+0

-applicationDidBecomeActive和-applicationWillEnterForeground:做同樣的更少還是更多?將重置置於-applicationDidBecomeActive中時。它適用於我兩種情況。 – thar 2012-03-04 18:23:50

+0

-applicaionDidBecomeActive:也將在從電話返回時調用。 -applicationWillEnterForeground:在你的情況下是合適的方法。 – 2012-03-05 15:18:09

192

如果您的應用程序再次激活,並仍然在後臺,你應該在-applicationDidBecomeActive:重置徽章數量,以及:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    application.applicationIconBadgeNumber = 0; 
} 

如果你的應用程序仍然在後臺運行-application:didFinishLaunchingWithOptions:將不會被調用。

+0

謝謝!然後有一些有意義的東西:)工程只是找到,我只在重置它在BecomeActive方法。不能爲什麼我應該兩次? – thar 2012-03-04 18:05:44

+6

在''-applicationDidBecomeActive:''中重置一次就可以了。因爲當''-application:didFinishLaunchingWithOptions:''被調用時,這個方法也會被調用。請接受我的回答:) – Mark 2012-03-04 19:45:10

0

您也可以使用此代碼。

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    application.applicationIconBadgeNumber = 0; 
} 

或者在一個特定的ViewController

- (void)awakeFromNib { 
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
} 
+1

這個確切的代碼是問題的一部分。 – Brian 2017-03-28 17:39:11

+1

爲什麼有人投票拒絕這個答案? – 2017-05-11 04:45:04

1

也許叫它applicationWillResignActive(在AppDelegate.m):

-(void)applicationWillResignActive:(UIApplication *)application{ 
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
} 

這將幫助你清除badge如果push來時,應用程序正在開放。當他按Home Button(一次或兩次)時,用戶看到notification並清除它。此外,如果appclosed(在用戶打開後清除)將會清楚。

Here你可以看到何時調用這個方法。

相關問題