2012-03-24 9 views
44

मैंने एक एंड्रॉइड ऐप बनाया है जो अब Play Market पर है। समय-समय पर, मैं इसे अद्यतन करता हूं, और मैं उपयोगकर्ताओं को यह जानना चाहता हूं कि एक नया संस्करण उपलब्ध है।एंड्रॉइड ऐप अपडेट के बारे में उपयोगकर्ताओं को कैसे सूचित करें?

मैं ऐप के उपयोगकर्ताओं को अधिसूचना अद्यतन कैसे भेज सकता हूं?

+2

जहां तक ​​मैंने इसे देखा है, यह आम तौर पर इन-एप किया जाता है, यानी। जब ऐप लॉन्च होता है तो यह एक नए संस्करण के लिए जांच करता है और उपयोगकर्ता को अद्यतन करने के लिए एक अधिसूचना प्रदर्शित करता है। –

+0

यह ओपन सोर्स गिटहब प्रोजेक्ट (MAHANDroidUpdater) पूरी तरह अद्यतन कार्यक्षमता प्रदान कर रहा है। कोशिश करो, बहुत आसान है। https://github.com/hummatli/MAHAndroidUpdater –

उत्तर

59

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

आपके पास Google Play आराम करना चाहिए सिर्फ APK अद्यतन करने के लिए उच्च versionCode साथ की जरूरत है और।

+3

मैं एंड्रॉइड बदलता हूं: प्रत्येक बार जब मैं कोड संशोधित करता हूं, तो AndroidManifest.xml फ़ाइल में संस्करण कोड विशेषता है, लेकिन मुझे अपने फोन पर कोई नोटिस नहीं मिलता है। –

+4

@doledoug, सुनिश्चित करें 1. Google Play में अधिसूचनाएं - सेटिंग्स का पता लगाया गया है। 2. आपके फोन सेटिंग्स में पृष्ठभूमि की तारीख - खाते और सिंक का पता लगाया जाता है। – yorkw

+0

@doledoug: आपको तुरंत अधिसूचना नहीं मिल सकती क्योंकि यह एंड्रॉइड प्ले पर निर्भर करता है। सुनिश्चित करें कि आप इंटरनेट से जुड़े हुए हैं। – PravinCG

4

इस का उपयोग करें: https://www.push-link.com/

+0

यह दृष्टिकोण मेरे ऐप में विज्ञापन या कुछ और नहीं जोड़ता है? –

+0

जहां तक ​​मुझे पता है कि विज्ञापन नहीं होंगे –

8

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

यदि आप चाहते हैं कि उपयोगकर्ता को ऐप शुरू होने पर अपडेट के बारे में जानना है, तो बस एक यूटिलिटी विधि बनाएं (onCreate अपनी मुख्य/पहली गतिविधि के तरीके के अंदर) जो जांचता है कि Google Play में कोई नया संस्करण उपलब्ध है या नहीं। यदि ऐसा होता है, तो प्रासंगिक संदेश के साथ एक अलर्ट संवाद प्रदर्शित करें और एक ऐसा इरादा जो Google Play में आपका ऐप खोलता है जब उपयोगकर्ता अलर्ट संवाद के सकारात्मक बटन पर क्लिक करता है। यदि आप नियमित रूप से ऐप अपडेट कर रहे हैं, तो उपयोगकर्ता हर बार ऐप शुरू होने पर इस चेतावनी संवाद को जारी रखेगा और इसलिए, परेशान हो सकता है। इस प्रकार, यह सबसे अच्छा तरीका नहीं है।

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

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

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

मेरी राय में, आपको PreferenceActivity बनाना चाहिए जिसमें "नियमित रूप से अपडेट की जांच करें" जैसी प्राथमिकता हो, जिसे आपके ऐप के भीतर से सेट किया जा सकता है। यदि यह सेट है, तो अपनी सेवा में जरूरी काम करें। उपयोगकर्ता को उस अवधि का चयन करने का विकल्प भी दे सकता है जिसके बाद सेवा अद्यतन के लिए जांच करेगी।

मुझे आशा है कि इससे मदद मिलती है!

+13

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

+2

आप कैसे सुझाव देते हैं कि किसी को यह जांचना चाहिए कि "Google Play में कोई नया संस्करण उपलब्ध है या नहीं" विश्वसनीय। जहां तक ​​मेरा ज्ञान एपीआई एक अनौपचारिक संस्करण को छोड़कर सार्वजनिक नहीं है? –

1

