नया संस्करण उपलब्ध होने पर एंड्रॉइड ऐप का फोर्स अपडेट


100

मेरे पास Google Play Store में एक ऐप है। जब एक अपडेट संस्करण उपलब्ध होता है, तो पुराना संस्करण अनुपयोगी हो जाएगा - अर्थात, यदि उपयोगकर्ता ऐप को अपडेट नहीं करते हैं, तो वे ऐप में प्रवेश नहीं करते हैं। नया संस्करण उपलब्ध होने पर मैं उपयोगकर्ताओं को ऐप को अपडेट करने के लिए कैसे मजबूर कर सकता हूं?


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

जवाबों:


99

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

वर्जनचेक एपीआई:

अनुरोध पैरामीटर:

  • int appVersion

प्रतिक्रिया

  1. boolean forceUpgrade
  2. boolean recommendUpgrade

जब आपका ऐप शुरू होता है, तो आप इस एपीआई को कॉल कर सकते हैं जो वर्तमान ऐप संस्करण में पास होता है, और संस्करण एपीआई कॉल की प्रतिक्रिया की जांच करें।

यदि forceUpgradeहै true, तो उपयोगकर्ता को ऐप छोड़ने के विकल्प के साथ एक पॉपअप संवाद दिखाएं, या ऐप को अपग्रेड करने के लिए Google Play Store पर जाएं।

यदि recommendUpgradeहै true, तो अपडेट करने या ऐप का उपयोग जारी रखने के लिए विकल्पों के साथ पॉप-अप संवाद दिखाएं।

यहां तक ​​कि जगह में इस मजबूर उन्नयन क्षमता के साथ, आपको पुराने संस्करणों का समर्थन करना जारी रखना चाहिए, जब तक कि बिल्कुल आवश्यक न हो।


क्या आप ऐप को शुरू करने और सिफारिश करने के लिए पॉपअप हर बार दिखाएगा? (UX के दृष्टिकोण से) या बस एक बार पॉपअप दिखाएं और यदि उपयोगकर्ता को अपग्रेड करने के लिए गिरावट आती है तो फिर से न दिखाएं।
अनीश

8
अनुशंसित अपग्रेड के लिए, मुझे लगता है कि यदि उपयोगकर्ता ने मना कर दिया तो आपको फिर से नहीं दिखाना चाहिए। आप इसे "हर बार एक बार उपयोगकर्ता द्वारा ऐप खोले जाने" के लिए भी दिखा सकते हैं। आप स्वयं n मान तय कर सकते हैं और उस पर अमल कर सकते हैं।
माइकल

3
एक बेहतर समाधान imo सभी एपीआई कॉल के हेडर में व्यवस्थित रूप से ऐप के संस्करण को पारित करने के लिए है, और यदि संस्करण अप्रचलित है, तो एपीआई के पास एक विशिष्ट स्थिति कोड है। और फिर इसे ऐप के अंदर संभाल लें। यह इस चेक के लिए एक और समर्पित एपीआई कॉल करने से बेहतर है, और इस एपीआई कॉल को ऐप / सेवा के अंदर कब / कहां होना चाहिए, यह पता लगाने के लिए।
राफेल सी

@RaphaelC यह वास्तव में आपके सर्वर साइड कार्यान्वयन पर निर्भर करता है। यह भी एक फिल्टर को जोड़ने के लिए बिल्कुल सही नहीं है जो कुछ स्थितियों में सभी एपीआई पर संस्करण की जांच करता है।
सितम्बर GH

4
@SepGH चीजें तब से बदल गई हैं, और एंड्रॉइड अब एक एपीआई प्रदान करता है, जिसका उपयोग करके आप उपयोगकर्ता को अपग्रेड करने के लिए बाध्य कर सकते हैं और यदि वह एक न्यूनतम संस्करण में अपग्रेड नहीं करता है तो ऐप का उपयोग जारी रखने से रोक सकता है: developer.android.com/guide/ ऐप-बंडल / इन-ऐप-अपडेट
राफेल सी

55

