প্রোগ্রাম আপডেটের জন্য অ্যাপ্লিকেশন আপডেটের জন্য প্লে স্টোর পরীক্ষা করুন


95

আমি গুগল প্লে স্টোরটিতে আমার অ্যাপ্লিকেশন রেখেছি। এটি আমার সংস্থার প্রচুর গ্রাহক ইনস্টল করেছেন। অ্যাপ্লিকেশনটি কীভাবে আপগ্রেড করার উদ্দেশ্যে রয়েছে তার প্রক্রিয়াটি আমি বুঝতে পারি।

ব্যবহারকারীদের প্লেস্টোর অ্যাপে স্বতঃ আপডেট করতে চান এমন প্রতিটি অ্যাপের জন্য অটো-আপডেট চেক বাক্সটি চেক করা উচিত। তবে কিছু ব্যবহারকারীর এটি চেক করে নেওয়া হয়েছে বা এটি প্রথম স্থানে পরীক্ষা করে নেই।

আমি যে অ্যাপটি লিখেছি তা যত্ন শিল্পের জন্য এবং কেয়ারাররা হোম কেয়ার বিতরণ করতে ব্যবহার করেন। আমাদের গ্রাহকদের মধ্যে আমার 1200 কেয়ারার রয়েছে। ফোনগুলিতে স্বতন্ত্রভাবে আপডেট করার জন্য তাদের অফিসের সমস্ত কেরিয়ারকে কল করতে হবে। এটি অবশ্যই গ্রহণযোগ্য নয়।

প্লে স্টোরটিতে আমার অ্যাপ্লিকেশনটির একটি আপডেট সংস্করণ আছে কি না প্রোগ্রাম থেকে তা পরীক্ষা করার কোনও উপায় আছে?

আমার কি এমন কোড থাকতে পারে যা প্রতিবার প্লে স্টোর চেক করে এমন অ্যাপ্লিকেশনটি চালু করে? যদি কোনও আপডেট সংস্করণ থাকে তবে ব্যবহারকারীর প্লেস্টোরে পরিচালিত হতে পারে। এর অর্থ হ'ল স্বয়ংক্রিয় আপডেট চেক করা অপরিহার্য নয়।


কোনও অ্যাপ্লিকেশনটিতে কোনও আপডেট উপলব্ধ থাকলে প্লে স্টোরটি ইতিমধ্যে ব্যবহারকারীকে কোনও বিজ্ঞপ্তি চাপায় না?
নিশচাল কুরাই

4
আপনার অ্যাপ্লিকেশনটি কী আপনি লিখেছেন এমন একটি এপিআই-এর সাথে মেঘ / ইন্টারনেটের সাথে সংযুক্ত রয়েছে - যেমন আপনি কেবল একটি 'সংস্করণ' পরিবর্তনশীল থাকতে পারেন যা আপনি ম্যানুয়ালি আপডেট করতে পারেন - অ্যাপ্লিকেশনটি খোলার সময়, ক্লাউড সংস্করণ সহ স্থানীয় সংস্করণটি পরীক্ষা করুন - যদি তারা পৃথক, একটি আপডেট প্রস্তাব
gavlaaaaaaaa

আমি এটি করতে jsoup ব্যবহার করতাম, তবে এখনকার সংস্করণ ক্ষেত্রটি নিষ্কাশন করতে একটি রেইজেক্স ব্যবহার করি ।
গিজার ম্যাকনুবিন্স

উত্তর:


44

আপডেট 17 অক্টোবর 2019

https://developer.android.com/guide/app-bundle/in-app-updates

24 এপ্রিল 2019 আপডেট করুন:

অ্যান্ড্রয়েড একটি বৈশিষ্ট্য ঘোষণা করেছে যা সম্ভবত এই সমস্যাটি সমাধান করবে। অ্যাপ-এ আপডেট আপডেটগুলি ব্যবহার করুন: https://android-developers.googleblog.com/2018/11/unfolding-right-now-at-androiddevsummit.html

মূল:

আমি যতদূর জানি, কোনও সরকারী গুগল এপিআই নেই যা এটি সমর্থন করে।

আপনি একটি এপিআই থেকে একটি সংস্করণ নম্বর পেতে বিবেচনা করা উচিত।

বাহ্যিক API বা ওয়েবপৃষ্ঠাগুলিতে (গুগল প্লে স্টোরের মতো) সংযুক্ত হওয়ার পরিবর্তে। এপিআই বা ওয়েবপৃষ্ঠায় কিছু পরিবর্তন হতে পারে এমন ঝুঁকি রয়েছে, সুতরাং আপনার নিজের এপিআই থেকে প্রাপ্ত সংস্করণ নম্বরটির নীচে বর্তমান অ্যাপ্লিকেশনটির সংস্করণ কোডটি কিনা তা যাচাই করা আপনার বিবেচনা করা উচিত।

