アプリ内アップデート:Flutter ユーザーに新しいバージョンを効果的に通知する方法
アプリケーションの新しいバージョンをロールアウトするときは、ユーザーにそれについて知ってもらいたいと考えます。重大なバグを修正したのか、新機能を追加したのか、それともアプリケーションの動作が単にスムーズになったのか、あるいは速くなったのかを、彼らは知る必要があります。
アプリケーション開発者として、私たちはすべてのユーザーにアプリケーションの最新バージョンを使用してもらいたいと考えています。
しかし、アプリケーションの新しいバージョンをユーザーに確実に認識させるにはどうすればよいでしょうか?
この質問に対する答えは非常に簡単です。アプリケーションの新しいバージョンがリリースされたときに、なぜ通知しないのでしょうか?
これはさまざまな方法で行うことができます。
- プッシュ通知を使用する
- アプリケーションの起動時に通知する
この記事ではプッシュ通知については扱いません。代わりに、(1 つまたは 2 つのパッケージを使用して) アプリケーションの新しいバージョンがリリースされたことと、更新に対処する方法をユーザーに通知するダイアログを表示する方法を示すことに重点を置きます。
ちょっと待って、これはすでに含まれているんじゃないですか?
この種の機能は、最新のモバイル OS システムにすでに組み込まれているはずだと思うかもしれません。あなたは正しいと思いますが、それは Android のみです。
iOS では (現時点では) 開発者がアプリケーションの新しいバージョンがあるかどうかを確認してユーザーに通知する機能は提供されていません。 Android には、Google Play ライブラリの一部である In-App Update ライブラリがあります。
このため、また Flutter は両方のプラットフォームをサポートしているため、アプリケーションのバージョン更新の処理に役立つ 2 つの著名なパッケージについて説明します。
<オル>どちらも望ましい結果を得ることができますが、その方法は大きく異なります。
始める前に、Google Play ストアから直接インストールされたバージョンのアプリケーションが必要であることを理解することが重要です 。どちらのパッケージも Google Play サービスとアプリケーションの所有者を確認する Google Play サービスの機能に依存しているため、これが必要です。
これに失敗すると、パッケージの 1 つを使用しようとすると次のエラーが表示されます。
_インストール エラー(-10):アプリはこのデバイス上のどのユーザーも所有していません。 Play から取得したアプリは「所有」されます。 (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_APP_NOT所有)
アプリ内アップデート パッケージの使用方法
すぐに、このパッケージは Android でのみ動作することを知っておく必要があります。これは、内部動作がアプリ内更新ライブラリに依存しているためです。
このパッケージは基本的に Android ライブラリのラッパーです。以下は、公開されている API メソッドです。
Future<AppUpdateInfo> checkForUpdate():利用可能なアップデートがあるかどうかを確認しますFuture<AppUpdateResult> performImmediateUpdate():即時更新を実行します (全画面)Future<AppUpdateResult> startFlexibleUpdate():フレキシブル アップデート (バックグラウンド ダウンロード) を開始しますFuture<void> completeFlexibleUpdate():利用可能なフレキシブル アップデートを実際にインストールします
✋ 即時アップデートと柔軟なアップデートの違いについて詳しく知りたい場合は、ここにアクセスしてください。
パッケージのセットアップ方法
まず、パッケージを pubspec.yaml ファイルに追加します。
dependencies:
flutter:
sdk: flutter
in_app_update: ^3.0.0
次に、パブゲットを実行します。
アプリの更新で処理するロジックを実行するアプリケーション内で、次のインポートを追加します。
import 'package:in_app_update/in_app_update.dart';
まず、アプリケーションに更新があるかどうかを確認するロジックを追加する必要があります。これを行うには、checkForUpdate を使用します。 方法。その戻り値は、アプリの更新の可用性と進行状況に関する情報を含む Future です。
updateAvailability プロパティを使用して、更新が利用可能かどうかを確認できます。アップデートが利用可能な場合、値は UPDATE_AVAILABLE になります。 。したがって、メソッドは次のようになります。
InAppUpdate.checkForUpdate().then((updateInfo) {
if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
//Logic to perform an update
}
});
次に、どの種類の更新をトリガーするか、柔軟な更新か即時更新かを決定する必要があります。
即時更新を行うのは、ユーザーにとって重要なアプリケーションの更新のために予約する必要があります。これは、重大なバグが修正されたバージョン、または新機能が提供されたバージョンを意味する場合があります。
即時更新を開始するには、performImmediateUpdate を使用します。 方法。このメソッドは、更新が成功したかどうかを示す AppUpdateResult 列挙型を返します。
このメソッドを呼び出す前に、即時更新の実行が許可されているかどうかを確認する必要があります。これを行うには、immediateUpdateAllowed にアクセスします。 AppUpdateInfo オブジェクトのフラグ。
フレキシブル アップデートをトリガーしたい場合は、startFleixbleUpdate を使用します。 方法。これはバックグラウンドで実行され、即時更新メソッドと同様です。また、AppUpdateResult 列挙型も返します。
このシナリオで更新が成功した場合は、completeFlexibleUpdate を呼び出す必要があります。 アプリケーションにアップデートをインストールするメソッド。
したがって、上記のコード スニペットを見て、さまざまな種類の更新のロジックを追加すると、次のようになります。
InAppUpdate.checkForUpdate().then((updateInfo) {
if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
if (updateInfo.immediateUpdateAllowed) {
// Perform immediate update
InAppUpdate.performImmediateUpdate().then((appUpdateResult) {
if (appUpdateResult == AppUpdateResult.success) {
//App Update successful
}
});
} else if (updateInfo.flexibleUpdateAllowed) {
//Perform flexible update
InAppUpdate.startFlexibleUpdate().then((appUpdateResult) {
if (appUpdateResult == AppUpdateResult.success) {
//App Update successful
InAppUpdate.completeFlexibleUpdate();
}
});
}
}
});
アップグレーダー パッケージの使用方法
最初のオプションとは対照的に、このオプションは iOS と Android の両方にソリューションを提供します。ストアからデータを収集し、それをアプリケーション自体からの現在のデータと照合することに依存しています。
このパッケージには、データをクエリする API の代わりに、内部でロジックを実行するウィジェットが含まれています。
パッケージのセットアップ方法
まず、パッケージを pubspec.yaml ファイルに追加します。
dependencies:
flutter:
sdk: flutter
upgrader: ^5.0.0
次に、パブゲットを実行します。
アプリの更新で処理するロジックを実行するアプリケーション内で、次のインポートを追加します。
import 'package:upgrader/upgrader.dart';
これら 2 つのオプションの主な違いは UI の違いだけなので、最も適したものを選択してください。
このパッケージを統合するには、本体ウィジェットをアップグレード アラートのいずれかでラップする必要があります。 またはアップグレードカード 。以下に例を示します。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: applicationName,
home: UpgradeAlert( /// <------------------
child: MainPage(
key: Key("YOUR_KEY"),
title: applicationName
),
)
);
}
}
アプリケーションの新しいバージョンがストアで入手可能な場合は、次のように表示されます。
テストするには、必ずこれを追加してください:
await Upgrader.clearSavedSettings()
main.dart ファイルの main メソッド内。
Upgrader パッケージには設定できる構成が大量にあることに注意してください。ぜひ行ってチェックしてみることをお勧めします。
パッケージをテストする方法
どのパッケージを使用するかに関係なく、ロジックが適切に機能することを知っておく必要があります。
しかし、アプリケーションの正式バージョンをリリースせずに、どうやってそれを行うことができるでしょうか? Google Play Console の内部テスト オプションを使用できます。アプリケーションの新しいバージョンを内部テスターにリリースすると、それは公開バージョンではなくなり、アップグレード機能をテストできるようになります。
行う必要があるのは次のとおりです:
<オル>
これで、ボタンをクリックしてリンクを自分に送信できるようになり、アプリケーションの新しいバージョンをダウンロードできるようになります。
上記の手順のいずれかを実行できない場合、生成されたリンクにより、「見つからない (エラー 404)」ページが表示されます。
すべてが正常に完了した場合、生成されたリンクをクリックすると次の内容が表示されます。
このエラーが表示された場合:
_インストール エラー(-6):現在のデバイスの状態 (バッテリー残量不足、ディスク容量不足など) のため、ダウンロード/インストールは許可されません。 (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_INSTALL_NOTALLOWED)
これは、エミュレートされたデバイス上でアプリケーションを実行しており、そのデバイスに Google Play ストアをインストールしてログインする必要があることを意味している可能性があります。
まとめ
この記事を書いたのは、アプリ内アップデート パッケージを自分のアプリケーションに統合するときに同じプロセスを実行する必要があったためです。
ぜひ Google Play ストアでチェックしてみてください:
ソース コード全体はここでご覧ください:
読んでいただきありがとうございます!
無料でコーディングを学びましょう。 freeCodeCamp のオープンソース カリキュラムは、40,000 人以上の人々が開発者としての職に就くのに役立ちました。始めましょう
-
完璧なスマートフォンの構築
スマートフォンは常に進歩しています。現在のモデルでは、元のiPhoneが畏怖の念を起こした世界に導入されてから10年も経っていないにもかかわらず、初期の試みは古く見えます。しかし、完璧なスマートフォンはまだ存在していません。これは私たちが解決しようとしている問題です。 よりスマートなスマートフォン機能 あなたが現在のスマートフォンを愛しているかもしれない限り、あなたが満足していないことについては必ずあるでしょう。そうでない場合は、簡単に満足するか、歯を横になって、選択したポケットに住むガジェットに少額のお金を払ったことについて気分が良くなります。 いずれにせよ、あなたはこれを読んでいる他の
-
Android デバイスで汎用システム イメージ (GSI) をフラッシュする:信頼できるステップバイステップ ガイド
2023 年 1 月 27 日午後 5 時東部標準時間に公開 Dennis Murimi は、Huawei IDEOS 時代 (2010 年頃) 以来、テクノロジー、特に Android に情熱を注いでいます。 MUO に入社する前、デニスは 2019 年から 2022 年まで TalkHelper に執筆し、ソフトウェア ラインナップの権威を確立しました。 これには、リスト (ビデオ変換)、ハウツー ガイド、詳細なソフトウェア レビュー (マルチメディア) が含まれており、その数は 1,000 を超える記事に達しました。 MUO では、Android の複雑な機能をわかりやすく解説し