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(使用の質)を改善し、計算の回数を減らし、特にバッテリー電源を使用する場合にデバイスの寿命を延ばす必要があります。



All Articles