শুধু মনে রাখবেন আপনি নিজের অ্যাপটি আপডেট করেছেন কিনা, আপনাকে অ্যাপ্লিকেশন সংস্করণ নম্বর সহ আপনার নিজের API এ সংস্করণ পরিবর্তন করতে হবে।

আমি আপনাকে সুপারিশ করব যে আপনি নিজের ওয়েবসাইট বা এপিআইতে সংস্করণ নম্বর দিয়ে একটি ফাইল তৈরি করুন। (অবশেষে একটি ক্রোনজব তৈরি করুন এবং সংস্করণ আপডেটটি স্বয়ংক্রিয় করুন এবং কিছু ভুল হয়ে গেলে একটি বিজ্ঞপ্তি প্রেরণ করুন)

আপনার গুগল প্লে স্টোর পৃষ্ঠা থেকে এই মানটি পেতে হবে (ইতিমধ্যে পরিবর্তিত হয়ে গেছে, আর কাজ করছে না):

<div class="content" itemprop="softwareVersion"> x.x.x  </div>

মোবাইলে ব্যবহৃত সংস্করণটি আপনার নিজস্ব এপিআইতে প্রদর্শিত সংস্করণ নম্বরটির নীচে থাকলে আপনার অ্যাপ্লিকেশনটি দেখুন Check

ইঙ্গিতটি দেখান যে তাকে / তার কোনও আদর্শের সাথে আদর্শভাবে আপডেট করতে হবে।

জিনিস আপনি করতে পারেন

আপনার নিজস্ব এপিআই ব্যবহার করে সংস্করণ নম্বর

পেশাদাররা:

  • গুগল প্লে স্টোরের পুরো কোডটি লোড করার দরকার নেই (ডেটা / ব্যান্ডউইথ এ সঞ্চয় করে)

কনস:

  • ব্যবহারকারী অফলাইনে থাকতে পারে, যা এপিআই অ্যাক্সেস করা যায় না বলে চেক করা অকেজো করে তোলে

ওয়েবপৃষ্ঠায় গুগল প্লে স্টোরের সংস্করণ নম্বর

পেশাদাররা:

  • আপনার কোনও এপিআই দরকার নেই

কনস:

  • ব্যবহারকারী অফলাইনে থাকতে পারে, যা এপিআই অ্যাক্সেস করা যায় না বলে চেক করা অকেজো করে তোলে
    • এই পদ্ধতিটি ব্যবহারে আপনার ব্যবহারকারীদের আরও ব্যান্ডউইথ / মোবাইল ডেটা লাগতে পারে
    • প্লে স্টোর ওয়েবপৃষ্ঠা পরিবর্তিত হতে পারে যা আপনার সংস্করণটিকে 'রিপার' কাজ করে না।

গুগল প্লে স্টোরের ওয়েবপৃষ্ঠায় সংস্করণ নম্বর এখন কোনও সমাধান Current Versionহিসাবে Varies with deviceএটি সমাধান করা যেতে পারে বা অন্য কোনও বিকল্প উপলব্ধ থাকলে কোনও ধারণা হিসাবে তালিকাবদ্ধ করেছে ??
shadygoneinsane


প্রকৃতপক্ষে. একটি ওয়েবরেইক্ট করার সময় আমরা আর নিজের নিজস্ব গুগল প্লে পৃষ্ঠার এইচটিএমএল উত্স অ্যাক্সেস করতে না পারায় এই প্রশ্নে এসেছিল। আমরা একটি ফাইলনটফাউন্ডএক্সসেপশন পেয়েছি।
গ্রিসগ্রাম

পাঠ্যের মতো একটি ডিভের সন্ধান করার মতো কিছু চেষ্টা করবে। বর্তমান সংস্করণ / হুইডিজ ভার্সি পরের ডিভগুলিতে প্রথম সংখ্যা এবং বিন্দুর সংখ্যা সন্ধান করুন। <div class = "hAyfc"> <div class = "BgcNfc"> Huidige versie </ p> <p> <বিঘত বর্গ = "htlgb"> 1.0 </ span> এ </ p>
রিচার্ড Lindhout

ক্লাসের নাম উইল সম্ভবত তাদের ওয়েবসাইটে প্রতিটি আপডেটে পরিবর্তন করা হবে।
রিচার্ড লিন্ডাউট

37

আপনার অ্যাপ্লিকেশন build.gradle ফাইলটিতে JSoup অন্তর্ভুক্ত করুন:

dependencies {
    compile 'org.jsoup:jsoup:1.8.3'
}

এবং বর্তমান সংস্করণটি পান:

currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;

এবং নিম্নলিখিত থ্রেড সম্পাদন:

