Deep Links maken met DyLy

DyLy is een dienst die URL's verkort en het aanmaken van Deep Links eenvoudig maakt.
In dit artikel lees je hoe je met DyLy efficiënt Deep Links maakt.
Wat is een Deep Link?
Een Deep Link zorgt ervoor dat bij het openen van een link direct de app wordt gestart in plaats van de browser. Als de app niet is geïnstalleerd, wordt de gebruiker naar de appstore gestuurd en na installatie opent de gewenste pagina.
Apple ondersteunt met Universal Links officieel een "naadloze overgang van browser naar app", terwijl Google met Android App Links een vergelijkbare ervaring biedt. Zoals beschreven in de Universal Links-gids van Apple en de Android App Links-documentatie van Google verbeteren Deep Links niet alleen de gebruikerservaring, maar dragen ze ook bij aan betere beveiliging en conversieratio's.
Use-cases
Er zijn veel manieren om Deep Links te benutten.
Directe links naar content (video's e.d.)
Je kunt links delen op sociale media en gebruikers direct naar specifieke content sturen. Op het web is dat vanzelfsprekend; met Deep Links kan een mobiele app ook meteen de juiste inhoud openen. Daarnaast kun je queryparameters toevoegen om bijvoorbeeld de herkomstkanalen te analyseren.
Uitnodigingslinks
Met Deep Links kun je iemand uitnodigen voor een groep of ander onderdeel in de app. Wanneer de genodigde op de link klikt, opent de app en start het uitnodigingsproces. Is de app niet geïnstalleerd, dan wordt de gebruiker naar de appstore geleid en kan het proces na installatie worden hervat.
Redirects
Als je een app als redirect-bestemming wilt gebruiken in een OAuth-stroom, kun je een aangepast schema (zoals myapp://) inzetten, maar dat brengt risico's op onderschepping met zich mee. Met een Deep Link kun je de redirect veilig in de app ontvangen.
Implementatie
Laten we bekijken hoe je Deep Links in de praktijk implementeert. Er zijn veel diensten beschikbaar; in dit voorbeeld gebruiken we DyLy.
Metagegevens aanmaken
Je moet je domein aan de applicatie koppelen. Zie de documentatie van Apple en de documentatie van Google voor details. Kort gezegd host je een endpoint op het web waarmee je het eigendom van het domein en de koppeling met de app aantoont, zodat Apple en Google dit kunnen verifiëren.
Je hoeft alleen JSON in het voorgeschreven formaat terug te geven. Je kunt dit zelf hosten, bijvoorbeeld op S3, maar DyLy biedt hier een handige functie voor.
DyLy kan een zogenaamde JSON link aanmaken die de opgegeven JSON op het doeladres teruggeeft. Met de API stuur je daarvoor onderstaande aanvraag.
1curl -X POST "https://dyly-api.lilacwells.com/url/api/v1/links" \2 -H "Authorization: Basic ${YOUR_CREDENTIALS}" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "json",6 "projectId": "your-project-id",7 "path": ".well-known/apple-app-site-association",8 "rawJson": {9 "applinks": {10 "apps": [],11 "details": [12 {13 "appIDs": ["TEAM123.com.example.app"],14 "paths": [15 "NOT /_/*",16 "NOT /deferred-params",17 "/*"18 ]19 }20 ]21 }22 }23 }'Configuratie in de app
Configureer vervolgens je apps volgens de stappen per besturingssysteem.
iOS
Voeg in Xcode onder Signing & Capabilities de sectie Associated Domains toe en registreer je domein, bijvoorbeeld applinks:example.com.
Android
Voeg <intent-filter android:autoVerify="true"> toe aan AndroidManifest.xml en valideer het domein met android:autoVerify.
Wanneer de link via de browser wordt geopend, kun je hem laten doorsturen naar een willekeurige URL.
De link aanmaken
Maak tot slot de link in DyLy.
Door type op deep te zetten, creëer je een Deep Link zoals hieronder.
1curl -X POST "https://dyly-api.lilacwells.com/url/api/v1/links" \2 -H "Authorization: Basic ${YOUR_CREDENTIALS}" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "deep",6 "projectId": "your-project-id",7 "path": "groups/awesome-group",8 "destinationUrl": "https://apps.apple.com/app/yourapp/id123456",9 "jwtClaims": {10 "invitationId": "inv-789xyz",11 "invitedBy": "user-123",12 "groupId": "awesome-group",13 "groupName": "Awesome Group",14 "permissions": "member",15 "timestamp": 173589440416 },17 "jwtExpiresIn": 300,18 "expiresIn": 2592000,19 "keyProtected": false,20 "oneTime": false21 }'De waarden in jwtClaims worden in de JWT opgenomen, dus ga er zorgvuldig mee om.
Nadat de Deep Link is aangemaakt, genereert DyLy een link met een JWT als queryparameter.
De link in de app verwerken
Wanneer een gebruiker op de link klikt, ontvangt de app deze. Volg vervolgens de onderstaande stappen.
JWT valideren
Controleer of de link daadwerkelijk door DyLy is uitgegeven.
Laten we kort stilstaan bij wat een JWT is. Een JWT is in feite JSON met een handtekening. Door de handtekening te controleren kun je de uitgever verifiëren en zeker zijn dat de inhoud niet is aangepast.
Omdat iedereen links kan maken, moet je niet-legitieme links kunnen herkennen. Legitieme links zijn ondertekend met de privésleutel van DyLy; door de handtekening te valideren, bevestigt de app dat de link echt is en dat de parameters intact zijn.
DyLy gebruikt de gangbare JWT-technologie, waardoor je bestaande JWT-bibliotheken kunt inzetten voor de validatie.
Daarom moet de app de JWT als eerste stap controleren zodra de link binnenkomt.
Parameters controleren
Na de validatie lees je de payload uit en voer je de benodigde logica uit.
Bij een uitnodigingslink haal je bijvoorbeeld de groep-ID of andere identificatoren op.
Houd er rekening mee dat een JWT wel ondertekend maar niet versleuteld is (er bestaan versleutelde JWT's, maar dat is een ander formaat).
Iedereen kan de inhoud van de JWT dus lezen. Plaats daarom geen gevoelige of persoonlijke gegevens in de JWT. Voor een uitnodiging volstaat het om identificatoren zoals de groep-ID op te nemen en details op de server te bewaren.
Deferred Deep Link
Als de gebruiker op een apparaat zonder de app op de link klikt, wordt hij naar de appstore doorgestuurd en kan hij na installatie de gewenste Deep Link-pagina openen. Dit heet een Deferred Deep Link. DyLy ondersteunt deze werkwijze eveneens.
Eerst tikt de gebruiker op de link op een mobiel apparaat zonder app. Omdat de app ontbreekt, wordt de link in de browser uitgevoerd en bereikt hij de servers van DyLy. DyLy slaat informatie op zoals IP-adres en besturingssysteem en leidt de gebruiker vervolgens naar de appstore.
Wanneer de app na installatie voor het eerst wordt gestart, vraagt ze bij DyLy of dat apparaat eerder toegang tot de link heeft gehad. Aan de hand van IP-adres en besturingssysteem controleert DyLy of er een eerdere toegang was en levert zo nodig de bijbehorende Deep Link aan de app.
Zo kan de app bij de eerste start na installatie de eerder aangeklikte Deep Link ophalen.
Bekijk voor meer details de officiële documentatie van DyLy.
Samenvatting
Met DyLy kun je Deep Links eenvoudig realiseren. In een volgend artikel gaan we dieper in op het bouwen van uitnodigingslinks en andere concrete scenario's.