पता नहीं है कि आप अतिरिक्त मील चलना चाहते हैं या नहीं। आप google appengine को आज़मा सकते हैं, जो आपके ऐप के लिए संस्करण संख्या प्रदान करता है और एप्लिकेशन को लॉन्च होने पर एक नया संस्करण देखने के लिए एंड्रॉइड ऐप को एपेंजिन की जांच करने देता है। इस तरह, इससे कोई फर्क नहीं पड़ता कि आपका ऐप Google play market में है और न ही अमेज़ॅन ऐप स्टोर है और न ही अगर यह उन दोनों के बिना सिडलोडिंग के माध्यम से फोन पर स्थापित है। जेसन में अपने एप्लिकेशन संस्करण की सेवा के लिए ऐपेंगिन सेट करना बहुत मुश्किल नहीं है। अपने ऐप संस्करण नाम के साथ "हैलो वर्ल्ड" स्ट्रिंग को बदलें ...

3

Google Play आपके उपयोगकर्ताओं को सूचित करेगा कि ऐप में अधिसूचना बार के माध्यम से एक अपडेट है।

यदि आप स्वयं एक अधिसूचना प्रणाली सेट अप करते हैं, तो संभावित परिणाम यह होगा कि, हालांकि उपयोगकर्ता को जल्द ही अपडेट की अधिसूचना दी जाती है, जब वह अपडेट इंस्टॉल करने के लिए Google Play पर जाता है तो यह अभी तक उपलब्ध नहीं होगा। ऐसा इसलिए है क्योंकि जब तक आप ऐप/अपडेट "प्रकाशित" करते हैं और उस समय तक प्ले पर दिखाई देता है तब तक एक अंतराल होता है। अपने उपयोगकर्ताओं को यह बताते हुए कि अद्यतन अनुपलब्ध होने पर एक अद्यतन है, केवल भ्रम और निराशा का कारण बन जाएगा।

मेरी सलाह: Google की अद्यतन अधिसूचना प्रणाली के साथ चिपके रहें और उपयोगकर्ताओं को जल्द से जल्द 15 मिनट अपडेट करने की कोशिश करने की चिंता न करें।

+1

मुझे Google Play से एक अधिसूचना नहीं मिलती है जब मैं अपनी एपीके-फाइल को एक नए संस्करण कोड के साथ अपडेट करता हूं ... समझ में नहीं आ रहा है, मैंने सभी सेटिंग्स आदि की जांच क्यों की है। – Ted

+0

शायद आपने प्रकट करने के लिए कुछ अनुमतियां जोड़ दी हैं? – AndroidGecko

1

यह एक साधारण webservice का उपयोग कर सकता है बस यह एक तरीका है।

यानी, जब कभी भी ऐप लॉन्च ने उस ऐप लॉन्च को उपयोगकर्ता ऐप के वर्तमान संस्करण के साथ मारा और सर्वर पर आपको यह जांचने की आवश्यकता है कि कोई नया संस्करण उपलब्ध है या नहीं (ऐप का नवीनतम संस्करण बनाए रखना चाहिए) और भेजना उपयोगकर्ता के लिए इसी प्रतिक्रिया। यदि कोई नया संस्करण उपलब्ध है तो उपयोगकर्ता को एप्लिकेशन का नवीनतम संस्करण डाउनलोड करने के लिए संकेत दें और यदि कोई नवीनतम संस्करण उपलब्ध नहीं है तो उपयोगकर्ता को जारी रखने दें।

आशा है कि कम से कम कुछ आपके लिए उपयोगी होना चाहिए।

-6
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
android:versionCode="1.5b" 
android:versionName="1.5b"> 

आप फिर से अपलोड करते हैं, Google Play पर अपने एप्लिकेशन हैं कि ये दोनों गुण पिछले अपलोड बदल दिया गया है, क्योंकि Google Play स्वचालित रूप से उपयोगकर्ताओं को, जो आपका ऐप्लिकेशन इंस्टॉल करने के लिए सूचनाएं भेजेगा। यह AndroidManifest फ़ाइल है।

+1

संस्करण कोड केवल पूर्णांक मान स्वीकार करता है –

2

कुछ लोग अपडेट के अपने उपयोगकर्ताओं को सूचित करने के लिए एंड्रॉइड Cloud-to-Device Messaging (C2DM) का उपयोग करते हैं। मुझे नहीं लगता कि मैं परेशान हूं, क्योंकि मुझे लगता है कि Google Play पहले से ही अपडेट के बारे में मुझे सूचित करने का एक अच्छा काम करता है, और सी 2 डीएम लागू करने से ऐप लिखने के लिए एक नया आयाम जोड़ता है (क्योंकि इसे सर्वर घटक की आवश्यकता होती है)। लेकिन हो सकता है कि आप Google Play से प्राप्त होने से अपने उपयोगकर्ताओं को एक समृद्ध अद्यतन अधिसूचना प्रदान करना चाहें।

