2009-12-21 24 views
23

मैं अपने आवेदन में पुश सेवा लागू कर रहा हूं, और मैं एप्लिकेशन के बैज के बारे में सोच रहा हूं। मेरा ऐप एक मेल ऐप (सॉर्टा) है और मैं इनबॉक्स में जोड़े गए नए संदेशों के लिए पुश के माध्यम से उपयोगकर्ता को सूचित करना चाहता हूं, मैं बैज = इनबॉक्स में नए संदेशों की संख्या चाहता हूं।पुश-अधिसूचना बैज ऑटो वृद्धि

मैंने इसे सर्वर के पक्ष में (प्रदाता) नए संदेशों की जांच करने और बैज के रूप में नंबर भेजने का विचार किया।

प्रश्न यह है: बैज मूल्य सर्वर की तरफ की गणना किए बिना और बाद में इसे एपीएसएन में पुश पेलोड के हिस्से के रूप में भेजने के बिना एप्लिकेशन के बैज को स्वतः बढ़ाने के लिए कोई तरीका है?

शायद JSON बैज फ़ील्ड में कुछ चर जैसे "++" या उस तरह कुछ भेजने के लिए एक तरीका है। उसके लिए कोई हैक? या मुझे गिनती प्रणाली सर्वर-पक्ष के साथ जाने की ज़रूरत है ??

+2

