2012-03-04 20 views
51

इस एप्लिकेशन में जिसे मैं बनाने की कोशिश कर रहा हूं, मैं पुश नोटिफिकेशन का उपयोग करता हूं। यह हिस्सा बस ठीक काम करता है। जब मैं एक अधिसूचना भेजता हूं तो मैं ऐप आइकन में बैज भी जोड़ता हूं। समस्या यह है कि जब मैं आवेदन लंच करता हूं तो इसे फिर से गायब होना चाहिए, लेकिन ऐसा नहीं होता है।आईओएस ऐप आइकन से बैज को हटा रहा है

-(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

धन्यवाद फैबियन! आपका उत्तर सिर्फ वही था जो मुझे चाहिए :) thannnkkss – thar

+0

हैं -प्लिकेशंसडिडबैक्टएक्टिव और -प्लिकेशंसविल एंटरटेनमेंट: कम या ज्यादा कर रहे हैं? रीसेट में -प्लिकेशंसडिडबैकएक्टिव को रखकर। यह दोनों स्थितियों में काम करता है। – thar

+0

-applicaionDidBecomeActive: फोन कॉल से लौटने पर भी लागू किया जाएगा। - आवेदन WillEnterForeground: आपकी स्थिति में उपयुक्त विधि है। –

192

अपने अनुप्रयोग फिर से सक्रिय हो जाता है और पृष्ठभूमि में अब भी है, तो आप के रूप में अच्छी -applicationDidBecomeActive: में बिल्ला गिनती पुनर्स्थापित करना चाहिए:

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

अभी भी आपके एप्लिकेशन पृष्ठभूमि -application:didFinishLaunchingWithOptions: में चल रहा है कहा जाता है नहीं किया जाएगा।

+0

धन्यवाद! फिर वहां कुछ समझ में आता है :) काम करता है बस, मैं इसे BecomeActive विधि में रीसेट कर रहा हूं। मैं इसे दो बार क्यों नहीं ले सकता? – thar

+6

'-plicationDidBecomeActive में एक बार रीसेट करना:' 'ठीक होगा। चूंकि इस विधि को भी कहा जाएगा जब '- आवेदन: किया गयाफिशिश लांचिंगविथऑप्शन:' 'कहा जाता है। कृपया मेरा जवाब स्वीकार करें :) – Mark

0

आप इस कोड का भी उपयोग कर सकते हैं।

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

या एक विशिष्ट ViewController

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

यह सटीक कोड प्रश्न का हिस्सा है। – Brian

+1

किसी ने इस जवाब को क्यों वोट दिया? –

1

शायद applicationWillResignActive में इसे कहते (AppDelegate.m में):

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

यह आपको स्पष्ट करने के badge अगर push जब एप्लिकेशन आने में मदद मिलेगी खुला है उपयोगकर्ता notification देख रहे हैं और जब आप Home Button (एक या दो बार) दबाते हैं तो आप इसे साफ़ करते हैं। यह भी स्पष्ट होगा कि appclosed (उपयोगकर्ता इसे खोलने के बाद स्पष्ट करें)।

Here आप यह विधि कब देख सकते हैं देख सकते हैं।

संबंधित मुद्दे