9

यदि वह Google Play द्वारा नए संस्करणों पर अधिसूचित होना चाहता है तो यह प्रत्येक फोन के मालिक पर निर्भर है, और यह डिफ़ॉल्ट रूप से सक्षम होने पर प्रत्येक फोन के निर्माता पर निर्भर करता है।

यदि आप ऐसी परिस्थिति में हैं जहां उपयोगकर्ता को नए संस्करण में अपडेट करने की आवश्यकता है तो प्रोटोकॉल के कुछ रूपों के साथ संगत होने के लिए या आपके पास समान समान उपयोग केस है जहां आपके पास कहीं सर्वर घटक है, तो हो सकता है कि आप नवीनतम संस्करण क्या है इसके बारे में जानकारी के आधार पर UI में संभावित संस्करण संघर्ष के उपयोगकर्ता को सूचित करना चाहते हैं।

यह जानकारी सीधे Google play से पकड़ ली जा सकती है, हालांकि @Yahel this question में इंगित किया गया है Google play कोई आधिकारिक एपीआई वाला बंद सिस्टम है, और आपको अप्रत्याशित अनियंत्रित API पर भरोसा करने की आवश्यकता हो सकती है। एक unofficial API library here है।

यह केवल एक विकल्प छोड़ देता है, जो इस जानकारी को आपके सर्वर पर रखना है। यदि आपके पास पहले से ही एक सर्वरसाइड है तो यह मामूली हो सकता है। बस नवीनतम संस्करण को एक एक्सएमएल फ़ाइल में डालें और अपने कोड से नियमित अंतराल पर पुनः प्रयास करें। यदि संस्करण कोड पुराना है, तो अपने यूआई में अधिसूचना को ट्रिगर करें। ऐसा करने के लिए यहां एक example implementation है।

मुझे आशा है कि यह था उपयोगी :-)

0

