如何在 Windows Phone 8 中实现深度链接
How to implement deep linking in Windows Phone 8
我正在尝试使用 myapp:// moniker 实现深度链接。出于测试目的,我有一个包含以下元的 HTML 页面:
<html><head>
<meta property="al:windows_phone:app_id_here" content="12345" />
<meta property="al:windows_phone:url" content="myapp://products/?id=widget" />
<meta property="al:windows_phone:myapp" content="Example Store" />
<title></title>
</head>
<body>
<h1>Test</h1>
</body>
</html>
并且在 WMAppManifest 中,我已将协议声明为:
<Extensions>
<Protocol Name="myapp" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
</Extensions>
我在私人服务器上托管了 html,但是在 Windows Phone 上通过 Internet Explorer 导航到该页面并没有打开该应用程序,相反,它只显示网页。我对深度链接很陌生。我做错了什么?
AppLinks 元标记只会宣传您指向 crawlers/bots 的深层链接(这样 Google 就知道您的网站有相应的应用程序和深层链接)。
要实现实际的深层链接,您必须向您的网站添加一些代码。下面是一个非常简单的例子:
<script>
// when the page is loaded...
window.onload = function() {
// and viewed on a Windows Phone...
if (navigator.userAgent.match(/Windows Phone/)) {
// then try to open the deep link
window.location.replace('myapp://products/?id=widget');
// if it didn't work after half a second, then redirect the
// user to the app store where he can download the app
setTimeout(function() {
window.location.replace('http://www.windowsphone.com/s?appid=12345');
}, 500);
}
}
</script>
如果您不想自己实现它,那么您可以使用第三方提供商提供深度链接,例如Shortcut Media(免责声明:我目前在 Shortcut Media 工作)。
我正在尝试使用 myapp:// moniker 实现深度链接。出于测试目的,我有一个包含以下元的 HTML 页面:
<html><head>
<meta property="al:windows_phone:app_id_here" content="12345" />
<meta property="al:windows_phone:url" content="myapp://products/?id=widget" />
<meta property="al:windows_phone:myapp" content="Example Store" />
<title></title>
</head>
<body>
<h1>Test</h1>
</body>
</html>
并且在 WMAppManifest 中,我已将协议声明为:
<Extensions>
<Protocol Name="myapp" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
</Extensions>
我在私人服务器上托管了 html,但是在 Windows Phone 上通过 Internet Explorer 导航到该页面并没有打开该应用程序,相反,它只显示网页。我对深度链接很陌生。我做错了什么?
AppLinks 元标记只会宣传您指向 crawlers/bots 的深层链接(这样 Google 就知道您的网站有相应的应用程序和深层链接)。
要实现实际的深层链接,您必须向您的网站添加一些代码。下面是一个非常简单的例子:
<script>
// when the page is loaded...
window.onload = function() {
// and viewed on a Windows Phone...
if (navigator.userAgent.match(/Windows Phone/)) {
// then try to open the deep link
window.location.replace('myapp://products/?id=widget');
// if it didn't work after half a second, then redirect the
// user to the app store where he can download the app
setTimeout(function() {
window.location.replace('http://www.windowsphone.com/s?appid=12345');
}, 500);
}
}
</script>
如果您不想自己实现它,那么您可以使用第三方提供商提供深度链接,例如Shortcut Media(免责声明:我目前在 Shortcut Media 工作)。