1
votes

I am trying to build an offline SCORM player and tracker. Now, SCORM was not designed to be mobile supported but recent developments in the market have spawned some products/players that allow offline playing and tracking of SCORM packages. Most of you would suggest the tin-can API as a better solution but I am not inclined towards it because it simply does not have many LMSes conforming/supporting it. I have authored the courses aligning with the SCORM 1.2 and SCORM 2004 specs that still are the most widespread SCORM implementations in the e-learning industry. But how does one start building an offline SCORM player and tracker? I am currently using a third party LMS to play my courses. So, Do I have to get my player authorized with the LMS before it can download the courses? Is this done with the help if APIs or are there some other ways to achieve this? In a nutshell,How does one go about building an offline SCORM player and tracker?

Thanks for any help in advance!!

3

3 Answers

1
votes

Offline SCORM is impossible without modifications to the LMS. In fact, it's possible to achieve offline SCORM tracking without making changes to the course itself at all.

If you want something to track offline that will work with a broad range of LMSs you don't control, Tin Can API is your best solution. Whilst SCORM adoption is higher than Tin Can adoption amongst LMSs, offline SCORM support is very low.

Here's some high level technical diagrams. As you can see, it involves integrating the offline SCORM technology into the LMS.

1
votes

There's two issues with having it offline, the first is easy to do - which is playing with the SCORM API, and storing data until the LMS itself is available for connection and updating (though obviously getting data from the LMS requires a connection, and I hope you don't lose local data until then).

The harder part is probably getting the correct content downloaded. Depending on the content itself the manifest should list all the required files, but that doesn't happen often - so running the SCO while online and caching all the files needed for it is the most logical thing - but that doesn't work so well in the case of dynamic content.

As it's your course source you should know what's needed to run it, so if you packaged that as an App, you'd only need to supply a SCORM API that could cache the data until a connection was available and then update the LMS at that point.

Naturally enough the LMS itself would need to be able to support data appearing from a SCO without it being the launching mechanism - so effectively you'd need a custom data transfer layer to handle that (but would also mean you could encrypt and compress the data). The hard part there would be learning how the LMS itself deals with incoming data well enough to add it.

My only other comment related to this - if it's for App use only, then you might not need an LMS, you may just need the data storage and retrieval part - which is a lot simpler if you want to roll your own - but also what Tin Can API excels at.

1
votes

Offline can be accomplished, but there is normally a in-between route that needs to be taken for getting your user data back. All the data can be stored in a native JSON (CMI object) which can be suspended/resumed and or stored to a sqlite, local storage or other database. Tech like Node Webkit, or other deployable options which allow for Web Servers to be created when USB/DVD type drive/disks are inserted. This is common in areas with little to no internet / cell access or unreliable locations.

  1. USB Drive gets turned in upon completion and data gets collected
  2. Certificate(s) get printed or screen shot
  3. Email combined with one of the other options
  4. A data statement posted to a API / Public service capable of working with a token, user id / email similar to the TinCan comments made - when the internet is available.

But again, you'd have to develop a simple to complex SCORM Runtime API depending on your needs, as well as an ability to manage custom offline courses/lessons for specific users. And then decide on a technology like NWK, Stunnix or other. Some are free, and some come at a price.

As far as just taking your content offline, and then sync'ing back up with the LMS soon as a internet connection and Runtime API is present - that requires a bit more work on the content side to detect no API is present, and store all the SetValue / LMSSetValue calls to local storage. Then upon getting the API back can make statements through the Runtime API when its back online. Very, very similar to just tracking changes and syncing them.

Good Luck