Expoで書かれたアプリを持っていますが、新しいビルドをプッシュする方法がわかりません。エキスポサイトでQRコードからアプリを実行すると、アプリは正しいのですが、アプリストアのネイティブアプリが更新されません。
私が使用している手順は、1)expビルド:Android 2)exp publishです。
アプリを実際に更新するにはどうすればよいですか?
TL; DR:OTA更新はデフォルトで適用されます。 App Storeの更新は、起動時にアプリのバージョンを確認するコードを追加することで実施できます。新しいバージョンがある場合は、アプリのページでApp Storeを開きます。
スタンドアロンのExpoアプリを更新する方法は2つあります。
expo-cli publish
を使用したOTAの更新これらの方法にはどちらも長所と短所があります。
これは、更新がExpoアプリに配信される通常の方法です。 OTAは expo CLIツール を介して行われ、package.json
設定に基づいて新しいJavascriptコードを提供します。このオプションには、リリースチャネルを使用してコードを公開するオプションもあります。つまり、まずステージング環境に更新をプッシュし、更新を検証してから、次のようにCLIを介して生産:
expo-cli publish -release-channel staging # pushes and update to the staging channel
expo-cli publish -release-channel production # pushes an update to the production channel
公開しているのにスタンドアロンアプリが更新されない場合は、コードを間違ったリリースチャネルにプッシュしている可能性があります。リリースチャネルの詳細については、 ここ を参照してください。
OTAはデフォルトで適用されます。
デフォルトでは、Expoはアプリの起動時に更新を自動的に確認し、最新の公開バージョンを取得しようとします。新しいバンドルが利用できる場合、Expoはエクスペリエンスを起動する前にそれをダウンロードしようとします。
ただし、app.jsonでupdates.enabled
をfalse
に設定してこの動作を無効にし、独自のロジックを実装する(またはまったくしない)ことができます。
try {
const update = await Expo.Updates.checkForUpdateAsync();
if (update.isAvailable) {
await Expo.Updates.fetchUpdateAsync();
// ... notify user of update ...
Expo.Updates.reloadFromCache();
}
} catch (e) {
// handle or log error
}
このシステムは、新しいJSコードをユーザーにプッシュするのに非常に優れています。ユーザーと一緒にアプリをテストし、欠陥を見つけて修正し、すぐにダウンロードできる新しいコードを公開できるため、ライブテストに役立ちます。
ただし、この方法には制限があります。たとえば、この方法でExpo SDKのバージョンを更新することはできません。新しいスタンドアロンアプリをビルドし、アプリストア(または他の任意の方法)で配布する必要があります。
これは、.apk
および.ipa
ファイルを配布する最も一般的な方法です。これらのファイルは、それぞれexpo-cli build:Android
およびexpo-cli build:ios
for AndroidおよびiOSの場合)を使用して作成できます。
Androidアプリがこの方法で更新されるようにテストするAPIがテストされているようです( SOスレッド 、 記事 )が、私はまだ利用可能とは思わないでください。
この方法で更新を強制する1つの可能な解決策は、起動時にアプリのバージョンを確認し、ストアに新しいバージョンがある場合は、アプリのストアページを ディープリンク で開き、ユーザーがダウンロードできるようにしますそれ。以下の例は、私の意味を視覚化するのに役立ちます。
componentDidMount {
const hasNewVersion = isStoreUpdateAvailable(); // Checks the store for a new app update
if (hasNewVersion) {
Linking.openURL("market://details?id=<>"); // Opens the app's store page so the user can download the update
}
}
これが Google Playへのリンク に関するドキュメントです。
コメントを残さない場合は、この質問がすべての質問に回答することを願っています。