41

Playストアアプリケーションが更新されたとき、つまりユーザーが古いバージョンのアプリケーションを使用している場合に、アプリケーションの更新を強制/推奨するようにユーザーに促すために、Google Playストアからアプリケーションのバージョン情報を取得するにはどうすればよいですか。私はすでに公式の方法ではなく、 Googleからのoauthログイン認証も必要とするandorid-market-apiを通過しました。アプリ内バージョン チェックを提供するAndroid クエリも実行 しましたが、私の場合は機能しません。次の2つの選択肢が見つかりました。

  • バージョン情報を保存するサーバー API を使用する
  • Google タグを使用してアプリ内でアクセスしますが、これは推奨される方法ではありません。

他に簡単にできる方法はありますか?

4

15 に答える 15

9

古いバージョン (もはや動作しません)

これは、他の誰かが必要とする場合にバージョン番号を取得するための jQuery バージョンです。

    $.get("https://play.google.com/store/apps/details?id=" + packageName + "&hl=en", function(data){
        console.log($('<div/>').html(data).contents().find('div[itemprop="softwareVersion"]').text().trim());
    });

現在のソリューション

PHP バックエンドの使用。これは1年間働いています。Google は DOM をそれほど頻繁に変更していないようです。

public function getAndroidVersion(string $storeUrl): string
{
    $dom = new DOMDocument();
    $dom->loadHTML(file_get_contents($storeUrl));
    libxml_use_internal_errors(false);
    $elements = $dom->getElementsByTagName('span');

    $depth = 0;
    foreach ($elements as $element) {
        foreach ($element->attributes as $attr) {
            if ($attr->nodeName === 'class' && $attr->nodeValue === 'htlgb') {
                $depth++;
                if ($depth === 7) {
                    return preg_replace('/[^0-9.]/', '', $element->nodeValue);
                    break 2;
                }
            }
        }
    }
}
于 2016-09-30T11:17:59.500 に答える
1

サーバー側のユーザー バージョン API:

これは、現在でも市場バージョンを入手するための最良の方法です。新しい apk をアップロードする場合は、api でバージョンを更新します。したがって、アプリで最新バージョンを取得できます。- アプリのバージョンを取得するための Google API がないため、これが最適です。

Jsoup ライブラリの使用:

これは基本的にWebスクレイピングです。Google がコードを変更すると、このプロセスが機能しなくなるため、これは便利な方法ではありません。可能性は低いですが。とにかく、Jsop ライブラリでバージョンを取得します。

  1. このライブラリを build.gradle に追加します

    実装「org.jsoup:jsoup:1.11.1」

  2. バージョン チェック用のクラスを作成します。

import android.os.AsyncTask import org.jsoup.Jsoup import java.io.IOException

class PlayStoreVersionChecker(private val packageName: String) : AsyncTask() {

private var playStoreVersion: String = ""

override fun doInBackground(vararg params: String?): String {
    try {
        playStoreVersion =
                Jsoup.connect("https://play.google.com/store/apps/details?id=$packageName&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.hAyfc:nth-child(4) > span:nth-child(2) > div:nth-child(1) > span:nth-child(1)")
                    .first()
                    .ownText()
    } catch (e: IOException) {
    }
    return playStoreVersion
} }
  1. 次のようにクラスを使用します。

    val playStoreVersion = PlayStoreVersionChecker("com.example").execute().get()

于 2020-05-12T09:32:54.187 に答える