Google Play ストアにアプリがあります。更新バージョンが利用可能になると、古いバージョンは使用できなくなります。つまり、ユーザーがアプリを更新しないと、アプリにアクセスできなくなります。新しいバージョンが利用可能になったときに、ユーザーにアプリの更新を強制するにはどうすればよいですか?
20 に答える
ここでの別の回答でのスコットヘルムのポイントに同意します。ただし、ユーザーがアプリを引き続き使用するために絶対に更新する必要がある極端な状況 (セキュリティの問題、API の重大な変更など) では、単純なバージョン管理 API を提供できます。API は次のようになります。
バージョンチェック API:
リクエスト パラメータ:
int appVersion
応答
boolean forceUpgrade
boolean recommendUpgrade
アプリの起動時に、現在のアプリ バージョンを渡すこの API を呼び出し、バージョニング API 呼び出しの応答を確認できます。
forceUpgrade
がの場合true
、ポップアップ ダイアログを表示して、ユーザーがアプリを終了できるようにするか、Google Play ストアに移動してアプリをアップグレードするかを選択できます。
それ以外の場合recommendUpgrade
はtrue
、ポップアップ ダイアログを表示して、アプリを更新するか、アプリを使い続けるかを選択します。
この強制アップグレード機能が整っていても、絶対に必要でない限り、古いバージョンを引き続きサポートする必要があります。
新しいバージョンが出たらすぐに古いバージョンのサポートをやめるべきではありません。これにより、ひどいユーザー エクスペリエンスが発生します。正当な理由で、これを行うソフトウェアベンダーを私は知りません。
ユーザーがその時点で更新できない、または更新したくない場合はどうなりますか? 彼らは単にあなたのアプリを使うことができません。これは悪いことです。
Google はそのようなバージョン追跡のオプションを提供していないため、独自に作成する必要があります。アプリがチェックできる現在のライブ バージョンを返す単純な Web サービスで十分です。その後、バージョンを更新すると、アプリはそれが古いことを認識します。これは、Google Play に依存するよりも早く更新があることをユーザーに知らせるためにのみ使用することをお勧めします。ユーザーに更新を促すためだけに、アプリの動作を妨げるために実際に使用するべきではありません。
Google チームのソリューション
新しい Google Play In App 更新メカニズムを通じて簡単に達成できる Android 5.0 以降。要件は、バージョン 1.5.0+ の Play Core ライブラリがあり、apk の代わりに App Bundles idstribution を使用することです。
ライブラリは、更新についてユーザーに通知する 2 つの異なる方法を提供します。
バックグラウンドでアプリが更新されている間も、ユーザーがアプリを使い続けることができる柔軟性。
即時 - ユーザーがアプリを更新するまでアプリに入ることができないブロック画面。
それを実装するための次のステップがあります。
- アップデートが利用可能かどうかを確認する
- 更新を開始する
- 更新ステータスのコールバックを取得する
- 更新を処理する
これらのステップの実装はすべて、公式サイトで詳細に説明されています: https://developer.android.com/guide/app-bundle/in-app-updates
スコットとマイケルの答えは正しいです。サポートする最小バージョン番号を提供するサービスをホストし、それをインストールされているバージョンと比較します。これを使用する必要がまったくないことを願っていますが、重大な欠陥のために絶対に強制終了しなければならないバージョンがある場合は命の恩人です。
次に何をするかのコードを追加したかっただけです。次に、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)));
}
});
}
}
各リリースでアップグレードを強制する必要がある場合は、設計を再検討する必要があります。
正式に Google は、このための Android API を提供しています。
API は現在、少数のパートナーでテストされており、まもなくすべての開発者が利用できるようになります。
更新 API が利用可能になりました - https://developer.android.com/guide/app-bundle/in-app-updates
これについては、 Firebase の Remote Config機能を確認することを強くお勧めします。
パラメータ app_version_enabled を使用して実装し、「Android バージョンを無効にする」という条件を次のように設定しました。
applies if App ID == com.example.myapp and App version regular expression ^(5.6.1|5.4.2)
パラメータのデフォルトは「true」ですが、無効な Android バージョンの値は false です。|{version name}
無効な Android バージョンの正規表現では、括弧内に別のバージョンを追加するだけで、無効なバージョンを追加できます。
次に、構成でバージョンが有効になっているかどうかを確認します。ユーザーにアップグレードを強制するアクティビティを起動します。アプリを外部から起動できる場所は 2 つだけです (デフォルトのランチャー アクティビティとインテント処理アクティビティ)。Remote Config はキャッシュ ベースで動作するため、キャッシュが無効化されるのに必要な時間が経過していない場合、アプリの「無効化」されたバージョンをすぐにキャプチャすることはありません。推奨されるキャッシュ有効期限の値。
アップグレードのために独自のプロセスを定義することをお勧めします。
- サーバーからアプリ(ios、android)の最新バージョンを提供するWebサービスを作成します。
- または、アプリで使用した Web サービス (ログインなど) は、サーバーから最新のアプリ バージョンを返します。
- アプリが #1 または 2 からバージョンを取得すると、アプリはそれをローカル/現在のアプリバージョンと照合します。違いがある場合は、次のようにアラートを表示できます。
Android & iOS : 最新のアプリ バージョンが利用可能な場合、「より多くの機能を備えた最新バージョンが利用可能です。アップグレードするには、アップグレード ボタンをクリックしてください」というアラートが表示されます (「アップガード」と「いいえ。ありがとう」ボタンでアラートします)。その後、アプリはにリダイレクトされます。 playstore/Appstore をタップすると、最新バージョンが開きます。
--- we can do upgrade compulsory or optionally.
アップグレード プロセスの前に、データベース スキーマの変更がある場合は、適切なデータベース移行プロセスを処理したことを確認してください。
市場でアップデートが利用可能になった場合にアプリのユーザーに強制的に更新させるには、まず市場でアプリのバージョンを確認し、それをデバイス上のアプリのバージョンと比較する必要があります。それらが異なる場合は、利用可能なアップデートである可能性があります。この投稿では、マーケットの現在のバージョンとデバイス上の現在のバージョンを取得し、それらを比較するためのコードを書き留めました。また、更新ダイアログを表示し、ユーザーを更新ページにリダイレクトする方法も示しました。このリンクにアクセスしてください: https://stackoverflow.com/a/33925032/5475941ダイアログにユーザーの更新ボタンのみを表示し、キャンセル ボタンを表示しないようにしてください。この場合、彼はアプリを使用する前に更新を強制されます。
これを行うには、アプリの変数に保持されているバージョン番号と、同様に現在のアプリのバージョンがサーバー側に保持されているバージョン番号との一致を行い、ユーザーがアプリを開くたびに最初のリクエストを送信して、見つかったかどうかを確認する必要がありますマッチングは何もせず、単にユーザーにアプリを使用させます。それ以外の場合は、Google プレイストアにインテントを送信するか、アプリの Web ビュー ウィンドウを開きます(window.open(" https://play.google.com/store/apps/details?id= package_name ", '_system', 'location=yes');) そして、自動更新をオンにしていない場合に Google Playstore が行う更新を求めるボタンが自動的に表示されます。