Skip to content

Meteor package that allows you to expose your native iOS settings to enable Universal Links.

Notifications You must be signed in to change notification settings

quavedev/universal-links

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

quave:universal-links

quave:universal-links is a Meteor package that allows you to expose your native iOS settings to enable Universal Links.

Why

It is very useful to lunch your app from a link and this package make this configuration a breeze.

Remember that you need to enable Associated Domains in your app and also configure Universal Links in your mobile-config.js.

We believe we are not reinventing the wheel in this package but what we are doing is like putting together the wheels in the vehicle :).

Installation

meteor add quave:universal-links

Usage

In your settings

  "packages": {
    "quave:universal-links": {
      "appleTeamId": "VR7QCJTCL2",
      "appleBundleId": "com.yoursite.app"
    }
  }

In your server

import { Meteor } from 'meteor/meteor';

import { registerUniversalLinksHandler } from 'meteor/quave:universal-links';

Meteor.startup(() => {
  registerUniversalLinksHandler();
});

That is it, now you can access http://localhost:3000/apple-app-site-association and you will get back Apple required configuration for Universal Links.

Advanced

If you want to provide appleTeamId and appleBundleId in runtime (in case you serve multiple apps from the same backend) you can use createResponderAppleAppSiteAssociation function. See a full example from a market place that each store can have a native app.

import { createResponderAppleAppSiteAssociation } from 'meteor/quave:universal-links';

import { StoresCollection } from '../../app/stores/data/StoresCollection';
import { getNativeStoresInfo } from './native';
import { getBaseUrlFromHeaders } from '../mode/modeCommon';

export const appleAppSiteAssociation = (req, res) => {
  const baseUrl = getBaseUrlFromHeaders(req.headers);
  const store = StoresCollection.findByFullUrl(baseUrl);
  const nativeStoresInfo = getNativeStoresInfo(store);

  if (!nativeStoresInfo.nativeAppEnabled) {
    res.setHeader('Content-Type', 'text/html');
    res.writeHead(405);
    res.end(`<h1>Native App not enabled for ${store.name}</h1>`);
    return;
  }
  if (!nativeStoresInfo.appleTeamId || !nativeStoresInfo.appleBundleId) {
    res.setHeader('Content-Type', 'text/html');
    res.writeHead(405);
    res.end(
      `<h1>Bundle ID and Team ID are not configured for ${store.name}</h1>`
    );
    return;
  }

  createResponderAppleAppSiteAssociation(nativeStoresInfo)(req, res);
};

Meteor.startup(() => {
  WebApp.connectHandlers.use(
    APPLE_APP_SITE_ASSOCIATION_PATH,
    Meteor.bindEnvironment(appleAppSiteAssociation)
  );
});

License

MIT

About

Meteor package that allows you to expose your native iOS settings to enable Universal Links.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published