Honmushi blog
Expoによるストア公開なしでアップデート配布「Over the Air」2019/11/28

Expoによるストア公開なしでアップデート配布「Over the Air」

Expoを使ったことがある人はご存知かと思いますが、ストアでの審査なしでアプリの更新を配布することができます。

「“Over the Air” (OTA) updates」と呼ばれています。

ストアでの審査を通さなくても良いので便利です。間違ってもエラー起きるリリースとかをしないように最新の注意を払う必要があります。なんだかんだ、ストアの審査でエラー等見つかることもなくはないと思いますので、その辺は自己責任になりますね。

以下簡単に手順と必要な設定を記載しています。とても簡単で、むしろデフォルトで有効になっていますので、特に苦戦することもないと思います。

OTAアップデート

ドキュメント

app.json

app.jsonにて以下の指定をしておく必要があります。

  "updates": {
    "enabled": true,
    "fallbackToCacheTimeout": 30000 
  }

fallbackToCacheTimeoutはミリ秒です。「30000」がデフォルトで、更新リクエストの際に最大30秒まで待てることになります。少し減らしておいてもいいと思います。10秒位とか。

enabledをfalseに変えておけば、OTAが無効になった状態でアプリがビルドされます。

用意

expoサーバでビルドを行えば、自動的に更新が公開され配布されます。

実際にはアプリが起動した際に上記のupdatesenabledがtrueの場合は、更新があるかどうかexpoのサーバに問い合わせています。
更新のバージョンがあればそれをサーバからインストールしています。特にユーザー側での操作も必要ないのでとても簡単です。

OTAで更新できないこと

以下の内容に関してはOTAでの更新はできません。app.jsonで以下を変更した場合、スタンドアローンアプリをストアで公開してアップデートする必要があります。

  • Expo SDKのVersionアップデート
  • ios
  • android
  • notification keys
  • splash
  • icon
  • name
  • owner
  • scheme
  • facebookScheme
  • assetBundlePatterns

おわりに

ストアでの審査とか体験したことある人であれば、この機能の便利さが伝わると思います。
ただ、絶対必要というわけではないので、無効にするのも方針として有りです。私はいくつかのアプリでは無効にしています。

実機でのテストとかをしっかり行いたい場合とか、邪魔になる機能ですので一度検討して方針を決めておくと良いです。

  • このエントリーをはてなブックマークに追加