私のiOSアプリは、非同期ダウンロードを使用してインターネットからデータを読み取ります。だから私はイベントを持っています:開始、完了、エラー。
質問はユーザーエクスペリエンスについてです。データがダウンロードされているとき、ユーザーにはアクティビティインジケーターが表示され、すべてのUIをブロックします
問題は、UIをブロックすることが良い習慣かどうかです。
私のiOSアプリは、非同期ダウンロードを使用してインターネットからデータを読み取ります。だから私はイベントを持っています:開始、完了、エラー。
質問はユーザーエクスペリエンスについてです。データがダウンロードされているとき、ユーザーにはアクティビティインジケーターが表示され、すべてのUIをブロックします
問題は、UIをブロックすることが良い習慣かどうかです。
私は同様のユースケースでアプリに取り組んでいます: 特定のシステムに接続すると、それを説明する XML ファイルがあり、ダウンロードする必要があります (これは非同期で行われます)。その XML がダウンロードされるまで、ユーザーがそのシステムでできることは何もありません (別のシステムを開くことを除いて、それは同じ問題ですが)。その場合、ブロッキング スピナーがアプリに表示されます。
ただし、XML が更新されない場合もあり、その場合はタイムスタンプを確認できます。更新する必要がない場合は更新しません。ユーザーにはブロッキング スピナーは表示されません。
これを行うもう 1 つのアプリは Sonos です。ワイヤレス ネットワーク (システムの 1 つを使用) を検索しているときに、その接続なしでは何もできないため、ブロッキング スピナーが表示されます。
どちらの例でも、ユーザーはアプリを離れることはできますが、アプリ内で操作することはできません。
基本的にこれは次のようになります: リクエストが完了するまで何もできない場合を除き、ユーザーをブロックしないでください。
データを非同期でダウンロードしている場合、UI のブロックを解除するのに苦労したため、UI をブロックする理由はほとんどありません。
データが必要なため、ブロックする必要がある特定の関数がある場合は、先に進みます。しかし、それ以外はすべて無料で、通常どおり応答する必要があります。