For iOS-Universal-Links, Deep Link, URL Scheme to open App
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID_001.com.demo.abc",
"paths": [ "/page_1/data/*", "/page_2/item/201?/*"]
},
{
"appID": "TeamID_002.com.demo.abcd",
"paths": [ "*" ]
}
]
}
}
Sample domain: linkingappsetup.domain.com
The root folder of structure:
/opt/lampp/htdocs/linkingappsetup.domain.com
+-- apple-app-site-association
+-- .htacess
+-- .well-known
| +-- apple-app-site-association
| +-- .htacess
<Files "apple-app-site-association">
ForceType 'application/json'
</Files>
Can visit the link like as below:
https://linkingappsetup.domain.com/apple-app-site-association
https://linkingappsetup.domain.com/.well-known/apple-app-site-association
Note:Setup SSL would be betterGuide
And can verify on Apple App Site Association (AASA) Validator
<?php
$PATH_INFO = $_SERVER['PATH_INFO'];//pass from htaccss
$PI = explode("/", mb_substr(trim($PATH_INFO), 1));
//print_r($PI);
$deeplink_type = trim($PI[0]);
$deeplink_id = trim($PI[1]);
//Detect special conditions devices
$iPod = stripos($_SERVER['HTTP_USER_AGENT'], "iPod");
$iPhone = stripos($_SERVER['HTTP_USER_AGENT'], "iPhone");
$iPad = stripos($_SERVER['HTTP_USER_AGENT'], "iPad");
$Android = stripos($_SERVER['HTTP_USER_AGENT'], "Android");
$AndroidDownurl = "https://play.google.com/store/apps/details?id=com.domain.linkingappsetup";
$iOSDownurl = "https://itunes.apple.com/hk/app/happiness/id123456789?ls=1&mt=8";
$deeplink_url = "linkingappsetup://linkingappsetup.domain.com/" . $deeplink_type . "/" . $deeplink_id;
$app_url = "";
if ($iPod || $iPhone) {
//browser reported as an iPhone/iPod touch -- do something here
//header("Location: $iOSDownurl");
$app_url = $iOSDownurl;
} else if ($iPad) {
//browser reported as an iPad -- do something here
//header("Location: $iOSDownurl");
$app_url = $iOSDownurl;
} else if ($Android) {
//browser reported as an Android device -- do something here
//header("Location: $AndroidDownurl");
$app_url = $AndroidDownurl;
} else {
//browser reported as a webOS device -- do something here
if (strpos($_SERVER['HTTP_USER_AGENT'], "Win") !== FALSE) {
//header("Location: $AndroidDownurl");
$app_url = $AndroidDownurl;
} else if (strpos($_SERVER['HTTP_USER_AGENT'], "Mac") !== FALSE) {
//header("Location: $iOSDownurl");
$app_url = $iOSDownurl;
}
}
$og_url="linkingappsetup://linkingappsetup.domain.com/". $deeplink_type . "/" . $deeplink_id;
$og_site_name = "Linking App Setup";
$og_title = "Linking App Setup";
$og_description = "For iOS-Universal-Links, Deep Link, URL Scheme to open App";
$og_image = "../Your_icon.png";
$og_image_width = "512";
$og_image_height = "512";
if (!empty($deeplink_type) && (!empty($deeplink_id))) {
if (in_array($deeplink_type, ['page_1', 'page_2'])) {
//fetch some information to replace og data.
//$og_image='...';
//$og_description='...';
} else {
$deeplink_url="";
}
} else {
$deeplink_url="";
}
if (!empty($deeplink_url)) {
//sleep(1);
//header("Location:".$deeplink_url);
} else {
$deeplink_url = $app_url;
}
?>
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# website: http://ogp.me/ns/website#">
<title><?php echo $og_title; ?></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<link rel="icon" href="../images/Your_icon_ico.ico" type="image/x-icon" />
<link rel="shortcut icon" href="../images/Your_icon_ico.ico" type="image/x-icon" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:type" content="website">
<meta property="fb:app_id" content="Add_Your_fb_app_id_if_you_have_for_graph_api"/>
<meta propery="og:site_name" content="<?php echo $og_site_name ?>"/>
<meta property="og:url" content="<?php echo $og_url ?>" />
<meta property="og:title" content="<?php echo $og_title ?>" />
<meta property="og:description" content="<?php echo $og_description ?>" />
<link rel="apple-touch-icon" href="../images/Your_apple_touch_icon.png"/>
<meta property="al:ios:url" content="<?php echo $og_url ?>">
<meta property="al:ios:app_store_id" content="Your_apple_store_app_id">
<meta property="al:ios:app_name" content="Your_App_Name">
<meta property="al:android:url" content="<?php echo $og_url ?>">
<meta property="al:android:package" content="com.domain.linkingappsetup">
<meta property="al:android:app_name" content="linkappsetup">
<?php
if (!empty($og_image)) {
?>
<meta property="og:image" content="<?php echo $og_image ?>"/>
<meta property="og:image:width" content="<?php echo $og_image_width ?>"/>
<meta property="og:image:height" content="<?php echo $og_image_height ?>"/>
<?php
}
?>
</head>
<body>
<div class="row">
<div class="col-md-12">
<a class="btn btn-block"><img src="../images/Your_app_icon.png" height="100"/></a>
<a class="btn btn-block" href="<?php echo $AndroidDownurl;?>"><img src="../images/Google_Play.png" height="130"/></a>
<a class="btn btn-block" href="<?php echo $iOSDownurl;?>"><img src="../images/Apple_Store.png" height="100"/></a>
</div>
</div>
<script type="text/javascript">
setTimeout(function () {
location.href = "<?php echo $deeplink_url; ?>";
return false;
}, 500);
</script>
</body>
</html>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
https://linkingappsetup.domain.com/page_1/data/123
And can check with App Search API Validation Tool
Reference: