"I think I am still in a "session" mindset, though I can see xAPI may be more geared at sending the data once the activity is over. The problem I can see myself having though is making sure that if the user closes the window or their computer crashes or whatever, how can I make sure that their progress is saved and their attempt reported to their lecturer/supervisor etc? That's what I'm trying to address with the questions below.
I do have a couple of further question about "inProgress" though. I'm setting it to true whenever I send a statement to the Public LRS I expected perhaps that this would cause the LRS to update my initial statement, but rather a new statement is created every time, so I'm flooding the public LRS's feed. Is it up to the LRS how it deals with "inProgress" and how should I be dealing with changes in result?
My second question has to do with setting "inProgress" to false. Currently I plan to do this by sending a final statement when either the user clicks an exit button, or window.beforeunload or window.onunload are called. Is this the best way to do this? What happens if a user closes their browser window and they are using a browser that does not run window.beforeunload or window.onunload? How are LRSs expected to manage attempts which never set "inProgress" to false?"