private class GetVersionCode extends AsyncTask<Void, String, String> {
    @Override
    protected String doInBackground(Void... voids) {

    String newVersion = null;
    try {
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName() + "&hl=it")
                .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(".hAyfc .htlgb")
                .get(7)
                .ownText();
        return newVersion;
    } catch (Exception e) {
        return newVersion;
    }
    }

    @Override
    protected void onPostExecute(String onlineVersion) {
        super.onPostExecute(onlineVersion);
        Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion);
        if (onlineVersion != null && !onlineVersion.isEmpty()) {
            if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
                //show dialog
            }
        }
    }

আরও তথ্যের জন্য এখানে যান: http://revisitingandroid.blogspot.in/2016/12/programmatic-check-play-store-for.html


@ ওভাররাইড সুরক্ষিত শূন্যপদে পোষ্টএক্সেকিউট (স্ট্রিং অনলাইনভিশন) {{যদি চেক সংস্করণটির শর্তটি ভাসমানের মান না হয়। কারণ এটি এই অকার্যকর java.lang.Number FormatException এর মতো ত্রুটি ফেলতে পারে: অবৈধ ভাসা: "1.0.6" " সুতরাং এটি ব্যবহার করুন। if (! currentVersion.equalsIgnoreCase (অনলাইন ভার্সন)) {....}
ধর্মিষ্ঠ

4
জাসুপ ছাড়া এটি কীভাবে করবেন সে সম্পর্কে কোনও ধারণা?
হিতেশ সাহু

প্রিয় @ হিটেশসাহু, আপনাকে প্লেস্টোর ইউআরএল " play.google.com/store/apps/details?id=com.whatsapp&hl=en " টিপতে হবে । এই ওপেন পৃষ্ঠা ইউআরএল। পৃষ্ঠায় ডান ক্লিক করুন এবং "পৃষ্ঠার উত্স দেখুন" বিকল্পটিতে ক্লিক করুন। পৃষ্ঠার এইচটিএমএলতে আপনি একটি বৈশিষ্ট্য দেখতে পাবেন: "<ডি ক্লাস =" বিষয়বস্তু "আইটেমপ্রপ =" সফ্টওয়্যার সংস্করণ "> 1.2 </div>"। আপনাকে এইচটিএমএলকে বিশ্লেষণ করতে হবে এবং নিজেই এই পতাকাটি পেতে হবে।
তারুন

4
getPackageManager().getPackageInfo(getPackageName(), 0).versionNameআপনি কেবল ব্যবহার করতে পারেন BuildConfig.VERSION_NAME:)
এনুবং

4
এটি স্পষ্টত একটি উত্পন্ন শ্রেণীবদ্ধ যা যে কোনও সময় পরিবর্তন করা যেতে পারে। আপনার এটি করা উচিত নয়।
রিচার্ড লিন্ডাউট

26

ফায়ারবেস রিমোট কনফিগারেশন আপাতত একটি সম্ভাব্য এবং নির্ভরযোগ্য সমাধান হতে পারে, যেহেতু গুগল এতে কোনও এপিআই প্রকাশ করে নি।

ফায়ারবেস রিমোট কনফিগার ডক্স পরীক্ষা করুন

পদক্ষেপগুলি 1. ফায়ারবেস প্রকল্প তৈরি করুন এবং আপনার প্রকল্পে google_play_service.json যুক্ত করুন

2. ফায়ারবেস কনসোলে "android_latest_version_code" এবং "android_latest_version_name" এর মতো কী তৈরি করুন-> রিমোট কনফিলে

৩. অ্যান্ড্রয়েড কোড

    public void initializeFirebase() {
        if (FirebaseApp.getApps(mContext).isEmpty()) {
            FirebaseApp.initializeApp(mContext, FirebaseOptions.fromResource(mContext));
        }
        final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                                                              .setDeveloperModeEnabled(BuildConfig.DEBUG)
                                                              .build();
        config.setConfigSettings(configSettings);
}

বর্তমান সংস্করণ নাম এবং কোড পান

int playStoreVersionCode = FirebaseRemoteConfig.getInstance().getString(
                "android_latest_version_code");
PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
int currentAppVersionCode = pInfo.versionCode; 
if(playStoreVersionCode>currentAppVersionCode){
//Show update popup or whatever best for you
}

৪. এবং আপনার বর্তমান উত্পাদনের সংস্করণ নাম এবং কোড সহ ফায়ারবেস "অ্যান্ড্রয়েড_লেস্ট_ভার্সন_কোড" এবং "android_latest_version_name" তারিখ অবধি রাখুন।

ফায়ারবেস দূরবর্তী কনফিগারেশন অ্যান্ড্রয়েড এবং আইফোন উভয় ক্ষেত্রেই কাজ করে।


4
ফায়ারবেসে প্যারামিটার তৈরির জন্য ফায়ারব্যাসিটোরিয়ালস // দেখুন ।
শীতলমাইন্ড

আমি মনে করি, এই সমাধান কম্পাইল ত্রুটি হতে পারে: Caused by: com.android.tools.r8.utils.AbortException: Error: null, Cannot fit requested classes in a single dex file (# methods: 68703 > 65536)। এই ক্ষেত্রে আপনার আবেদনে মাল্টিডেক্স যুক্ত করা উচিত।
কুলমাইন্ড

17

নীচের মত কিছু সংশোধন করে আপনি বর্তমান প্লেস্টোর সংস্করণটি পেতে পারেন JSoup:

@Override
protected String doInBackground(Void... voids) {

    String newVersion = null;
    try {
        newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName() + "&hl=it")
                .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(".hAyfc .htlgb")
                .get(7)
                .ownText();
        return newVersion;
    } catch (Exception e) {
        return newVersion;
    }
}

@Override
protected void onPostExecute(String onlineVersion) {
    super.onPostExecute(onlineVersion);

    Log.d("update", "playstore version " + onlineVersion);
}

@ তারুনের উত্তর আর কাজ করছে না।


এটি বন্ধু কাজ করছে তবে আমি কি চিরকাল এই উপর নির্ভর করতে পারি বা নিকট ভবিষ্যতে এটি পরিবর্তন হবে ??
অবিনাশ রায়

4
এটি নির্ভর করার প্রস্তাব দেওয়া হয় না কারণ এটি কোনও সরকারী সমাধান নয়।
নিকুঞ্জ

@ নিকুঞ্জ আমি একটি ক্লাস গেটভার্সন কোড তৈরি করি যা এসিঙ্কটাস্ককে প্রসারিত করে এবং যখন আমি আপনার কোডটি সেই শ্রেণীর ভিতরে লিখি তখন প্যাকেজনেম () ত্রুটি দেখায়। আমি এটি চেষ্টা করেছিলাম, getVersionCode.th এগুলি কিন্তু কিছুই কার্যকর হয় না।
আশিষ

4
.Select ("। HAyfc .htlgb") ব্যবহার করুন। (7) পরিবর্তনের বিরুদ্ধে শক্ত নয়। পরিবর্তে সূচক 5 ব্যবহার করে আমি আরও একটি সমাধান দেখতে পেলাম। প্রথম () .text (): সঠিক নির্বাচন করতে, আমি একটি বর্ধিত ক্যোয়ারী .select ব্যবহার ( "containsOwn (বর্তমান সংস্করণ) + + .htlgb.htlgb hAyfc .BgcNfc।")।
HarryS

8

গুগল প্লে ওয়েবসাইটে গুগলের সাম্প্রতিক পরিবর্তনের কারণে @ তারুন উত্তর পুরোপুরি কাজ করছে। তবে এখন তা নয়।

এগুলি @ তারুন উত্তর থেকে কেবল পরিবর্তন করুন ..

class GetVersionCode extends AsyncTask<Void, String, String> {

    @Override

    protected String doInBackground(Void... voids) {

        String newVersion = null;

        try {
            Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName()  + "&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();
            if (document != null) {
                Elements element = document.getElementsContainingOwnText("Current Version");
                for (Element ele : element) {
                    if (ele.siblingElements() != null) {
                        Elements sibElemets = ele.siblingElements();
                        for (Element sibElemet : sibElemets) {
                            newVersion = sibElemet.text();
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return newVersion;

    }


    @Override

    protected void onPostExecute(String onlineVersion) {

        super.onPostExecute(onlineVersion);

        if (onlineVersion != null && !onlineVersion.isEmpty()) {

            if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
                //show anything
            }

        }

        Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion);

    }
}

এবং JSoup লাইব্রেরি যুক্ত করতে ভুলবেন না

dependencies {
compile 'org.jsoup:jsoup:1.8.3'}

এবং অনক্রিয়েটে ()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    String currentVersion;
    try {
        currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }

    new GetVersionCode().execute();

}

এটাই .. এই লিঙ্কটি ধন্যবাদ


8

এখানে চিত্র বর্ণনা লিখুন

গুগল ইন-অ্যাপ আপডেটগুলি এপিআই চালু করেছে

এপিআই বর্তমানে দুটি প্রবাহকে সমর্থন করে:

  • "তাত্ক্ষণিক" প্রবাহটি একটি পূর্ণ-স্ক্রিন ব্যবহারকারীর অভিজ্ঞতা যা আপনার অ্যাপ্লিকেশনটি ব্যবহারের আগে ব্যবহারকারীকে ডাউনলোড থেকে আপডেট করার জন্য আপডেট করে।
  • "নমনীয় প্রবাহ" ব্যবহারকারীদের আপনার অ্যাপ্লিকেশনটি চালিয়ে যাওয়ার সময় আপডেটটি ডাউনলোড করতে দেয়।

7

আছে AppUpdater গ্রন্থাগার। কীভাবে অন্তর্ভুক্ত করবেন:

  1. আপনার প্রোজেক্ট বিল্ড.ড্রেডলে ভাণ্ডার যুক্ত করুন :
allprojects {
    repositories {
        jcenter()
        maven {
            url "https://jitpack.io"
        }
    }
}
  1. আপনার মডিউল build.gradle এ লাইব্রেরি যুক্ত করুন :
dependencies {
    compile 'com.github.javiersantos:AppUpdater:2.6.4'
}
  1. আপনার অ্যাপ্লিকেশনটির ম্যানিফেস্টে ইন্টারনেট এবং ACCESS_NETWORK_STATE অনুমতি যুক্ত করুন:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  1. এটি আপনার ক্রিয়াকলাপে যুক্ত করুন:
AppUpdater appUpdater = new AppUpdater(this); 
appUpdater.start();

কোনওভাবেই কাজ করছে না। নিম্নলিখিত কোড ব্যবহার করে, দয়া করে আমাকে বলুন আমি কী ভুল করছি।
অনুরাগ শ্রীবাস্তব

হাই, আমি মনে করি একটি বাগ আছে। দয়া করে এই আলোচনাটি github.com/javiersantos/AppUpdater/issues/132
স্টেনলিটউ

6

একটি হাইব্রিড অ্যাপ্লিকেশন পিওভি থেকে আসছে। এটি জাভাস্ক্রিপ্ট উদাহরণ, আমার প্রধান মেনুতে আমার একটি আপডেট উপলভ্য পাদচরণ রয়েছে। যদি কোনও আপডেট উপলব্ধ থাকে (যেমন, কনফিগার ফাইলের মধ্যে আমার সংস্করণ নম্বরটি পুনরুদ্ধার করা সংস্করণের চেয়ে কম, ফুটার প্রদর্শন করুন) এটি তার পরে ব্যবহারকারীকে অ্যাপ / প্লে স্টোরের দিকে পরিচালিত করবে, যেখানে ব্যবহারকারী আপডেট আপডেট বোতামটি ক্লিক করতে পারেন।

আমি কী নতুন ডেটা পেয়েছি (যেমন রিলিজ নোটস) এবং এটিকে এই সংস্করণে প্রথমবারের মতো লগইন করার সময় কোনও মডেলে প্রদর্শন করে।

ডিভাইসে প্রস্তুত, আপনার স্টোরের URL সেট করুন

        if (device.platform == 'iOS')
           storeURL = 'https://itunes.apple.com/lookup?bundleId=BUNDLEID';
        else
           storeURL = 'https://play.google.com/store/apps/details?id=BUNDLEID';

আপডেট উপলভ্য পদ্ধতিটি আপনার পছন্দ হিসাবে প্রায়শই চালানো যেতে পারে। প্রতিবার ব্যবহারকারী হোম স্ক্রিনে নেভিগেট করে আমার চালানো হয়।

function isUpdateAvailable() {
    if (device.platform == 'iOS') {
        $.ajax(storeURL, {
            type: "GET",
            cache: false,
            dataType: 'json'
        }).done(function (data) {
            isUpdateAvailable_iOS(data.results[0]);
        }).fail(function (jqXHR, textStatus, errorThrown) {
            commsErrorHandler(jqXHR, textStatus, false);
        });
    } else {
        $.ajax(storeURL, {
            type: "GET",
            cache: false
        }).done(function (data) {
            isUpdateAvailable_Android(data);
        }).fail(function (jqXHR, textStatus, errorThrown) {
            commsErrorHandler(jqXHR, textStatus, false);
        });
    }
}

আইওএস কলব্যাক: অ্যাপলের একটি এপিআই রয়েছে, এটি পাওয়া খুব সহজ

function isUpdateAvailable_iOS (data) {
    var storeVersion = data.version;
    var releaseNotes = data.releaseNotes;
    // Check store Version Against My App Version ('1.14.3' -> 1143)
    var _storeV = parseInt(storeVersion.replace(/\./g, ''));
    var _appV = parseInt(appVersion.substring(1).replace(/\./g, ''));
    $('#ft-main-menu-btn').off();
    if (_storeV > _appV) {
        // Update Available
        $('#ft-main-menu-btn').text('Update Available');
        $('#ft-main-menu-btn').click(function () {
            openStore();
        });

    } else {
        $('#ft-main-menu-btn').html('&nbsp;');
        // Release Notes
        settings.updateReleaseNotes('v' + storeVersion, releaseNotes);
    }
}

অ্যান্ড্রয়েড কলব্যাক: প্লেস্টোরটি আপনাকে স্ক্র্যাপ করতে হবে, আপনি দেখতে পাচ্ছেন যে সংস্করণটি তুলনামূলকভাবে তুলনামূলকভাবে সহজ এবং আমি পাঠ্যটির পরিবর্তে এইচটিএমএল নিয়ে যা নতুন তা আমি তাদের বিন্যাসটি ব্যবহার করতে পারি (যেমন নতুন লাইন ইত্যাদি)

function isUpdateAvailable_Android(data) {
    var html = $(data);
    var storeVersion = html.find('div[itemprop=softwareVersion]').text().trim();
    var releaseNotes = html.find('.whatsnew')[0].innerHTML;
    // Check store Version Against My App Version ('1.14.3' -> 1143)
    var _storeV = parseInt(storeVersion.replace(/\./g, ''));
    var _appV = parseInt(appVersion.substring(1).replace(/\./g, ''));
    $('#ft-main-menu-btn').off();
    if (_storeV > _appV) {
        // Update Available
        $('#ft-main-menu-btn').text('Update Available');
        $('#ft-main-menu-btn').click(function () {
            openStore();
        });

    } else {
        $('#ft-main-menu-btn').html('&nbsp;');
        // Release Notes
        settings.updateReleaseNotes('v' + storeVersion, releaseNotes);
    }
}

ওপেন স্টোর লজিক সোজা এগিয়ে, তবে সম্পূর্ণতার জন্য

function openStore() {
    var url = 'https://itunes.apple.com/us/app/appname/idUniqueID';
    if (device.platform != 'iOS')
       url = 'https://play.google.com/store/apps/details?id=appid'
   window.open(url, '_system')
}

নিশ্চিত করুন প্লে স্টোর এবং অ্যাপ স্টোরকে শ্বেত তালিকাভুক্ত করা হয়েছে:

  <access origin="https://itunes.apple.com"/>
  <access origin="https://play.google.com"/>

আমি ত্রুটি পাচ্ছি "এজাক্স প্রতিক্রিয়া পার্স করার সময় ত্রুটি: সিনট্যাক্সেরর: অপ্রত্যাশিত টোকেন <"। যখন এজাক্সকে ডাকা হয়। আপনি কি এই বিষয়ে কিছু আলোকপাত করতে পারেন, কী ভুল হয়েছে?
কপিলির্চ

আইওএস নাকি অ্যান্ড্রয়েড? আপনার ইউআরএল সঠিক? আপনি ব্রাউজারে পৃষ্ঠা সংশোধন করতে লাগে?
tyler_mitchell

5

ফায়ারবেস রিমোট কনফিগারেশন আরও ভাল।

  • অ্যাপ্লিকেশনটিতে নতুন বিল্ড প্রকাশের প্রয়োজন ছাড়াই আমাদের অ্যাপ্লিকেশনগুলি দ্রুত এবং সহজেই আপডেট করুন

অ্যান্ড্রয়েডে দূরবর্তী কনফিগারেশন প্রয়োগ করা হচ্ছে

দূরবর্তী কনফিগারেশন নির্ভরতা যুক্ত করা হচ্ছে

compile 'com.google.firebase:firebase-config:9.6.0'

একবার সম্পন্ন হয়ে গেলে, তারপরে আমরা যেখানে প্রয়োজন সেখানে আমাদের ফায়ারবেস রেমোটকফিগ উদাহরণটি অ্যাক্সেস করতে পারি:

FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

রিমোট কনফিগার মানগুলি পুনরুদ্ধার করা হচ্ছে

boolean someBoolean = firebaseRemoteConfig.getBoolean("some_boolean");
byte[] someArray = firebaseRemoteConfig.getByteArray("some_array");
double someDouble = firebaseRemoteConfig.getDouble("some_double");
long someLong = firebaseRemoteConfig.getLong("some_long");
String appVersion = firebaseRemoteConfig.getString("appVersion");

সার্ভার-সাইড মানগুলি আনুন

firebaseRemoteConfig.fetch(cacheExpiration)
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        mFirebaseRemoteConfig.activateFetched();
                        // We got our config, let's do something with it!
                        if(appVersion < CurrentVersion){
                           //show update dialog
                        }
                    } else {
                        // Looks like there was a problem getting the config...
                    }
                }
            });

