I am developing a surface application (though the platform isn't really relevant) that needs to track usage statistics and produce data that can analyzed to answer several usage related questions.
Specifically, I have a screen in my application that will display multiple pieces of content at once (ScatterView for the surface people). On this screen multiple people can interact with multiple pieces of content simultaneously.
I need to to answer two specific questions:
- What is the most/least popular piece of content over the past 24 hours
- How long was each piece of content viewed in a 24 hour period
I am struggling to find a conceptual approach to this problem. I am making some assumptions that I think simplify the multi-user problem.
- Any contact that is oriented between 0-180 degrees is user 1
- Any contact oriented between 181-360 is user 2
- After a period of inactivity (no contacts captured) the current "session" will end. This give me the ability to distinguish between user sessions and to track usage times.
My problem is how do I (even somewhat reliably) determine the users intent with regards to a piece of content?
- How do I know they are "viewing" a piece of content?
- How can I determine if something is "popular"?
Any ideas on how to approach this would be appreciated (no matter how off the wall they seem)
UPDATE:
As a follow up. I am working on the concept of issuing "Tokens" for various aspects of my application.
When a contact is captured I am requesting three tokens from my "TokenManagement" store. I ask for the ApplicationToken, the UserToken, and the AssetToken.
ApplicationToken is created once for the lifetime of this application run.
UserToken is created once for each distinct user (0-180 and 181-360). Once the token is issued it will be renewed each time a contact for the given user is detected. If there are no contacts for that user within a specified timeout period (in my case 1 minute) then i am expiring the token. This means any subsequent request for a token will issue a new token, thus indicating a new user. (Thoughts on this?)
AssetToken similar to a user token, and asset token is issued for each piece of content that is touched for a given user token (this way two users can touch the same piece of content and each get their own unique AssetToken). Again, like the user token, this token with be renewed for subsequent contacts and will expire if no requests for that token are made within some time frame.
I think this system allows me to determine several pieces of data
- Number of unique users (Select distinct UserToken)
- Most popular item (Max of Distinct AssetTokens for a given asset)
- Least popular item (Min of Distinct AssetTokens for a given asset)
Thoughts on this approach?