Introduction
In the context of mobile apps, deep linking consists in using a Uniform Resource Identifier (URI) that links to a specific location within a mobile app rather than simply launching the app.
For Docebo’s Go.Learn app, the use of deep links opens the app to a wide series of integration scenarios, where most of the startup and navigation parameters within the app are passed to the app while launching it. The LMS Platform URL, user authorization and target courses are just a few examples of the information that can be automatized via deep linking. Thus, it’s not necessary for end users to understand the technical functions happening within the app in order for them to easily access their app and courses.
Please note that Deep Linking is a very technical functionality. In order to configure it, you should contact your content developer or a member of your company’s IT department. Also note that this functionality is different from Docebo platform Course Enrollment Link feature, explained in the article Managing Course Enrollment Links.
Use Cases
The use of deep links opens various opportunities, such as:
- Creating a link that takes the user to a specific course in which he or she is enrolled, allowing the user to skip the login process
- Launching a specific training material in Go.Learn from another app
- Sharing a link to informal assets into social posts (using a proper JS redirect)
Please note: the last one is a very technical feature. In order to perform it, you have to set up a web redirect on your server converting the URL http into a deep link formatted in the proper way (you can find everything you need to know about how to perform this conversion in this guide). This redirect is performed through a javascript placed in the HTML document’s section.
Deep Linking URI and Scheme
golearn:// is Docebo Go.Learn app’s default scheme.
In order to start the app, simply invoke this URI (golearn://) from any other app or webpage.
Below, you’ll find an example of the structure of a Go.Learn deep link: There is only one mandatory element, the Scheme, which triggers the app invocation. Use the Target Path to navigate toward a specific page or training material and the URL Param (it is an optional parameter) to pass the LMS URL in Base64 format. The last part, JWT Token Param (an optional parameter), is the authorization bearer.
Navigating to Pages
You can directly navigate to two different kinds of pages: Access pages and Applicative pages. Refer to the following sections below for more information on each kind.
Access Pages
You can start Go.Learn and force the navigation to one of the following access pages: Pre-login page or Login page.
golearn://preloginpage opens the app and navigates to the Pre-login page, that is the app page in which the user inserts the platform URL. It can be combined with the Domain parameter in order to prefill the platform URL (refer to the Access parameters section of this document).
golearn://loginpage opens the app and navigates to the Login page, that is the app page in which the user inserts his or her username and password (or chooses the SSO method). Just like in the previous case, you can combine the URI with the Domain parameter in order to prefill the platform URL, but in this case, alternatively, you can assume that the platform URL is already known to the app.
Please note that when navigating to preloginpage and loginpage, any user currently logged in will be logged out. For example, if a user logged into the app receives an email from his Admin containing the golearn://preloginpage or the golearn://loginpage deep link and clicks on it, he or she will be logged out and re-directed to the Pre-login page, where he or she will be required to type his/her credentials again.
If no Domain parameter is passed in the deep link and there is no previous platform URL saved in the app status, the app navigates to the Pre-login page.
Applicative Pages
You can also directly navigate to the All Channels page, My Channel page, My Courses and Learning Plans page, All Catalogs page, Offline Courses page and My Checklists page in the app. You can also navigate to your widget custom pages. Please note that you cannot navigate to the My Team page, as it is not available on the mobile app.
golearn://allchannelspage, golearn://mychannelpage, golearn://mycoursespage, golearn://catalog, golearn://offlinecontentpage and golearn://otj/my-checklists open the app and navigate to the corresponding page. In order to navigate to the widget custom pages, the deep link is golearn://pages/{page_id}. You'll find the page ID in the address bar of your desktop browser (as an example, the page ID in this case is 53: https://lyceum.docebosaas.com/pages/53/my-dashboard). Each of these URIs can be freely combined with the Domain and Token optional parameters to provide authentication.
golearn://learn deep link navigates to the Go.Learn app default page (it can be the All Channels page or the My Courses and Learning Plans page, according to which page you configured as default page when opening the app).
Content Navigation
Deep links can lead to both formal and informal content. Please note that if you target any object that a user may not have permission to view, a contextual message appears in a popup (e.g. “You are not allowed to access this course/training material/asset”). Also note that you can only deep link directly to an entire training material, not a specific time marker or page of an asset.
Formal Content
You can also create deep links leading to specific courses (and also sessions of ILT-Instructor-Led Training courses/VILT-Virtual Instructor-Led Training courses), learning plans, training material of a course, catalogs and observation checklists, as shown in the following examples:
Courses: In a desktop platform, the URL https://demo.docebosaas.com/learn/course/{course_id} can be turned into golearn://course/{course_id} (course_id is the unique ID you can see in a course URL - please note that it can be any type of courses). Alternatively, you can get it through an API call. Refer to the articles regarding APIs for further information.
Sessions of ILT/VILT courses: In a desktop platform, the URL https://demo.docebosaas.com/learn/course/{course_id}/session/{session_id}/{session_name} can be turned into golearn://course/{course_id}/session/{session_id} (course_id is the unique ID you can see in a course URL and session_id is the ID of the ILT/VILT session you can see in the URL). Alternatively, you can get it through an API call. Refer to the articles regarding APIs for further information.
Learning plans: in a desktop platform, the URL https://demo.docebosaas.com/learn/lp/{learning_plan_id}/docebo-plan can be turned into golearn://lp/{learning_plan_id} (learning_plan_id is the unique ID you can see in a course URL).
Training material: In a desktop platform, the URL https://demo.docebosaas.com/learn/course/{course_id}/play/{lo_id}/how-to can be turned into golearn://course/{course_id}/play/{lo_id} (course_id is the unique course ID you can see in a course URL and lo_id is the ID of the training material you can see in the URL).
Catalogs: In a desktop platform, the URL https://demo.docebosaas.com/learn/catalog/view/{catalog_id} can be turned into golearn://catalog/{catalog_id} (catalog_id is the catalog ID you can see in a catalog URL).
Observation checklist: In a desktop platform, the URL https://demo.docebosaas.com/otj/assignments/{id} can be turned into golearn://otj/assignments/{id}(id is the unique ID you can see in an observation checklist URL).
Informal Content
You can also create deep links that lead to informal content, such as specific informal assets shared by other users and experts, and playlists.
Assets: In a desktop platform, the URL https://demo.docebosaas.com/share/asset/view/{asset_id} can be turned into golearn://asset/view/{asset_id} (asset_id is the unique ID you can see in an asset URL)
Playlists: In a desktop platform, the URL https://demo.docebosaas.com/share/playlist/{playlist_id} can be turned into golearn://playlist/{playlist_id} (playlist_id is the unique ID you can see in a course URL) .
Access Parameters
Domain and Token optional parameters are available to make the access and login processes more straightforward. In fact, by using these parameters, you can directly specify the platform’s URL where you want to login and a bearer of the credentials you use to login in the deep link.
Domain Parameter
The Domain parameter contains the Base64 encoded platform URL. golearn://allchannelspage?domain=bXlwbGF0Zm9ybS5kb2NlYm9zYWFzLmNvbQ== navigates to the app’s All Channels page on the platform myplatform.docebosaas.com.
Please note: If the Go.Learn user is already logged into the given platform, Go.Learn navigates directly to the page specified in the Target path section of the deep link. If no user is currently logged in, Go.Learn navigates to the Login page on the specified platform URL. Then, after a successful login, it navigates to the page specified in the Target path section of the deep link.
If a user is currently logged in, but into a different platform, then this user is logged out and Go.Learn navigates to the Login page on the specified platform URL. Finally, after a successful login, it navigates to the page specified in the Target path section of the deep link.
Also note: In a branded mobile app having a fixed domain, the Domain parameter is ignored. You can avoid inserting this parameter, since it is not used.
Token Parameter
The Token parameter must be a JWT token containing the authorization to access the platform. Learn how to build a proper JWT token. Remember that, if you are using a custom domain, you should include the original domain of the Docebo saas as hostname in the "aud" (Audience) field of the JWT token.
golearn://allchannelspage?token=eyJhbGc.jM5MDIyf.EowmOx6Iy&domain=bXlwbGF0Zm9ybS5kb2NlYm9zYWFzLmNvbQ== navigates to the app’s All Channels page on the platform myplatform.docebosaas.com using the credentials specified in the JWT token in the Token parameter.
Please note that the Token parameter must contain the JWT string, and the access key is not a valid value for this parameter.
Converting Legacy Links into Deep Links
Please refer to the table below for a list of old legacy links to convert into the new corresponding links to use on mobile:
Best Practices
For security reasons, it is strongly suggested to avoid embedding deep links into a static HTML document. On the contrary, it is suggested to navigate to deep links as a result of a function asking that the deep link is composed on the backend side.
Not all of the IDs used to compose a deep link are eternal. If you think that the ID of an object could change over the course of time, it’s better to generate the deep link on the fly using functions.