এখন একবার প্লেস্টোরে নতুন সংস্করণটি আপলোড করা হয়েছে, আমাদের ফায়ারবেসের ভিতরে সংস্করণ নম্বরটি আপডেট করতে হবে। এখন এটি নতুন সংস্করণ হলে আপডেট ডায়ালগ প্রদর্শিত হবে


5

অনক্রিয়েট পদ্ধতিতে কোডের নীচে লিখুন ..

VersionChecker versionChecker = new VersionChecker();
    try {
        latestVersion = versionChecker.execute().get();
        Toast.makeText(getBaseContext(), latestVersion , Toast.LENGTH_SHORT).show();

    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }

এটি আপনাকে অ্যাপের স্টোর সংস্করণ খেলতে দেয় ..

তারপরে আপনাকে নীচের মতো অ্যাপ সংস্করণটি পরীক্ষা করতে হবে check

PackageManager manager = getPackageManager();
    PackageInfo info = null;
    try {
        info = manager.getPackageInfo(getPackageName(), 0);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    assert info != null;
    version = info.versionName;

এর পরে আপনি এটি স্টোর সংস্করণ এবং আপনার নিজের আপডেট স্ক্রিন সেটআপের সাথে তুলনা করতে পারেন

if(version.equals(latestVersion)){
        Toast.makeText(getBaseContext(), "No Update" , Toast.LENGTH_SHORT).show();
    }else {
        Toast.makeText(getBaseContext(), "Update" , Toast.LENGTH_SHORT).show();

    }

এবং নীচের হিসাবে VersionChecker.class যোগ করুন

public class VersionChecker extends AsyncTask<String, String, String> {

    private String newVersion;

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

        try {
            newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + "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(".hAyfc .htlgb")
                    .get(7)
                    .ownText();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return newVersion;
    }
}

3

এমন একটি সার্ভার সেট আপ করুন যা এইচটিটিপি ইউআরএল প্রকাশ করে যা সর্বশেষ সংস্করণটির প্রতিবেদন করে, তারপরে সেই ইউআরএল কল করতে একটি অ্যালার্ম ম্যানেজার ব্যবহার করুন এবং দেখুন ডিভাইসের সংস্করণটি সর্বশেষতম সংস্করণের মতো কিনা। যদি এটি কোনও বার্তা বা বিজ্ঞপ্তি পপ আপ না করে এবং আপগ্রেড করার জন্য তাদের বাজারে প্রেরণ করে।

কয়েকটি কোডের উদাহরণ রয়েছে: অ্যাপ্লিকেশনটির ভিতরে থাকা ব্যবহারকারীদের কীভাবে সর্বশেষ অ্যাপ্লিকেশন সংস্করণটি পরীক্ষা করতে দেওয়া হবে?


3

জাসপ ব্যবহার করা বাদ দিয়ে আমরা প্লে স্টোর থেকে অ্যাপ্লিকেশন সংস্করণটি পেতে বিকল্পভাবে প্যাটার্ন ম্যাচিং করতে পারি।

গুগল প্লেস্টোরের সর্বশেষতম প্যাটার্নটি মেলানোর জন্য <div class="BgcNfc">Current Version</div><span class="htlgb"><div><span class="htlgb">X.X.X</span></div> আমাদের প্রথমে উপরের নোড সিক্যুয়েন্সটি মেলাতে হবে এবং তারপরে উপরের সিকোয়েন্স থেকে সংস্করণটির মান পেতে হবে। নীচে এর জন্য কোড স্নিপেট রয়েছে:

    private String getAppVersion(String patternString, String inputString) {
        try{
            //Create a pattern
            Pattern pattern = Pattern.compile(patternString);
            if (null == pattern) {
                return null;
            }

            //Match the pattern string in provided string
            Matcher matcher = pattern.matcher(inputString);
            if (null != matcher && matcher.find()) {
                return matcher.group(1);
            }

        }catch (PatternSyntaxException ex) {

            ex.printStackTrace();
        }

        return null;
    }


    private String getPlayStoreAppVersion(String appUrlString) {
        final String currentVersion_PatternSeq = "<div[^>]*?>Current\\sVersion</div><span[^>]*?>(.*?)><div[^>]*?>(.*?)><span[^>]*?>(.*?)</span>";
        final String appVersion_PatternSeq = "htlgb\">([^<]*)</s";
        String playStoreAppVersion = null;

        BufferedReader inReader = null;
        URLConnection uc = null;
        StringBuilder urlData = new StringBuilder();

        final URL url = new URL(appUrlString);
        uc = url.openConnection();
        if(uc == null) {
           return null;
        }
        uc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
        inReader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        if (null != inReader) {
            String str = "";
            while ((str = inReader.readLine()) != null) {
                           urlData.append(str);
            }
        }

        // Get the current version pattern sequence 
        String versionString = getAppVersion (currentVersion_PatternSeq, urlData.toString());
        if(null == versionString){ 
            return null;
        }else{
            // get version from "htlgb">X.X.X</span>
            playStoreAppVersion = getAppVersion (appVersion_PatternSeq, versionString);
        }

        return playStoreAppVersion;
    }

আমি এটির মাধ্যমে সমাধান পেয়েছি, কারণ এটি সর্বশেষতম গুগল প্লেস্টোর পরিবর্তনের জন্যও কাজ করে। আশা করি এইটি কাজ করবে.


3
private void CheckUPdate() {
    VersionChecker versionChecker = new VersionChecker();
    try
    {   String appVersionName = BuildConfig.VERSION_NAME;
        String mLatestVersionName = versionChecker.execute().get();
        if(!appVersionName.equals(mLatestVersionName)){
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(Activity.this);
            alertDialog.setTitle("Please update your app");
            alertDialog.setMessage("This app version is no longer supported. Please update your app from the Play Store.");
            alertDialog.setPositiveButton("UPDATE NOW", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    final String appPackageName = getPackageName();
                    try {
                        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
                    } catch (android.content.ActivityNotFoundException anfe) {
                        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
                    }
                }
            });
            alertDialog.show();
        }

    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }
}