इसे आज़माएं: सबसे पहले आपको playstore लिंक पर एक अनुरोध कॉल करने की आवश्यकता है, वहां से वर्तमान संस्करण लाएं और फिर अपने वर्तमान संस्करण के साथ तुलना करें।

String currentVersion, latestVersion;
Dialog dialog;
private void getCurrentVersion(){
 PackageManager pm = this.getPackageManager();
        PackageInfo pInfo = null;

        try {
            pInfo =  pm.getPackageInfo(this.getPackageName(),0);

        } catch (PackageManager.NameNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        currentVersion = pInfo.versionName;

   new GetLatestVersion().execute();

}

private class GetLatestVersion extends AsyncTask<String, String, JSONObject> {

        private ProgressDialog progressDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(String... params) {
            try {
//It retrieves the latest version by scraping the content of current version from play store at runtime
                Document doc = Jsoup.connect(urlOfAppFromPlayStore).get();
                latestVersion = doc.getElementsByClass("htlgb").get(6).text();

            }catch (Exception e){
                e.printStackTrace();

            }

            return new JSONObject();
        }

        @Override
        protected void onPostExecute(JSONObject jsonObject) {
            if(latestVersion!=null) {
                if (!currentVersion.equalsIgnoreCase(latestVersion)){
                   if(!isFinishing()){ //This would help to prevent Error : BinderProxy@45d459c0 is not valid; is your activity running? error
                    showUpdateDialog();
                    }
                }
            }
            else
                background.start();
            super.onPostExecute(jsonObject);
        }
    }

private void showUpdateDialog(){
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("A New Update is Available");
        builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse
                        ("market://details?id=yourAppPackageName")));
                dialog.dismiss();
            }
        });

        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                background.start();
            }
        });

        builder.setCancelable(false);
        dialog = builder.show();
    }

1
मुझे लगता है कि यह बाहरी पुस्तकालय JSoup जोड़ने के लिए उपयोग की आवश्यकता होगी?
अब्राहम फिलिप

1
हाँ, लेकिन यह html div पेज पाने के लिए होगा। मेरे कहने का मतलब यह है कि, आपको इस कार्यक्षमता को प्राप्त करने के लिए किसी भी तीसरे पक्ष के पुस्तकालय का उपयोग करने की आवश्यकता नहीं हो सकती है, यदि आप उस HTML तत्व को JSoup के बिना परिमार्जन कर सकते हैं, फिर भी यह काम करेगा
AshuKingSharma

1
क्या होगा अगर वे आइटमप्रॉप मूल्य बदलते हैं ??
असोक बज़

1
यदि वे आइटमप्रॉप वैल्यू को बदलते हैं, तो यह मेरे ऐप्स को भी प्रभावित करेगा, मैं अपने उत्तर को तुरंत समर्थन करने के लिए संपादित करूंगा, इसलिए तब तक कोई चिंता नहीं है :)
AshuKingSharma

नाइस सेटचैनबल (झूठा)
काई वांग

46

जैसे ही कोई नया संस्करण सामने आता है, आपको पुराने संस्करण का समर्थन नहीं करना चाहिए। यह एक भयानक उपयोगकर्ता अनुभव के परिणामस्वरूप होगा। मुझे अस्तित्व में किसी भी सॉफ़्टवेयर विक्रेता का पता नहीं है जो अच्छे कारण के लिए ऐसा करता है।

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

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


2
@ आश्रित यदि यह या कोई उत्तर आपके प्रश्न को हल करता है, तो कृपया चेक-मार्क पर क्लिक करके इसे स्वीकार करने पर विचार करें। यह व्यापक समुदाय को इंगित करता है कि आपने एक समाधान ढूंढ लिया है और उत्तरदाता और अपने आप को कुछ प्रतिष्ठा देता है। ऐसा करने की कोई बाध्यता नहीं है।
सूफियान

इसका उत्तर यह है कि आप कितने सॉफ्टवेयर विक्रेताओं को अस्तित्व में रखते हैं। क्या आप इसकी मात्रा निर्धारित कर सकते हैं?
लो मोर्डा

