Откройте ссылку на веб-сайт, если приложение не установлено в Android с помощью Scema

Я хочу открыть свое приложение из URL браузера, после этого Ссылка на сайт построить мое приложение.

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>

и код PHP:

(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>

в моем файле index.html в части Android я использую настройки Deeplink

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

});

В Android я хочу установить URL-адрес веб-сайта, а не имя пакета приложения, поэтому я могу передать URL-адрес веб-сайта как Ссылка на сайт/ на месте APPID: com.myaap.android

Когда я использую приведенный выше код, он будет перенаправлен мне в игровой магазин, но я хочу перенаправить на мой веб-сайт. Любая идея, как я могу сделать это возможным?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]