モバイルアプリがバックエンドに対して更新情報を送信する際には、失敗の可能性があることを考慮しておく必要があります。失敗する原因として以下のようなさまざまな点が考えられます。
- モバイル デバイスに接続の問題がある
- AppSheet のサーバーに接続やダウンタイムの問題が発生している
- クラウド ファイル システム(Google ドライブなど)に接続やダウンタイムの問題が発生している
モバイルとクラウドを連携させながら作業する環境では、アプリからの変更をバックエンドのクラウド サービスで記録しておく必要があります。アプリが収集したデータが失われることはあってはなりません。
AppSheet では以下の 3 つの基本メカニズムでこれを実現しています(どれも特別な設定は必要なく、自動的に行われます)。
-
変更はすべてデバイス上でローカルに記録されます。デバイスがシャットダウンして再起動した場合でも、変更は維持されます。ただし、同期前にデバイスの紛失や破損があった場合には、変更が失われます。
-
データがアプリから同期される際、そのデータは AppSheet のバックエンドを経由してバックエンドのスプレッドシートに送られます。この段階で、処理が成功したことがモバイルアプリに通知される必要があります。これが迅速に行われない場合、ユーザーにはエラー メッセージが表示されます。重要なのは、この変更が後の再試行のためにキューに格納される点です。再度ユーザーが同期を行った場合、変更が再度送信されます。
-
もちろん同じ変更が複数回試行されるという状況もあり得ます(更新は正常に適用されていても、成功の通知がアプリまで届かなかったため)。AppSheet での更新はすべて「べき等性」を持つよう設計されているため、変更を何度繰り返しても結果は同じになります。
エラーが発生する状況は他にもう一つ考えられます。それは、アプリの作成者が列を追加または削除してアプリ定義を変更したものの、まだ古いバージョンのアプリを使用しているユーザーが一部いて、そのアプリに対する更新を同期していない場合です。更新内容とアプリ定義に構造上の不一致がある場合、更新は失敗します。何度再試行しても失敗となります。このケースの対処方法について詳しくは、同期中のエラーと警告をご覧ください。