Search code examples
javascriptiframescormtin-can-apilms

Iframed content communicate with LMS via SCORM / xAPI?


Having worked with e-learning authoring tools in the past, I'm a bit familiar with SCORM but not in great detail, and recently have heard of Tin Can / xAPI. In how those often relate to LMS's, I'm familiar with the concept of uploading a zipped learning object that has the code needed to communicate w/the LMS to record completions, scores, and so forth via the SCORM / xAPI specs.

I’m wondering whether a different setup is possible: if an LMS is said to support SCORM and/or xAPI, can a custom-programmed learning object at a URL external to an LMS (i.e. not an uploaded zip), typically communicate w/the LMS equally well, such as via displaying the learning object in an iframe and the learning object having SCORM or xAPI calls to the parent window? My hunch is yes, because I believe the uploaded-zip route utilizes iframes, but having little experience in custom-programming SCORM / xAPI integrations, I don't know if there's something I'm missing about cross-domain issues, limitations on SCORM / xAPI specs perhaps, etc.

If it is possible, any tips or gotchas are welcome.


Solution

  • For comparable use with xAPI as the communication protocol I'd recommend considering the cmi5 profile. It is intended specifically for the packaging and LMS launch scenario while leveraging xAPI as its data storage and communication mechanism.

    cmi5 provides for a mechanism to launch into remotely hosted content (AU) and provides via the launch URL enough information then to communicate back to the LMS/LRS in a cross origin way. xAPI is itself compatible with this approach assuming the LRS can provide the correct CORS headers (most do).

    SCORM does not generally work (natively) in this type of setup because it is based on a JavaScript API that must be made accessible to the content itself which generally can't be accessed across different origins. There are ways around this, but they are supplements to the core specification.