3つのユーザー状態(Web開発)

計算の数を減らし、モバイルデバイスの寿命を延ばします。 ユーザーがビデオを再生しているページ、音楽を再生しているページ、3Dグラフィックスを備えたアプリケーションを実行しているページがあるとしますが、現時点では 彼女を見ていません 別のアプリケーションを使用したり、ブラウザで別のタブを閲覧したり、電話での会話などに気を取られたりした場合、開発者の義務は、ユーザーのモバイルデバイスのUXを改善したり、寿命を延ばしたりすることです。



ユーザーの状態を決定します


固体、液体、気体


3つの状態はすべて、マルチプレイヤーアプリケーション、チャット、フォーラムなどでユーザーステータスを表示し、内部(計算、データ交換)および外部(UI、グラフィックス)アプリケーションプロセスを整理/最適化するために使用できます。
以下のコード例はcoffeescriptで記述され、Meteorアプリケーションのフレームワーク内で動作するように設計されていますが、それでもJavaScriptのままであり、他の環境で使用できます。

ユーザーが現在アクティブであることを示すイベントを検討します。
# #@ = window @addEventListener "mousemove", _.throttle(goActive, 777), false @addEventListener "mousedown", _.throttle(goActive, 777), false @addEventListener "keypress", _.throttle(goActive, 777), false @addEventListener "DOMMouseScroll", _.throttle(goActive, 777), false @addEventListener "mouse wheel", _.throttle(goActive, 777), false @addEventListener "touchmove", _.throttle(goActive, 777), false @addEventListener "MSPointerMove", _.throttle(goActive, 777), false 

追伸 アンダースコアに統合されたthrottle関数は、 goActiveの呼び出し回数をgoActiveます;関数は1回につき1回しか呼び出されません 幸せな 777ミリ秒。

Webアプリケーションタブがアクティブかどうかを確認します。
 # setVisibilitychange = -> if document.hidden #    "" goInactive() else #    " " goActive() document.addEventListener "visibilitychange", setVisibilitychange, false 

ユーザーがログインしていてアクティブではないときにタブ/ウィンドウが開いてアクティブになっている場合-1分後に、ステータスを非アクティブに変更します。
 # Meteor.setTimeout goInactive, 60000 


goInactive関数はユーザーを「退席中」状態に設定することに注意してください。
ステータスを「オフライン」にするには、ユーザーはアプリケーションを終了(ログアウト)するか、DDP接続を閉じる/切断する必要があります。



以下のコードはMeteor専用です。


DDP接続を切断して、ステータスを「オフライン」に設定します。
 # Meteor.onConnection (connection) -> connectionId = connection.id connection.onClose () -> Meteor.users.update connection: connectionId , '$set': 'profile.online': false 'profile.idle': false 

ユーザーがログインしたら、上記で使用したconnectionId保存する必要があります。
 # Accounts.validateLoginAttempt (attempt) -> if !attempt.error and attempt.user Meteor.users.update _id: attempt.user._id , '$set': connection: attempt.connection.id 'profile.online': true 'profile.idle': false 'profile.location.ip': attempt.connection.clientAddress 'profile.lastLogin': new Date() return if !attempt.error and attempt.user then true else false 

クロスブラウザサポートを備えたより完全なコードは、 こちらにあります。



ユーザーにとって便利


多くのWebアプリケーションでは、すぐにユーザーの注意が必要です。 条件「離れている」(離れている)で私は提案します:


簡単に言えば、開発者はユーザーと彼の個人的なデバイスの世話をし、UX(使用の質)を改善し、計算の回数を減らし、特にバッテリー電源を使用する場合にデバイスの寿命を延ばす必要があります。

Source: https://habr.com/ru/post/J254031/


All Articles