オンライン上のデータを使ったアプリを開発する際にはメンテナンスを考慮しておくのが良いでしょう。大きなバージョンアップであったり、それに合わせたデータのコンバートなどが伴う場合などです。
今回はmBaaSを使ってメンテナンスタイムを考慮した実装の方法を紹介します。
アプリ起動時にメンテナンスクラスをチェックする
アプリを起動した際に必ずメンテナンスクラス(自分たちで作成)をチェックするようにしましょう。予定されているメンテナンス時間が保存されていれば良いだけのクラスです。多くのメンテナンスは予定されている時間に行われますので、あらかじめ決まっているメンテナンス時間を取り込んでおけば良いでしょう。
後はアプリを使っていてその時間になったらメンテナンスが開始された旨をアナウンスすればOKです。終了時間になってもメンテナンスが終了できない場合はあらためて新しいデータを追加すれば良いでしょう。
緊急メンテナンスへの対応
アプリを使っている途中で発生する緊急メンテナンスには対応するのが難しいかも知れません。常にメンテナンスクラスにアクセスすれば可能ですが、APIのコール回数が増えてしまいます。
ネイティブのiOS/Androidアプリであればサイレントプッシュ通知を使ってメンテナンスがはじまったというフラグを立てることもできます。ただしこれはプッシュ通知を許諾しているユーザにしか使えません。
その他、特定のファイル(画像など)の存在を定期的にチェックすることで緊急メンテナンスの発生を検知することもできます。この方法はネットワークトラフィックが増えるのでお勧めできません。
JavaScript SDKの場合、常に外部にあるJavaScriptを読み込むようにしておきましょう。そのファイルでメンテナンスのフラグを持たせておけば切り替えるのは容易になります。ただしネットワークに繋がっていない場合は判定できません。
アプリが特定のユーザ(社内など)に限って使われる場合、アプリケーションキーとクライアントキーを再生成することで対応することもできます。一度変更してしまったキーは元に戻せませんのでご注意ください。
アプリに限らずWebサービスでも緊急メンテナンスは逃れられません。Webサービスであればトップページを変更しておけば済んだかも知れませんが、アプリはそのWebページに相当するUI部分を各スマートフォンアプリが持っている状態です。APIだけエラーにしなければなりません。
mBaaSでメンテナンスモードはサポートされていませんので、アプリ側で工夫して実装する必要があります。今回書いたような方法で検討してみてください。