@SuppressLint("StaticFieldLeak")
public class VersionChecker extends AsyncTask<String, String, String> {
    private String newVersion;
    @Override
    protected String doInBackground(String... params) {

        try {
            newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id="+getPackageName())
                    .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(".hAyfc .htlgb")
                    .get(7)
                    .ownText();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return newVersion;
    }
}

এই কোডটি কীভাবে এবং কীভাবে কাজ করবে সে সম্পর্কে দয়া করে কিছু তথ্য সরবরাহ করুন
ডার্কসুনিউম

2

এটি করার জন্য কোনও সরকারী গুগলপ্লে এপিআই নেই।

তবে আপনি অ্যাপ সংস্করণ ডেটা পেতে এই বেসরকারী লাইব্রেরিটি ব্যবহার করতে পারেন ।

এবং, যদি উপরেরগুলি আপনার পক্ষে কাজ করে না, আপনি সর্বদা HTTP আপনার অ্যাপ্লিকেশানের পৃষ্ঠায় সংযোগ করতে পারেন (উদাঃ https://play.google.com/store/apps/details?id=com.shots.android&hl=en ) এবং "বর্তমান সংস্করণ" ক্ষেত্রটি বিশ্লেষণ করুন।



2

আপনি Jsoup ব্যবহার করে নিম্নলিখিত কোডগুলি চেষ্টা করতে পারেন

String latestVersion = doc.getElementsContainingOwnText("Current Version").parents().first().getAllElements().last().text();

2

এখানে চিত্র বর্ণনা লিখুনগুগল অ্যাপ-এ আপডেট আপডেট করেছে এপিআই। এটি ব্যবহার করে আমরা ব্যবহারকারীকে অ্যাপ্লিকেশনটির মধ্যে অ্যাপ্লিকেশন আপডেট করতে বলতে পারি। যদি ব্যবহারকারীরা গ্রহণ করে তবে আমরা সরাসরি সর্বশেষ অ্যাপ্লিকেশনটি ডাউনলোড করতে এবং প্লেস্টোরে পুনর্নির্দেশ না করে ইনস্টল করতে পারি। আরও তথ্যের জন্য দয়া করে নীচের লিঙ্কটি দেখুন

লিঙ্ক 1 লিঙ্ক 2


আপনার তৈরি জিআইএফটি আমি পছন্দ করি :)
হান্টার

2

গুগল অ্যাপ্লিকেশন আপডেট বৈশিষ্ট্যটি প্রবর্তন করেছে , ( https://developer.android.com/guide/app-bundle/in-app-updates ) এটি ললিপপ + এ কাজ করে এবং আপনাকে একটি সুন্দর সাথে আপডেটের জন্য ব্যবহারকারীকে জিজ্ঞাসা করার ক্ষমতা দেয় কথোপকথন (FLEXIBLE) বা বাধ্যতামূলক পূর্ণ-স্ক্রিন বার্তা (তাত্ক্ষণিক) সহ।

এখানে ফ্লেক্সিবল আপডেটটি কেমন দেখায়: এখানে চিত্র বর্ণনা লিখুন

এবং তাড়াতাড়ি আপডেট প্রবাহ এখানে : এখানে চিত্র বর্ণনা লিখুন

নমনীয় এবং তাত্ক্ষণিক আপডেট উভয় প্রবাহের প্রয়োগের সম্পূর্ণ নমুনা কোড পেতে আপনি আমার উত্তর এখানে https://stackoverflow.com/a/56808529/5502121 চেক করতে পারেন । আশা করি এটা সাহায্য করবে!


1

এখন কেবল সেই পদ্ধতিটির কাজ নিশ্চিত করেছেন:

newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + AcMainPage.this.getPackageName() + "&hl=it")
                        .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(".hAyfc .htlgb")
                        .get(5)
                        .ownText();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.