{"id":11922,"date":"2014-06-03T11:39:08","date_gmt":"2014-06-03T09:39:08","guid":{"rendered":"https:\/\/blog.trifork.com\/?p=11922"},"modified":"2014-06-03T11:39:08","modified_gmt":"2014-06-03T09:39:08","slug":"linking-apps-together-with-app-links","status":"publish","type":"post","link":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/","title":{"rendered":"Linking apps together with App Links"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none;float: left;padding-top: 0px;padding-left: 0px;margin: 0px 10px 0px 0px;padding-right: 0px;border-width: 0px\" title=\"AppLinks\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png\" alt=\"\" width=\"250\" height=\"164\" align=\"left\" border=\"0\">When developing apps for mobile phones you want to offer your users the best user experience. Sometimes this includes showing information outside of your app, in another app. Up until recently, there was no real good way to do this. Luckily, now there is a new initiative <a title=\"App Links\" href=\"http:\/\/applinks.org\/\" target=\"_blank\" rel=\"noopener\">App Links<\/a> that provides an open source and cross-platform solution for app-to-app linking. The initiative is supported by many mobile app developers, like Dropbox, Facebook, Spotify and Pinterest. In this post I will show you an example how to link between two Android applications using the open source implementation for Android <a title=\"Bolts\" href=\"https:\/\/github.com\/BoltsFramework\/Bolts-Android\" target=\"_blank\" rel=\"noopener\">Bolts<\/a>. However, the same principles apply when you want to link between two iOS applications.<\/p>\n<p><!--more--><\/p>\n<h2>App Links<\/h2>\n<p>Creating an App Link can be done by simply adding a few metadata properties in the head tag of your HTML page. This metadata can be used to (deep-)link into your app or another app. If the user doesn\u2019t have your app installed, the metadata can also be used to send the user to the correct app store to download the app. Another option that App Links provide is to take the user directly to the web view of the content.<\/p>\n<p>One library that simplify the implementation of App Links is <a title=\"Bolts\" href=\"https:\/\/github.com\/BoltsFramework\/Bolts-Android\" target=\"_blank\" rel=\"noopener\">Bolts<\/a>. Bolts provides helper methods to receive or navigate to an App Link.<\/p>\n<p>In my example I have two apps, one with basic information about patients and one to register how long a treatment of this patient took (always one hour in my app). I have also two HTML pages which are used to get the metadata from that contains the information of which app needs to be opened.<\/p>\n<figure id=\"attachment_11930\" aria-describedby=\"caption-attachment-11930\" style=\"width: 570px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/flow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11930\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/flow-300x229.png\" alt=\"\" width=\"570\" height=\"436\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2014\/05\/flow-300x229.png 300w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2014\/05\/flow-768x587.png 768w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2014\/05\/flow.png 954w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/a><figcaption id=\"caption-attachment-11930\" class=\"wp-caption-text\"><em>Flow between App Links (Click for larger view)<\/em><\/figcaption><\/figure>\n<p>HTML page 1 containing metadata to open the time tracker app:<\/p>\n<p><pre class=\"brush: xml; title: ; notranslate\" title=\"\">&lt;\/p&gt;\n&lt;p&gt;&amp;lt;\/pre&amp;gt;&lt;br&gt;\n&amp;lt;pre&amp;gt;&amp;lt;html&amp;gt;&lt;br&gt;\n  &amp;lt;head&amp;gt;&lt;br&gt;\n    &amp;lt;meta property=&quot;al:android:package&quot; content=&quot;nl.trifork.patienttimetracker&quot; \/&amp;gt;&lt;br&gt;\n    &amp;lt;meta property=&quot;al:android:app_name&quot; content=&quot;Patient time tracker&quot; \/&amp;gt;&lt;br&gt;\n  &amp;lt;\/head&amp;gt;&lt;br&gt;\n  &amp;lt;body&amp;gt;Patient time tracker&amp;lt;\/body&amp;gt;&lt;br&gt;\n&amp;lt;\/html&amp;gt;&lt;br&gt;\n<\/pre><\/p>\n<h3>Patients app<\/h3>\n<p>In the patients app I created the functionality to open the time tracker app. It will collect the metadata properties from the url of HTML page 1. The metadata contains the package name of the time tracker app, which will be used to create an <a title=\"Intent\" href=\"http:\/\/developer.android.com\/reference\/android\/content\/Intent.html\" target=\"_blank\" rel=\"noopener\">Intent<\/a>.<br \/>\nTo check if the Intent could be opened by any of my installed apps I call the method <a title=\"PackageManager.resolveActivity()\" href=\"http:\/\/developer.android.com\/reference\/android\/content\/pm\/PackageManager.html#resolveActivity(android.content.Intent,%20int)\" target=\"_blank\" rel=\"noopener\">PackageManager.resolveActivity()<\/a>. If this method returns any <a title=\"ResolveInfo\" href=\"http:\/\/developer.android.com\/reference\/android\/content\/pm\/ResolveInfo.html\" target=\"_blank\" rel=\"noopener\">ResolveInfo <\/a>then it has found an app that could open your link. In my case it will of course find my time tracker app :). The time tracker will open the main activity as we didn\u2019t add the metadata property for a classname.<\/p>\n<address style=\"padding-left: 30px\">If no specific target was found and you want the user to be send to the web browser, you\u2019ll need to create a new Intent with the value of <strong>al:web:url<\/strong> or the orginal target url. You can choose for the option of not having a fallback. Then you should add the metadata property<strong> al:web:should_fallback<\/strong> is false to the head of your HTML page.<\/address>\n<p>In order to send some data from the patients app to the time tracker app, we need to create a <a title=\"Bundle\" href=\"http:\/\/developer.android.com\/reference\/android\/os\/Bundle.html\" target=\"_blank\" rel=\"noopener\">Bundle <\/a>and add it to the Intent as an Extra named <strong>al_applink_data<\/strong>. Once we have done that we can start an Activity for our constructed Intent.<\/p>\n<p><pre class=\"brush: java; title: ; notranslate\" title=\"\">&lt;br&gt;\nprivate void startActivityForAppLink(final String name,&lt;br&gt;\n                                     final String gender,&lt;br&gt;\n                                     final String dob,&lt;br&gt;\n                                     final int time) {&lt;br&gt;\n  new WebViewAppLinkResolver(this)&lt;br&gt;\n      .getAppLinkFromUrlInBackground(Uri.parse(TIME_REGISTRATION_URL))&lt;br&gt;\n      .continueWith(&lt;br&gt;\n    new Continuation&amp;lt;AppLink, AppLinkNavigation.NavigationResult&amp;gt;() {&lt;br&gt;\n      @Override&lt;br&gt;\n      public AppLinkNavigation.NavigationResult then(&lt;br&gt;\n          Task&amp;lt;AppLink&amp;gt; task) {&lt;br&gt;\n        AppLink link = task.getResult();&lt;\/p&gt;\n&lt;p&gt;        Intent intent = new Intent(Intent.ACTION_VIEW);&lt;br&gt;\n        AppLink.Target target = link.getTargets().get(0);&lt;br&gt;\n        intent.setPackage(target.getPackageName());&lt;br&gt;\n        intent.setData(link.getSourceUrl());&lt;\/p&gt;\n&lt;p&gt;        ResolveInfo resolveInfo = getPackageManager()&lt;br&gt;\n            .resolveActivity(intent,&lt;br&gt;\n            PackageManager.MATCH_DEFAULT_ONLY);&lt;br&gt;\n        if (resolveInfo != null) {&lt;br&gt;\n          Bundle extras = new Bundle();&lt;br&gt;\n          extras.putString(&quot;target_url&quot;, TIME_REGISTRATION_URL);&lt;br&gt;\n          extras.putString(&quot;name&quot;, name);&lt;br&gt;\n          extras.putString(&quot;gender&quot;, gender);&lt;br&gt;\n          extras.putString(&quot;dob&quot;, dob);&lt;br&gt;\n          extras.putInt(&quot;time&quot;, time);&lt;\/p&gt;\n&lt;p&gt;          intent.putExtra(&quot;al_applink_data&quot;, extras);&lt;br&gt;\n          startActivity(intent);&lt;br&gt;\n       }&lt;br&gt;\n       return null;&lt;br&gt;\n     }&lt;br&gt;\n   }&lt;br&gt;\n );&lt;br&gt;\n}&lt;br&gt;\n<\/pre><\/p>\n<p>HTML page 2 containing metadata to open the Patients app to deep-link to the information of a patient:<\/p>\n<p><pre class=\"brush: xml; title: ; notranslate\" title=\"\">&lt;br&gt;\n&amp;lt;html&amp;gt;&lt;br&gt;\n  &amp;lt;head&amp;gt;&lt;br&gt;\n    &amp;lt;meta property=&quot;al:android:package&quot;&lt;br&gt;\n          content=&quot;nl.trifork.applinks&quot; \/&amp;gt;&lt;br&gt;\n    &amp;lt;meta property=&quot;al:android:app_name&quot;&lt;br&gt;\n          content=&quot;Patient info&quot; \/&amp;gt;&lt;br&gt;\n    &amp;lt;meta property=&quot;al:android:class&quot;&lt;br&gt;\n          content=&quot;nl.trifork.applinks.PatientItemActivity&quot; \/&amp;gt;&lt;br&gt;\n  &amp;lt;\/head&amp;gt;&lt;br&gt;\n  &amp;lt;body&amp;gt;&amp;lt;\/body&amp;gt;&lt;br&gt;\n&amp;lt;\/html&amp;gt;&lt;br&gt;\n<\/pre><\/p>\n<h3>Time tracker app<\/h3>\n<p>This app is created to receive incoming App Links. To make the app listen to Intents you need to specify an Intent filter to the activity that handles the incoming App Links:<\/p>\n<p><pre class=\"brush: xml; title: ; notranslate\" title=\"\">&lt;br&gt;\n&amp;lt;intent-filter&amp;gt;&lt;br&gt;\n  &amp;lt;action android:name=&quot;android.intent.action.VIEW&quot; \/&amp;gt;&lt;br&gt;\n  &amp;lt;category android:name=&quot;android.intent.category.DEFAULT&quot; \/&amp;gt;&lt;br&gt;\n  &amp;lt;data android:scheme=&quot;http&quot; \/&amp;gt;&lt;br&gt;\n&amp;lt;\/intent-filter&amp;gt;&lt;br&gt;\n<\/pre><\/p>\n<p>To get the incoming App Link data you can call <code>AppLinks.getAppLinkData(getIntent())<\/code>. This will give you the information as a Bundle, which contains all the data we passed in from the Patients app.<\/p>\n<p><pre class=\"brush: java; title: ; notranslate\" title=\"\">&lt;br&gt;\nBundle appLinkData = AppLinks.getAppLinkData(intent);&lt;br&gt;\nif (appLinkData != null) {&lt;br&gt;\n  final String patientName = appLinkData.getString(&quot;name&quot;);&lt;br&gt;\n  TextView patientNameValueView = (TextView)&lt;br&gt;\n      findViewById(R.id.patientNameValueView);&lt;br&gt;\n  patientNameValueView.setText(patientName);&lt;\/p&gt;\n&lt;p&gt;  final String gender = appLinkData.getString(&quot;gender&quot;);&lt;br&gt;\n  final String dob = appLinkData.getString(&quot;dob&quot;);&lt;br&gt;\n  final int time = appLinkData.getInt(&quot;time&quot;);&lt;br&gt;\n}&lt;br&gt;\n<\/pre><\/p>\n<h3>Deep linking<\/h3>\n<p>When I have registered some time for a patient I want to update my view in the Patients app. The patient detail view is reachable from a list of patients and not directly in the app. I have configured an Intent filter on the detail view, so we are able to receive App Links.<\/p>\n<p>I call the url of HTML page 2 which contains the property of the classname as metadata. With this metadata we can construct a more specific Intent the same way we did earlier. This way the package manager can resolve the corresponding view and we can deep link into our app with some extra data. On the flow image you can see that the registered time has been upped by one hour.<\/p>\n<h3>Other features of App Links<\/h3>\n<p>In my example I have used a website to get the metadata from, but it is also possible to publish your links via another service like <a title=\"Parse\" href=\"https:\/\/parse.com\/docs\/cloud_modules_guide#applinks\" target=\"_blank\" rel=\"noopener\">Parse<\/a> or <a title=\"Facebook\" href=\"https:\/\/developers.facebook.com\/docs\/graph-api\/reference\/v2.0\/app-link-host\" target=\"_blank\" rel=\"noopener\">Facebook<\/a>. Also my apps are not available in the app store, but as said before App Links provides you with the option to send the user to the store when an app is not installed on your device.<\/p>\n<p>You can download the full source code here: <a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-blog-src.zip\">source code<\/a><\/p>\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/bit.ly\/3BAo305\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1024x256.png\" alt=\"\" class=\"wp-image-20303\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1024x256.png 1024w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-300x75.png 300w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-768x192.png 768w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1536x384.png 1536w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-2048x512.png 2048w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1920x480.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>When developing apps for mobile phones you want to offer your users the best user experience. Sometimes this includes showing information outside of your app, in another app. Up until recently, there was no real good way to do this. Luckily, now there is a new initiative App Links that provides an open source and [&hellip;]<\/p>\n","protected":false},"author":102,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[53,55],"tags":[25,383,67],"class_list":["post-11922","post","type-post","status-publish","format-standard","hentry","category-android","category-mobile","tag-android","tag-app-links","tag-mobile"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Linking apps together with App Links - Trifork Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linking apps together with App Links - Trifork Blog\" \/>\n<meta property=\"og:description\" content=\"When developing apps for mobile phones you want to offer your users the best user experience. Sometimes this includes showing information outside of your app, in another app. Up until recently, there was no real good way to do this. Luckily, now there is a new initiative App Links that provides an open source and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/\" \/>\n<meta property=\"og:site_name\" content=\"Trifork Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-06-03T09:39:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png\" \/>\n<meta name=\"author\" content=\"Roberto van der Linden\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roberto van der Linden\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/\",\"url\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/\",\"name\":\"Linking apps together with App Links - Trifork Blog\",\"isPartOf\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png\",\"datePublished\":\"2014-06-03T09:39:08+00:00\",\"author\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/037974cf3e24a7b09a93770b190d6e35\"},\"breadcrumb\":{\"@id\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#primaryimage\",\"url\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png\",\"contentUrl\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/trifork.nl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linking apps together with App Links\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/trifork.nl\/blog\/#website\",\"url\":\"https:\/\/trifork.nl\/blog\/\",\"name\":\"Trifork Blog\",\"description\":\"Keep updated on the technical solutions Trifork is working on!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/trifork.nl\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/037974cf3e24a7b09a93770b190d6e35\",\"name\":\"Roberto van der Linden\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/afe49faf7ef8dd3753baefb334568b10?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/afe49faf7ef8dd3753baefb334568b10?s=96&d=mm&r=g\",\"caption\":\"Roberto van der Linden\"},\"url\":\"https:\/\/trifork.nl\/blog\/author\/roberto\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Linking apps together with App Links - Trifork Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/","og_locale":"en_US","og_type":"article","og_title":"Linking apps together with App Links - Trifork Blog","og_description":"When developing apps for mobile phones you want to offer your users the best user experience. Sometimes this includes showing information outside of your app, in another app. Up until recently, there was no real good way to do this. Luckily, now there is a new initiative App Links that provides an open source and [&hellip;]","og_url":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/","og_site_name":"Trifork Blog","article_published_time":"2014-06-03T09:39:08+00:00","og_image":[{"url":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png","type":"","width":"","height":""}],"author":"Roberto van der Linden","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Roberto van der Linden","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/","url":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/","name":"Linking apps together with App Links - Trifork Blog","isPartOf":{"@id":"https:\/\/trifork.nl\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#primaryimage"},"image":{"@id":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#primaryimage"},"thumbnailUrl":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png","datePublished":"2014-06-03T09:39:08+00:00","author":{"@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/037974cf3e24a7b09a93770b190d6e35"},"breadcrumb":{"@id":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#primaryimage","url":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png","contentUrl":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2014\/05\/applinks-300x164.png"},{"@type":"BreadcrumbList","@id":"https:\/\/trifork.nl\/blog\/linking-apps-together-with-app-links\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/trifork.nl\/blog\/"},{"@type":"ListItem","position":2,"name":"Linking apps together with App Links"}]},{"@type":"WebSite","@id":"https:\/\/trifork.nl\/blog\/#website","url":"https:\/\/trifork.nl\/blog\/","name":"Trifork Blog","description":"Keep updated on the technical solutions Trifork is working on!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/trifork.nl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/037974cf3e24a7b09a93770b190d6e35","name":"Roberto van der Linden","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/afe49faf7ef8dd3753baefb334568b10?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/afe49faf7ef8dd3753baefb334568b10?s=96&d=mm&r=g","caption":"Roberto van der Linden"},"url":"https:\/\/trifork.nl\/blog\/author\/roberto\/"}]}},"_links":{"self":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/11922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/comments?post=11922"}],"version-history":[{"count":0,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/11922\/revisions"}],"wp:attachment":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/media?parent=11922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/categories?post=11922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/tags?post=11922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}