是否可以将浏览器深层链接到应用程序? (没有弹出窗口)
Is it possible to browser deeplink to an app? (without popup)
我正在尝试从浏览器深层链接到应用程序,效果很好。
但问题是,iOS 显示 "Safari can't open the page",然后重定向到应用商店(后备解决方案)。
有没有可能做一些 JS 魔术,这样弹出框就不会出现了?
代码如下:
var now = new Date().valueOf();
setTimeout(function () {
if (new Date().valueOf() - now > 100) return;
window.location = "https://itunes.apple.com/us/app/twitter/id333903271?mt=8";
}, 10);
window.location = "twitter://timeline";
前段时间我遇到过类似的情况,我认为最好的方法是拥有一个 iframe 并为其提供一个源..
function mobileDeepLink() {
var iframe = document.createElement('iframe');
iframe.src = "twitter://timeline";
// hide iframe visually
iframe.width = 0;
iframe.height = 0;
iframe.frameBorder = 0;
var now = new Date().valueOf();
setTimeout(function () {
if (new Date().valueOf() - now > 100) return;
window.location = "https://itunes.apple.com/us/app/twitter/id333903271?mt=8";
}, 10);
// Append it to the body.
document.body.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
}
mobileDeepLink();
这样您就不会在找不到方案时看到错误弹出窗口。
更新
此方法仅适用于 IOS 8 及更低版本。从 IOS 9 及更高版本开始,使用通用链接原生支持深度链接。
我正在尝试从浏览器深层链接到应用程序,效果很好。 但问题是,iOS 显示 "Safari can't open the page",然后重定向到应用商店(后备解决方案)。
有没有可能做一些 JS 魔术,这样弹出框就不会出现了?
代码如下:
var now = new Date().valueOf();
setTimeout(function () {
if (new Date().valueOf() - now > 100) return;
window.location = "https://itunes.apple.com/us/app/twitter/id333903271?mt=8";
}, 10);
window.location = "twitter://timeline";
前段时间我遇到过类似的情况,我认为最好的方法是拥有一个 iframe 并为其提供一个源..
function mobileDeepLink() {
var iframe = document.createElement('iframe');
iframe.src = "twitter://timeline";
// hide iframe visually
iframe.width = 0;
iframe.height = 0;
iframe.frameBorder = 0;
var now = new Date().valueOf();
setTimeout(function () {
if (new Date().valueOf() - now > 100) return;
window.location = "https://itunes.apple.com/us/app/twitter/id333903271?mt=8";
}, 10);
// Append it to the body.
document.body.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
}
mobileDeepLink();
这样您就不会在找不到方案时看到错误弹出窗口。
更新
此方法仅适用于 IOS 8 及更低版本。从 IOS 9 及更高版本开始,使用通用链接原生支持深度链接。