Deep Linking for the Go.Learn App

Discover how to create deep links to your Go.Learn app

Last Updated

May 8th, 2019

Reading Time

6 min

User Level

Introduction

In the context of mobile apps, deep linking consists of 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 perform 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 this article.

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 learning object 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 <header> 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:

Go.Learn Deep Linking Scheme

There is only one mandatory element, the Scheme, which triggers the app invocation. Use the Target Path to navigate toward a specific page or learning object 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, My Downloaded Objects page, and the Settings page of the app.

golearn://allchannelspage, golearn://mychannelpage, golearn://mycoursespage, golearn://cataloggolearn://offlinecontentpage, and golearn://settingspage open the app and navigate to the corresponding page. Each of these URIs can be freely combined with the Domain and Token optional parameters to provide authentication.

golearn://learn deeplink 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/learning object/asset”). Also note that you can only deep link directly to an entire learning object, not a specific time marker or page of an asset.

Formal Content

You can also create deep links leading to specific courses, learning plans, learning objects of a course, and catalogs, as shown in the following four examples:

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). Alternatively, you can get it through an API call. Refer to these articles for further information about APIs.

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).

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 learning object you can see in the URL).

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).

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.

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 same unique ID you can see in an asset URL)

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 same 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. Read here to discover how to build a proper 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:

legacy link deep linkBest 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.