आम तौर पर जब आप Google से एक नया आवेदन अधिकांश उपयोगकर्ताओं को एक अद्यतन के बारे में कोई सूचना मिलती है खेलने अपलोड करें, कुछ एप्लिकेशन स्वचालित रूप से अपने डिवाइस पर डाउनलोड, सेटिंग के आधार पर होगा उनके पास है। यदि आप गंभीरता से अपने ऐप से अपडेट करने के लिए कहने के लिए अधिसूचना करना चाहते हैं (ताकि सभी को अधिसूचना मिल सके, जो भी उनकी Google Play सेटिंग्स हों, तो आपको एक वेब सेवा बनाना होगा जो नवीनतम संस्करण की संख्या लौटाएगा। इसके बाद आप अपने ऐप के अंदर तुलना कर सकते हैं और अधिसूचना पोस्ट कर सकते हैं। आप Google ऐप इंजन (https://developers.google.com/appengine/) का उपयोग कर सकते हैं क्योंकि यह ग्रहण और जावा के साथ काम करता है, जो आपके पास पहले से है। मैं इस दृष्टिकोण की अनुशंसा नहीं करता क्योंकि यह बहुत सारे काम करता है आप कुछ है कि अधिकांश उपयोगकर्ताओं को पहले से ही मिल गया है प्रदान करने के लिए।

1

दो मॉडल है कि मूल रूप से इस मुद्दे से निपटने के लिए किया जाता है।

Pull based 
Push Based 

यह विशिष्ट प्रणाली के आर्किटेक्चर या डिज़ाइन पर निर्भर करता है जो निर्धारित करता है कि पुल आधारित या पुश तंत्र का उपयोग किया जाता है या नहीं।

पुल आधारित मॉडल के लिए आप केवल आवेदन के नए संस्करण के संबंध में संबंधित सर्वर को एक http अनुरोध करते हैं। मौजूदा एप्लिकेशन संस्करण संख्या को एंड्रॉइड एप्लिकेशन में SQLLite में सहेजा जा सकता है। यह सर्वर पर दिया जा सकता है और सर्वर पर इसके खिलाफ नए संस्करण की जांच की जा सकती है। जिसका विवरण

धक्का तंत्र के लिए आप C2DM पुश अधिसूचना सेवा का उपयोग कर सकते .. http://code.google.com/android/c2dm/

2

में दिया जाता है @ Davek804 का जवाब ऊपर गलत है। एंड्रॉइड: वर्जनकोड एक पूर्णांक मान है जो अन्य संस्करणों के सापेक्ष, एप्लिकेशन कोड के संस्करण का प्रतिनिधित्व करता है, इसलिए "1.5 बी" का उपयोग गलत है। इसके बजाय "15" (या "150") का उपयोग करें

1

आपकी समस्या के लिए एक अच्छा समाधान मिला: मान लें कि आप ऐप शुरू करने पर मैन्युअल रूप से संस्करण अपडेट की जांच करना चाहते हैं और नए अपडेट के लिए अपने उपयोगकर्ताओं को सूचित करें।

चरण 1: Download android-market-api (नहीं .jar फ़ाइल, पूर्ण परियोजना!)

चरण 2: आयात ग्रहण करने के बाद, अपनी गतिविधि में निम्न कोड लिखें: अब

MarketService ms = new MarketService(activity); 
ms.level(MarketService.REVISION).checkVersion(); 

, हमें MarketService.java को संशोधित करने की आवश्यकता है, क्योंकि ऐसा लगता है कि यह टूटा हुआ है।

चरण 3: कॉलबैक विधि को फिर से लिखने और निम्न विधियों

protected void callback(String url, JSONObject jo, AjaxStatus status){  
     if(jo == null) return; 
     String googlePlayversion = jo.optString("version", "0"); 
     String smartphone_version = ""; 

     PackageInfo pInfo; 
     try { 
      pInfo = act.getPackageManager().getPackageInfo(act.getPackageName(), 0); 
      smartphone_version = pInfo.versionName; 
     } catch (NameNotFoundException e) {} 
     boolean new_version_avaible = compare(smartphone_version, googlePlayversion); 
     if(new_version_avaible){ 
      showUpdateDialog(jo); 
     } 
    } 

    private static boolean compare(String v1, String v2) { 
     String s1 = normalisedVersion(v1); 
     String s2 = normalisedVersion(v2); 
     int cmp = s1.compareTo(s2); 
     String cmpStr = cmp < 0 ? "<" : cmp > 0 ? ">" : "=="; 
     System.out.printf("result: "+"'%s' %s '%s'%n", v1, cmpStr, v2); 
     if(cmpStr.contains("<")){ 
      return true; 
     } 
     if(cmpStr.contains(">")||cmpStr.contains("==")){ 
      return false; 
     } 
     return false; 
    } 

    public static String normalisedVersion(String version) { 
     return normalisedVersion(version, ".", 4); 
    } 

    public static String normalisedVersion(String version, String sep, int maxWidth) { 
     String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version); 
     StringBuilder sb = new StringBuilder(); 
     for (String s : split) { 
      sb.append(String.format("%" + maxWidth + 's', s)); 
     } 
     return sb.toString(); 
    } 

आप परीक्षण करते हैं, अपने स्थानीय एक से एक उच्च संस्करण के लिए googlePlayversion स्ट्रिंग को संशोधित करना चाहते हैं जोड़ें।

स्रोत तुलना विधि मैं प्रयोग किया जाता How do you compare two version Strings in Java?

+0

संस्करण नामों की तुलना क्यों करें जब आप सीधे संस्करण कोड की तुलना कर सकते हैं? – ferow2k

2

से भी संस्करण की जांच करने और एप्लिकेशन अधिसूचना में उपयोगकर्ता दे या आप में से पहले कनेक्शन तय कर सकें कि जब आप जबरदस्ती आवेदन अद्यतन करना चाहते लिए एक बहुत अच्छा दृष्टिकोण नहीं है है सर्वर के साथ आपका ऐप। पहले अनुरोध की प्रतिक्रिया में आप अपने सर्वर पर संग्रहीत ऐप का वर्तमान संस्करण भेज सकते हैं और फिर क्लाइंट एंड पर आप उचित कार्रवाई कर सकते हैं। इस दृष्टिकोण के लाभ-
1-संस्करण संख्या के लिए कोई अतिरिक्त अनुरोध नहीं।
2-यह भी लागू होता है यदि आप Google playstore के अलावा अन्य ऐप डाउनलोड कर रहे हैं।
3- यदि आप अपने ऐप एक्स-ट्रांजैक्शन के विशेष ऑपरेशन पर संस्करण देखना चाहते हैं तो आप इस विचार का भी उपयोग कर सकते हैं (यदि आप एक नया भुगतान गेटवे जोड़ते हैं।)

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