द्वारा बिल्ला गणना ऑटो-वेतन वृद्धि अभी भी संभव नहीं है? मैं [AcaniChat] (https://github.com/acani/AcaniChat) नामक एक चैट ऐप बना रहा हूं। आईफोन के मूल संदेश ऐप की तरह, बैज गिनती नए (अपठित) संदेशों की संख्या के बराबर होती है, और आपको प्रत्येक नए संदेश के लिए पुश अधिसूचना मिलती है। इसलिए, यदि ऑटो-वृद्धि संभव थी, तो मुझे सर्वर पर प्रत्येक डिवाइस टोकन की बैज गिनती को स्टोर करने की आवश्यकता नहीं होगी। – ma11hew28

उत्तर

28

नहीं, आपको इसे सर्वर की तरफ ट्रैक करना होगा। यदि आप बैज के लिए कोई मान शामिल नहीं करते हैं, तो यह पूरी तरह से हटा दिया जाएगा।

बेशक यह केवल तभी होता है जब उपयोगकर्ता अधिसूचना प्राप्त करता है और ऐप नहीं चल रहा है/वे इसे लॉन्च नहीं करना चुनते हैं। यदि उपयोगकर्ता ऐप लॉन्च करता है या पहले से ही इसे चला रहा है तो आप बढ़ने के संबंध में जो भी चाहें कर सकते हैं।

अद्यतन मार्च 2014: संभावित अपडेट के लिए टिप्पणियां देखें। मैंने कई वर्षों में धक्का नहीं दिया है इसलिए मैं इसे स्वयं सत्यापित करने में सक्षम नहीं हूं।

+0

यही मैंने सोचा था। मैंने पहले से ही एक सिस्टम के बारे में सोचा था, लेकिन यह मेरे दिमाग को पार कर गया कि ऐप्पल इस बार थोड़ा सा स्मार्ट हो सकता है - और खुद के बारे में सोचा। इसे साफ़ करने के लिए धन्यवाद। – natanavra

+1

क्यों नहीं यह कैशिंग (जैसे NSUserDefaults) – msk

+2

@MSK कैसे इस समस्या को हल क्लाइंट पर बिल्ला नंबर बनाए रखने करता है के द्वारा अनुप्रयोग में बिल्ला नंबर को बनाए रखने? वैसे भी, तुम सिर्फ '[UIApplication sharedApplication] .applicationIconBadgeNumber' अगर आप बिल्ला नंबर प्राप्त करना चाहता था, यह' NSUserDefaults' में कैश करने के लिए कोई जरूरत नहीं है हो सकता है। – ma11hew28

1

यह संभव है लेकिन एक व्यापार बंद है।

पुश पेलोड के हिस्से के रूप में आप हमेशा अपठित कुल जेएसओएन मान के रूप में अपठित कुल भेज सकते हैं (पुश अनदेखा करता है जो इसे स्पष्ट रूप से समझ में नहीं आता है)। एक बार जब उपयोगकर्ता ऐप खोलता है, तो मान को पढ़ें और बैज को स्वचालित रूप से UIAplplication's applicationIconBadgeNumber संपत्ति के माध्यम से प्रोग्राम करें।

इस तरह से करने में समस्या यह है कि पुश बैज मान समायोजित करता है भले ही उपयोगकर्ता ऐप नहीं खोलता है (यानी जब उन्हें नोटिस मिलता है और उपयोगकर्ता 'व्यू' के बजाय 'रद्द करें' हिट करता है)। उन मामलों में आपका बैज नहीं बदलेगा, लेकिन जैसे ही वे ऐप चलाते हैं (यदि वे 'व्यू' दबाते हैं) तो आपका ऐप इसे सही सेट कर सकता है।

+1

यह वास्तव में एक जवाब नहीं है ... आपने कहा कि मैं इसे जेएसओएन के पेलोड के रूप में जोड़ सकता हूं, लेकिन ऐसा कुछ है जो मैं पहले से कर सकता हूं, मेरा मतलब है - क्या प्रत्येक धक्का के साथ बैज को स्वतः बढ़ाने के लिए कोई तरीका है ... उत्तर , ऐसा प्रतीत होता है - नहीं है। मैं सर्वर पर प्रबंधन करने के लिए, और फिर ए पी एस के रूप में एक नंबर भेज => बिल्ला ... बिल्ला reseting अपने आप जब भी उपयोगकर्ता आवेदन में हो जाता है, और यह भी सर्वर पर काउंटर reseting होगा जब भी उपयोगकर्ता डेटा को हासिल करेगा । वैसे भी धन्यवाद। – natanavra

+0

यहां दूसरा मुद्दा यह है कि उपयोगकर्ता ऐप पर जाने के बाद बैज गिनती को अपडेट करके, हम कम सक्रिय उपयोगकर्ताओं को शामिल करने का अवसर खो देते हैं। – Zorayr

1

आप ऐप 42 बैकएंड सेवाओं को आजमा सकते हैं जो सर्वर पक्ष पर बनाए गए पुश बैज गिनती की ऑटो वृद्धि प्रदान करते हैं। अधिक जानकारी के लिए आप blog के लिंक का अनुसरण कर सकते हैं। यहां ब्लॉगपोस्ट सहमति है:

यहां कुछ उपयोग मामले हैं जिन्हें App42 पुश अधिसूचना में ऑटो वृद्धिशील बैज गिनती के माध्यम से हासिल किया जा सकता है।

1 तक पुश बैज की ऑटो वृद्धि के लिए, आपको नीचे दिखाए गए पुश संदेश भेजने की आवश्यकता है।

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
string message= "{'badge':'increment'}"; 
pushNotificationService.SendPushMessageToUser(userName,message, new UnityCallBack()) 

एनबी: नमूना समझाया गया एकता/सी # के लिए है लेकिन उसी प्रक्रिया को दूसरों पर भी लागू किया जा सकता है।

यदि आप बैज के लिए किसी भी संख्या को निर्धारित करना चाहते हैं या बैज गिनती को शून्य में कम करना चाहते हैं, तो आप इस विधि का उपयोग गिनती को अपडेट करने के लिए कर सकते हैं क्योंकि अधिसूचना उपयोगकर्ता द्वारा क्लिक की जाती है। इस मामले में आपको UpdatePushBadgeforDevice या UpdatePushBadgeforUser को कॉल करना होगा।

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
string deviceToken = "DeviceToken"; 
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforDevice(userName, deviceToken, badges, new UnityCallBack()); 

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforUser(userName, badges, new UnityCallBack()); 

updatePushBadgeforDevice - इस विधि को उपयोगकर्ता द्वारा पंजीकृत एक विशेष उपकरण की धक्का बिल्ला गिनती अद्यतन करने के लिए प्रयोग किया जाता है।

updatePushBadgeforUser - इस विधि का उपयोग उपयोगकर्ता द्वारा प्राप्त किए जाने वाले सभी उपकरणों की पुश बैज गिनती को अद्यतन करने के लिए किया जाता है। इस मामले में, हम मानते हैं कि उपयोगकर्ता के नाम पर पंजीकृत कई डिवाइस हैं।

-10

बिल्ला गिनती के लिए +1 भेजें, जो होगा ऑटो वेतन वृद्धि 1.

+0

क्या यह एपीएनएस प्रोटोकॉल में कुछ नया है? क्या आपने इसे स्वयं परीक्षण किया? – natanavra

+2

यह बिल्कुल काम नहीं करता है। बैज को +1 पर सेट करते समय, अधिसूचना इसे डिवाइस पर भी नहीं बनाती है। –

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