2

I want to open my application from browser url, following this Link to build my app.

AndroidManifest.xml

<activity
        android:name="pkg.android.rootways.worldofrental.DrawerActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppBaseTheme"
        android:windowSoftInputMode="stateHidden|stateVisible" >
        <intent-filter>
            <data android:scheme="rentaldashboard" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <action android:name="android.intent.action.VIEW" />
        </intent-filter>

     </activity>

and PHP code:

(function (root, factory) {
if ( typeof define === 'function' && define.amd ) {
    define("deeplink", factory(root));
} else if ( typeof exports === 'object' ) {
    module.exports = factory(root);
} else {
    root["deeplink"] = factory(root);
}
})(window || this, function(root) {

"use strict"

/**
 * Cannot run without DOM or user-agent
 */
if (!root.document || !root.navigator) {
    return;
}

/**
 * Set up scope variables and settings
 */
var timeout;
var settings = {};
var defaults = {
    iOS: {},
    android: {},
    fallback: true,
    delay: 1000,
    delta: 500
}

/**
 * Merge defaults with user options
 * @private
 * @param {Object} defaults Default settings
 * @param {Object} options User options
 * @returns {Object} Merged values of defaults and options
 */
var extend = function(defaults, options) {
    var extended = {};
    for(var key in defaults) {
        extended[key] = defaults[key];
    };
    for(var key in options) {
        extended[key] = options[key];
    };
    return extended;
};

/**
 * Generate the app store link for iOS / Apple app store
 *
 * @private
 * @returns {String} App store itms-apps:// link 
 */
var getStoreURLiOS = function() {
    var baseurl = "http://dev.worldofrental.com/";
    var name = settings.iOS.appName;
    var id = settings.iOS.appId; 
    return  baseurl;
}

/**
 * Generate the app store link for Google Play
 *
 * @private
 * @returns {String} Play store https:// link
 */
var getStoreURLAndroid = function() {
    var baseurl = "http://dev.worldofrental.com/";
    var id = settings.android.appId;
    return baseurl;       
}

/**
 * Get app store link, depending on the current platform
 *
 * @private
 * @returns {String} url
 */
var getStoreLink = function() {
    var linkmap = {
        "ios": settings.iOS.storeUrl || getStoreURLiOS(),
        "android": settings.android.storeUrl || getStoreURLAndroid()
    }

    return linkmap[settings.platform];
}

/**
 * Check if the user-agent is Android
 *
 * @private
 * @returns {Boolean} true/false
 */
var isAndroid = function() {
    return navigator.userAgent.match('Android');
}

/**
 * Check if the user-agent is iPad/iPhone/iPod
 *
 * @private
 * @returns {Boolean} true/false
 */
var isIOS = function() {
    return navigator.userAgent.match('iPad') || 
           navigator.userAgent.match('iPhone') || 
           navigator.userAgent.match('iPod');
}

/**
 * Check if the user is on mobile
 *
 * @private
 * @returns {Boolean} true/false
 */
var isMobile = function() {
    return isAndroid() || isIOS();
}

/**
 * Timeout function that tries to open the app store link.
 * The time delta comparision is to prevent the app store
 * link from opening at a later point in time. E.g. if the 
 * user has your app installed, opens it, and then returns 
 * to their browser later on.
 *
 * @private
 * @param {Integer} Timestamp when trying to open deeplink
 * @returns {Function} Function to be executed by setTimeout
 */
var openAppStore = function(ts) {
    return function() {
        var link = getStoreLink();
        var wait = settings.delay + settings.delta;
        if (typeof link === "string" && (Date.now() - ts) < wait) {
            window.location.href = link;
        }
    }
}

/**
 * The setup() function needs to be run before deeplinking can work,
 * as you have to provide the iOS and/or Android settings for your app.
 *
 * @public
 * @param {object} setup options
 */
var setup = function(options) {
    settings = extend(defaults, options);

    if (isAndroid()) settings.platform = "android";
    if (isIOS()) settings.platform = "ios";
}

/**
 * Tries to open your app URI through a hidden iframe.
 *
 * @public
 * @param {String} Deeplink URI
 */
var open = function(uri) {
    if (!isMobile()) {
        return;
    }

    if (isAndroid() && !navigator.userAgent.match(/Firefox/)) {
        var matches = uri.match(/([^:]+):\/\/(.+)$/i);
        uri = "intent://" + matches[2] + "#Intent;scheme=" + matches[1];
        uri += ";package=" + settings.android.appId + ";end";
    }

    if (settings.fallback) {
        timeout = setTimeout(openAppStore(Date.now()), settings.delay);
    }

    var iframe = document.createElement("iframe");
    iframe.onload = function() {
        clearTimeout(timeout);
        iframe.parentNode.removeChild(iframe);
        window.location.href = uri;
    };

    iframe.src = uri;
    iframe.setAttribute("style", "display:none;");
    document.body.appendChild(iframe);
}

// Public API
return {
    setup: setup,
    open: open
};

});

index.html

<!doctype html>
<html>
<head>
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<script src="browser-deeplink.js" type="text/javascript"></script>
<script type="text/javascript">

deeplink.setup({
iOS: {
    appName: "myapp",
    appId: "123456789",
},
android: {
    appId: "com.myapp.android"
}
});
function clickHandler(uri) {
    deeplink.open(uri);
    return false;
}

</script>
<style>
*, *:before, *:after {
    box-sizing: border-box;
}
a {
    font-family: monospace;
    display: block;
    width: 100%;
    margin: 10px 0;
    padding: 25px;
    background: #060;
    color:#fff;
    text-align: center;
    font-size: 20px;
}
</style>
</head>
<body>
<a href="#" data-uri="rentaldashboard://" onclick="clickHandler(this.dataset.uri)">open fb://profile</a>

in my index.html file in android portion I use deeplink setup

deeplink.setup({
iOS: {
    appName: "myapp",
    appId: "123456789",
},
android: {
    appId: "com.myapp.android"
}

});

In android I want to set web site URL not application package name so can I pass web site url as Link/ in place of appId:com.myaap.android

When I use above code it will redirect to me in play store but I want to redirect in my web site. Any idea how can I make this possible?

Harshal Kalavadiya
  • 2,412
  • 4
  • 38
  • 71

0 Answers0