1
क्या ऐप स्टोर या प्ले स्टोर से वर्तमान ऐप संस्करण प्राप्त करना संभव है? या क्या मुझे अपने सर्वर में नवीनतम एप्लिकेशन संस्करण रखने की आवश्यकता है? क्योंकि अभी मेरे पास नवीनतम ऐप संस्करण को वापस करने के लिए मेरे सर्वर में सर्विस कॉल है, लेकिन हर बार ऐप को प्रकाशित करते समय सर्वर को अपडेट करने की आवश्यकता होती है। इसलिए क्या संबंधित स्टोर से वर्तमान संस्करण संख्या प्राप्त करना संभव है?
सुभा

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

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

27

Google टीम से समाधान

एंड्रॉइड 5.0 से शुरू करना जो नए Google Play In App अपडेट तंत्र के माध्यम से आसानी से प्राप्त हो सकता है। आवश्यकताओं को संस्करण 1.5.0+ की प्ले कोर लाइब्रेरी की आवश्यकता है और एप बंडलों के उपयोग को एप्स्क के बजाए उपयोग करना चाहिए।

लाइब्रेरी आपको अपडेट के बारे में उपयोगकर्ताओं को सूचित करने के लिए 2 अलग-अलग तरीके प्रदान करती है:

  1. लचीले, जब उपयोगकर्ता पृष्ठभूमि में अपडेट किए जाने के दौरान ऐप का उपयोग जारी रख सकते हैं।

  2. तत्काल - अवरुद्ध स्क्रीन जो किसी उपयोगकर्ता को ऐप में प्रवेश करने की अनुमति नहीं देती है जब तक वे इसे अपडेट नहीं करते हैं।

इसे लागू करने के लिए अगले चरण हैं:

  1. अद्यतन उपलब्धता के लिए जाँच करें
  2. अपडेट शुरू करें
  3. अद्यतन स्थिति के लिए कॉलबैक प्राप्त करें
  4. अपडेट संभालें

इन सभी चरणों को आधिकारिक साइट पर विवरण में वर्णित किया गया है: https://developer.android.com/guide/app-bundle/in-app-updates


16

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

मैं बस आगे क्या करना है के लिए कोड जोड़ना चाहता था। यहां बताया गया है कि आप किस तरह से Google Play Intent को लॉन्च करते हैं और उपयोगकर्ता को प्रॉम्प्ट करने के बाद उन्हें स्टोर में अपने नए संस्करण में ले जाते हैं।

public class UpgradeActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upgrade);
        final String appName = "com.appname";
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+appName)));

            }
        });
    }
}

आपको अपने डिज़ाइन पर फिर से विचार करना चाहिए यदि आपको प्रत्येक रिलीज़ पर अपग्रेड को मजबूर करना है।


11

Google ने इन-ऐप अपडेट लिब को पेश किया, ( https://developer.android.com/guide/app-bundle/in-app-updates ) यह लॉलीपॉप + पर काम करता है और आपको उपयोगकर्ता को एक अच्छा के साथ अपडेट के लिए पूछने की क्षमता देता है संवाद (फ्लेक्सिबल) या अनिवार्य पूर्ण-स्क्रीन संदेश (IMMEDIATE) के साथ।

आपको बाद वाले को लागू करने की आवश्यकता है। यहाँ है कि यह कैसा दिखेगा: यहां छवि विवरण दर्ज करें

मैंने इस उत्तर में सभी कोड को कवर किया: https://stackoverflow.com/a/56808529/5502121


1
यह सबसे अच्छा जवाब है!
फाल्दीविया

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

6

मैं इसके लिए Firebase की रिमोट कॉन्फिगरेशन कार्यक्षमता की जाँच करने की अत्यधिक सलाह देता हूँ ।

मैंने इसे एक पैरामीटर - app_version_enabled - एक शर्त "अक्षम एंड्रॉइड वर्जन" के साथ लागू किया है जो इस तरह दिखता है:

applies if App ID == com.example.myapp and App version regular expression ^(5.6.1|5.4.2) 

पैरामीटर के लिए डिफ़ॉल्ट "सत्य" है, लेकिन अक्षम एंड्रॉइड वर्जन में गलत का मान है। विकलांग Android संस्करणों के लिए मेरे रेगेक्स में, आप |{version name}उन कोष्ठकों के अंदर किसी अन्य के साथ अधिक अक्षम संस्करण जोड़ सकते हैं ।

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


यह एक बहुत अच्छा विकल्प है। "अक्षम" संस्करणों के सबसेट को निर्दिष्ट करके, आप जल्दी से अपनी सुरक्षा कर सकते हैं, एक ऐप में सुरक्षा मुद्दे या प्रमुख प्रदर्शन मुद्दे होने चाहिए। यह आपको हर संस्करण का समर्थन जारी रखने की अनुमति देता है, लेकिन आवश्यकता पड़ने पर विशिष्ट संस्करण पर प्रतिबंध लगाता है।
टेरी

6

आधिकारिक तौर पर Google इसके लिए एक Android API प्रदान करता है।

वर्तमान में एपीआई को मुट्ठी भर भागीदारों के साथ परीक्षण किया जा रहा है, और जल्द ही सभी डेवलपर्स के लिए उपलब्ध हो जाएगा।

अपडेट एपीआई अब उपलब्ध है - https://developer.android.com/guide/app-bundle/in-app-updates


2
इसे भी देखें: android-developers.googleblog.com/2018/11/…
albert c braun

1
क्या यह एपि अब उपलब्ध है?
याय्या

मैंने इसे गूगल किया और इस डेवलपर को
app

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

3

स्थानीय और खेलने की दुकान APK के संस्करण कोड की जाँच करें

try {
        versionChecker VersionChecker = new versionChecker();
        String versionUpdated = VersionChecker.execute().get().toString();
        Log.i("version code is", versionUpdated);


        PackageInfo packageInfo = null;
        try {
            packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        int version_code = packageInfo.versionCode;
        String version_name = packageInfo.versionName;
        Log.i("updated version code", String.valueOf(version_code) + "  " + version_name);
        if (version_name != versionUpdated) {
            String packageName = getApplicationContext().getPackageName();//
            UpdateMeeDialog updateMeeDialog = new UpdateMeeDialog();
            updateMeeDialog.showDialogAddRoute(MainActivity.this, packageName);
            Toast.makeText(getApplicationContext(), "please updated", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        e.getStackTrace();
    }

संस्करण की जाँच के लिए कक्षा लागू करें

class versionChecker extends AsyncTask<String, String, String> {
String newVersion;

@Override
protected String doInBackground(String... params) {

    try {
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=+YOR_PACKAGE_NAME+&hl=en")
                .timeout(30000)
                .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                .referrer("http://www.google.com")
                .get()
                .select("div[itemprop=softwareVersion]")
                .first()
                .ownText();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return newVersion;
}
}

अद्यतन के लिए डायलोब बॉक्स

public class UpdateMeeDialog {

ActivityManager am;
TextView rootName;
Context context;
Dialog dialog;
String key1,schoolId;
public void showDialogAddRoute(Activity activity, final String packageName){
    context=activity;
    dialog = new Dialog(context);

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.dialog_update);
    am = (ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE);

    Button cancelDialogue=(Button)dialog.findViewById(R.id.buttonUpdate);
    Log.i("package name",packageName);
    cancelDialogue.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(Intent.ACTION_VIEW);                
    intent.setData(Uri.parse("https://play.google.com/store/apps/details?
    id="+packageName+"&hl=en"));
            context.startActivity(intent);
        }
    });
    dialog.show();
}
}

संवाद लेआउट

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#d4e9f2">


<TextView
    android:layout_width="match_parent"
    android:layout_height="40dp"

    android:text="Please Update First..!!"
    android:textSize="20dp"
    android:textColor="#46a5df"
    android:textAlignment="center"
    android:layout_marginTop="50dp"
    android:id="@+id/textMessage"
    />
<LinearLayout
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:weightSum="1"
    android:layout_marginTop="50dp"
    android:layout_below="@+id/textMessage"
    android:layout_height="50dp">

    <Button
        android:id="@+id/buttonUpdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Update"
        android:background="#67C6F1"
        android:textAlignment="center" />
</LinearLayout>


2

उन्नयन के लिए हमारी अपनी प्रक्रिया को परिभाषित करना बेहतर है।

  1. एक वेब सेवा बनाएं जो हमारे सर्वर से ऐप (आईओएस, एंड्रॉइड) के लिए नवीनतम संस्करण प्रदान करे।
  2. या आपके द्वारा ऐप में उपयोग की जाने वाली कोई भी वेब सेवा (जैसे लॉगिन) सर्वर से नवीनतम ऐप संस्करण लौटाएगी।
  3. एक बार ऐप को # 1 या 2. से वर्जन मिल जाएगा। ऐप इसे लोकल / क्यूरेंट एपवर्जन के साथ पार करेगा। यदि अंतर है, तो हम निम्नानुसार अलर्ट दिखा सकते हैं,

Android और iOS: यदि नवीनतम एप्लिकेशन संस्करण उपलब्ध है, तो यह "अधिक सुविधाओं के साथ उपलब्ध नवीनतम संस्करण, अपग्रेड बटन पर क्लिक करने के लिए" के रूप में अलर्ट दिखाएगा। playstore / Appstore और यह नवीनतम संस्करण खोलेगा।

 --- we can do upgrade compulsory or optionally.

अपग्रेड प्रक्रिया से पहले कृपया सुनिश्चित करें कि यदि कोई db स्कीमा परिवर्तन है तो आपने उचित db माइग्रेशन प्रक्रिया को संभाला है।


1

एप्लिकेशन उपयोगकर्ता को अपडेट करने के लिए मजबूर करने के लिए यदि कोई अपडेट बाजार में उपलब्ध है, तो आपको पहले बाजार पर ऐप के संस्करण की जांच करनी चाहिए और डिवाइस पर ऐप के संस्करण के साथ तुलना करनी चाहिए। यदि वे अलग हैं, तो यह एक अद्यतन उपलब्ध हो सकता है। इस पोस्ट में मैंने डिवाइस पर बाजार के वर्तमान संस्करण और वर्तमान संस्करण को प्राप्त करने के लिए कोड को लिखा और उनकी एक साथ तुलना की। मैंने यह भी दिखाया कि अपडेट संवाद कैसे दिखाया जाए और उपयोगकर्ता को अपडेट पृष्ठ पर पुनर्निर्देशित करें। कृपया इस लिंक पर जाएं : https://stackoverflow.com/a/33925032/5475941 बस यह सुनिश्चित करें कि संवाद में आप केवल उपयोगकर्ता अपडेट बटन दिखाते हैं और उसे रद्द बटन नहीं दिखाते हैं। इस मामले में वह एप्लिकेशन का उपयोग करने से पहले उसे अपडेट करने के लिए मजबूर हो जाएगा।


1

यहाँ जो निश्चित रूप से उल्लेख किया जाना चाहिए वह जल्द ही जारी किया जाने वाला इन-ऐप अपडेट एपीआई है

आपके पास इस एपीआई के साथ दो विकल्प होंगे; महत्वपूर्ण अपडेट के लिए पहला पूर्ण-स्क्रीन अनुभव है जब आप उम्मीद करते हैं कि उपयोगकर्ता तुरंत अपडेट लागू होने की प्रतीक्षा करेगा। दूसरा विकल्प एक लचीला अपडेट है, जिसका अर्थ है कि अपडेट डाउनलोड होने के दौरान उपयोगकर्ता ऐप का उपयोग कर सकता है। आप अपडेट प्रवाह को पूरी तरह से कस्टमाइज़ कर सकते हैं ताकि यह आपके ऐप के हिस्से जैसा महसूस हो।


1

एप्लिकेशन संस्करण के लिए दूरस्थ कॉन्फ़िगरेशन का उपयोग करना अच्छा है और हमेशा लॉन्च गतिविधि में जांच करें वर्तमान ऐप संस्करण दूरस्थ संस्करण के समान है या नहीं, यदि ऐप स्टोर से अपडेट के लिए बाध्य नहीं है ..

सरल तर्क खुश कोडिंग ।।

https://firebase.google.com/docs/remote-config/android


1

इससे निपटने के लिए आप Play Core लाइब्रेरी इन-ऐप अपडेट का उपयोग कर सकते हैं। आप अद्यतन उपलब्धता के लिए जाँच कर सकते हैं और अगर मूल रूप से उपलब्ध हैं तो उन्हें स्थापित कर सकते हैं।

इन-ऐप अपडेट एपीपी विस्तार फ़ाइलों (.obb फ़ाइलों) का उपयोग करने वाले ऐप्स के साथ संगत नहीं हैं। आप या तो लचीले डाउनलोड या तत्काल अपडेट के लिए जा सकते हैं जो Google Play आपके लिए अपडेट डाउनलोड और इंस्टॉल करने का ध्यान रखता है।

dependencies {
    implementation 'com.google.android.play:core:1.5.0'
    ...
}

इस उत्तर को देखें https://stackoverflow.com/a/58212818/7579041


0

आप ऐसा वर्जन नंबर के बीच मैच करके कर सकते हैं, जो एक वैरिएबल में ऐप पर रखा जाता है और इसी तरह करंट ऐप वर्जन को सर्वर साइड में रखा जाता है और हर बार जब यूजर एप को ओपन करता है तो सबसे पहले रिक्वेस्ट भेजनी चाहिए कि यह पाया जाए या नहीं मिलान कुछ भी नहीं करता है बस उपयोगकर्ता को अपने ऐप का उपयोग करने दें अन्यथा Google playstore पर आग लगा दें या अपने ऐप में एक विंडो विंडो खोलें (window.open (" https://play.google.com/store/apps/details?id= " package_name ", '_system', 'location = Yes';);) और वहां वे स्वतः ही बटन को अपडेट के लिए पूछेंगे जो कि आपके लिए Google playstore करता है यदि आपके पास स्वत: अपडेट नहीं है।


0

आप अपने उपयोगकर्ताओं को सूचित कर सकते हैं कि अपडेट करने के लिए वर्तमान ऐप का एक नया संस्करण उपलब्ध है। इसके अलावा, अगर यह स्थिति सही है, तो आप ऐप में लॉगिन ब्लॉक कर सकते हैं।

कृपया देखें कि क्या यह आपको समाधान प्रदान करता है।


0

खैर, इस समस्या के कई समाधान हो सकते हैं जैसे ऐप पेज (Google Play App पेज) से संस्करण कोड को स्क्रैप करना, आदि।

लेकिन मैं आपको अंतिम समाधान दिखाने जा रहा हूं जिसमें एक पैसा खर्च नहीं होगा और यह जादू की तरह काम करेगा।

  1. बस अपने ऐप के नवीनतम संस्करण कोड को फायरबेस रिमोट
    कॉन्फिगरेशन पैनल पर सेव करें
  2. जब भी ऐप को खोला जाए तो उस वर्जन कोड वैल्यू को लाएं
  3. एप्लिकेशन के वर्तमान संस्करण कोड के साथ इसकी तुलना करें, जिसे आप निम्नलिखित कोड द्वारा प्राप्त कर सकते हैं

    private int getCurrentVersionCode() {
    try {
        return getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return -1;

    }

यदि वर्तमान संस्करण की तुलना में भ्रूण का संस्करण कोड अधिक है, तो ऐप को अपडेट करने के लिए एक अलर्टडायलॉग दिखाएँ। अन्यथा, ऐप पहले से अपडेट है।

इसलिए, जब भी आप नया संस्करण रोल करते हैं, तो आपको उस नए संस्करण कोड को Firebase Remote config पैनल में रखना होगा

आप फायरबेस रिमोट कॉन्फिगरेशन का उपयोग करके ऐप को अपडेट करने के लिए उपयोगकर्ताओं को बाध्य करने के बारे में पूरे ट्यूटोरियल को पढ़ सकते हैं


0

Google ने Play Core लाइब्रेरी के लिए इन-ऐप अपडेट जारी किया।

मैंने आसानी से इन-ऐप अपडेट को लागू करने के लिए एक हल्के पुस्तकालय को लागू किया। आप उपयोगकर्ता को अपडेट करने के लिए बाध्य करने के बारे में एक उदाहरण निम्न लिंक पर पा सकते हैं।

https://github.com/dnKaratzas/android-inapp-update#forced-updates

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.