Git Product home page Git Product logo

deeplinker's Introduction

Deeplinker

This module helps you to create web-links for opening native applications directly if it is possible. Otherwise web page will be opened.

Install

You can install script via package managers or download it to your server.

NPM and Yarn

Install package

npm install @codexteam/deeplinker --save
yarn add @codexteam/deeplinker

Then require deeplinker module

const deeplinker = require('@codexteam/deeplinker');

Local script

Download dist/deeplinker.js file to your server and add it to your webpage.

<script src="dist/deeplinker.js" async></script>

Usage

Let's imagine that you want to create a link that opens some page in application, if it is installed. If target application is missing then link should open a web page as a normal link.

Check out example schemes below.

On click

Firstly you need to add the following params to deeplinker elements:

  • data-link or href with a usual link
  • data-app-link with a deep link (with custom protocol) to an application

Set up data-app-link param for links with href.

<a href="https://www.instagram.com/codex_team/" data-app-link="instagram://user?username=codex_team">
  Follow us on Instagram
</a>

Or set up data-link and data-app-link params for any other elements

<div data-link="https://t.me/codex_team" data-app-link="tg://resolve?domain=codex_team">
  Join our Telegram-channel
</div>

Then you need to add click listeners. There are two ways to do this.

Add listeners automatically

Add target class name to all deeplinker elements (deeplinker by default). Use deeplinker.init() function to add listeners automatically to all elements with target class name. event.preventDefault and deeplinker.click will be added as onclick function.

Run this function when page is loaded.

<body onload='deeplinker.init()'>
<div class="deeplinker" data-link="https://t.me/codex_team" data-app-link="tg://resolve?domain=codex_team">
  Join our Telegram-channel
</div>
Custom selector

You can call deeplinker.init() with string param to set up target selector. .deeplinker by default.

Example:

deeplinker.init('.my_deeplinker_element');

for

<div class="my_deeplinker_element" ...>
  Join our Telegram-channel
</div>

Set up onclick functions by yourself

Call deeplinker.click(element) function on click.

Set up click function on deeplinker elements.

<div onclick="deeplinker.click(this)"
     data-link="https://t.me/codex_team"
     data-app-link="tg://resolve?domain=codex_team">Join our Telegram-channel</div>

For link elements you also need to add event.preventDefault function:

<a href="https://www.instagram.com/codex_team/"
   onclick="event.preventDefault(); deeplinker.click(this)"
   data-app-link="instagram://user?username=codex_team">Follow us on Instagram</a>

Try to open app automatically

If you want to try to open app silently then call deeplinker.tryToOpenApp(deepLink).

Could be useful for redirection or invitation pages.

Doesn't work on mobile devices.

<body onload="deeplinker.tryToOpenApp('tg://user?username=codex_team')">

Schemes of popular apps

Telegram

tg://resolve?domain=[username]

Twitter

twitter://user?screen_name=[username]

Instagram

instagram://user?username=[username]

Facebook

fb://profile/[id]

VK

vk://vk.com/[id]

Issues and improvements

Feel free to ask a question or improve this project.

License

MIT

deeplinker's People

Contributors

nespecc avatar talyguryn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.