2012-06-22 21 views
38

बढ़ाना अधिसूचना प्राप्त करने पर बैज मूल्य में वृद्धि करना संभव है। या मुझे गिनती पेलोड के रूप में भेजनी चाहिए?पुश अधिसूचना बैज आईफोन

यदि मैं बैज वैल्यू को "1" के रूप में भेज रहा हूं, तो ऐप के आइकन में बैज-वैल्यू कैसे बढ़ा सकता है यदि ऐप खुला नहीं है।

मैंने इस कोड का उपयोग किया है लेकिन काम नहीं करता है।

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
    [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber + 1; 
} 
+1

तुम सिर्फ पेलोड के रूप में नए गिनती भेज सकते हैं, यह सुनिश्चित करने के लिए कि जब एप्लिकेशन पृष्ठभूमि में है और अग्रभूमि – janusbalatbat

उत्तर

50

आमतौर पर सभी में एप्लिकेशन अपठित सूचना गणना सर्वर में रखा जाता है। जब सर्वर किसी विशेष डिवाइस टोकन पर पुश अधिसूचना भेजता है तो वे बैज के साथ बैज गिनती भेजते हैं। एक बार डिवाइस अधिसूचित हो जाने पर और आपका ऐप पृष्ठभूमि में (या मारे गए) ओएस स्वचालित रूप से बैज गिनती को आपके ऐप आइकन पर अपडेट कर देता है। मामले कि क्या आप अपने एप्लिकेशन चल रहा है में, आप

application:didReceiveRemoteNotification: 

प्रतिनिधि में सूचित कर दिया जाएगा और इस तरह आप (NSDictionary *) userInfo से बिल्ला गिनती प्राप्त करने में सक्षम हैं। और इस प्रकार आप फंक्शन

[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue]; 

का उपयोग करके ऐप आइकन बैज गिनती को अपडेट करने में सक्षम हैं, यह सोचें कि इससे आपकी मदद करनी चाहिए।

+6

प्राप्त करने की कुंजी नहीं चाहिए एपीएस के बाहर बैज गिनती @ बैज "हो? देखें: http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference।एचटीएमएल # // apple_ref/डॉक्टर/यूआईडी/टीपी 40006786-सीएच 3-एसड 16 – qix

+0

आवेदन: didReceiveRemoteNotification: क्या इस विधि को ऐप भी मार दिया जाएगा? – jailani

+1

@Mathew Varghese, प्रत्येक उपयोगकर्ता के पास अलग अपठित अधिसूचनाएं होंगी, सर्वर की तरफ गिनती करके बैज गिनती कैसे सटीक होगी? – Subha

12

यदि एप्लिकेशन खुला नहीं है तो आप पेलोड को छोड़कर बैज को बढ़ाने में सक्षम नहीं होंगे।

+6

@ अपने कोड को नहीं बुलाया जाएगा ... क्योंकि आपका ऐप – Antzi

5

एक पुश सूचना बात आती है, जबकि अपने आवेदन पृष्ठभूमि मोड में है & आप को बढ़ाने के लिए पदक संख्या चाहते हैं, तो आप एक badgeCount सर्वर से इतना है कि सर्वर वर्तमान गिनती जानता भेजना चाहिए,।

आप सर्वर साइड से बिल्ला गिनती का प्रबंधन तो यह कोड के लिए पर्याप्त है: -

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    NSLog(@"remote notification: %@",[userInfo description]); 

    if (userInfo) { 
     NSLog(@"%@",userInfo); 

     if ([userInfo objectForKey:@"aps"]) { 
      if([[userInfo objectForKey:@"aps"] objectForKey:@"badgecount"]) { 
       [UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue]; 
      } 
     } 
    } 
} 
+0

नहीं चल रहा है क्योंकि मैं सर्वर पर बैज गिनती कैसे भेज सकता हूं ?? @ elppa –

+0

@ moosa, सर्वर सर्वर पर आपके डिवाइस में पुश अधिसूचना भेजता है अपने डिवाइस टोकन और सर्वर को अपने डिवाइस टोकन आईडी के माध्यम से अपने बैज गिनती के बारे में बताएं, मुझे लगता है कि सर्वर को बैज गिनती भेजने की कोई आवश्यकता नहीं है – Deepesh

+0

तो बैज वैलर को हमेशा 1 के रूप में भेजते समय पेलोड में, क्या यह बढ़ेगा ऐप अगर यह खोला नहीं गया है ?? –

3

शहरी एयरशिप this का समर्थन करता है जो उनकी "ऑटोबाज" सुविधा का उपयोग करता है।

+1

लिंक के अनुसार, 'ऑटोबैज हमारे सर्वर में बैज संख्याओं को ट्रैक करने के लिए एक शहरी एयरशिप सुविधा है, इसलिए पेलोड में केवल बैज नंबर शामिल होना चाहिए जो पिछले धक्का से अधिक है। –

+1

नहीं। लिंक पढ़ें - आप "+1" भेज सकते हैं और शहरी एयरशिप आपके लिए इसे बढ़ाएगी। –

+1

... शहरी एयरशिप * आपके सर्वर * पर आपके लिए गिनती रखती है, उन्होंने आपके लिए पेलोड में बैज नंबर सेट किया है ... यह पेलोड में केवल "+1" नहीं है (यह जो भी संख्या निर्धारित की जानी चाहिए), पुश करें अधिसूचनाओं में "+1" बैज संख्या, AFAIK की कोई धारणा नहीं है। –

0

दूरस्थ अधिसूचना प्राप्त जब आप खुले अनुप्रयोग,

में "didBecomeActive" नीचे दिए गए कोड का उपयोग कर अपने AppDelegate फ़ाइल की विधि वर्तमान बिल्ला नंबर प्राप्त करने के बाद:

int badgeCount = [UIApplication sharedApplication].applicationIconBadgeNumber; 
    badgeCount = badgeCount + 1; 
संबंधित मुद्दे