Android 为移动应用程序创建深度链接

Android 为移动应用程序创建深度链接,android,ios,redirect,deep-linking,applinks,Android,Ios,Redirect,Deep Linking,Applinks,我想为我的应用程序创建一个促销链接,我可以通过电子邮件分发。当用户单击电子邮件中的链接时,网页会执行以下操作: 确定哪个操作系统(iOS或Android) 如果设备上安装了应用程序-打开应用程序 Else-将用户带到AppStore(或)PlayStore(或)自定义URL 我试着使用AppLinks(AppLinks.org)——但我无法让它工作。浏览器如何理解“al:xx:xxx..”标记?它只适用于facebook/twitter吗 <html> <head>

我想为我的应用程序创建一个促销链接,我可以通过电子邮件分发。当用户单击电子邮件中的链接时,网页会执行以下操作:

  • 确定哪个操作系统(iOS或Android)
  • 如果设备上安装了应用程序-打开应用程序
  • Else-将用户带到AppStore(或)PlayStore(或)自定义URL
  • 我试着使用AppLinks(AppLinks.org)——但我无法让它工作。浏览器如何理解“al:xx:xxx..”标记?它只适用于facebook/twitter吗

    <html>
        <head>
           <meta property="al:ios:url" content="applinks://docs" />
           <meta property="al:ios:app_store_id" content="12345" />
           <meta property="al:ios:app_name" content="App Links" />
           <meta property="al:android:url" content="applinks://docs" />
           <meta property="al:android:app_name" content="App Links" />
           <meta property="al:android:package" content="org.applinks" />
           <meta property="al:web:url" content="http://applinks.org/documentation" />
       </head>
    
    
    

    我还尝试了另一篇文章中的一些javascript,但如果未安装该应用程序,浏览器将显示错误:

    <script>
        window.onload = function() {
            window.location = 'http://www.launchMyApp';
    
            setTimeout("window.location = 'http://play.google.com/someApp';", 1000);
        }
    </script>
    
    
    window.onload=函数(){
    window.location=http://www.launchMyApp';
    setTimeout(“window.location=”)http://play.google.com/someApp';", 1000);
    }
    
    请帮忙。 谢谢

    他们给你的是一个URI(请参阅)。当你的应用程序安装后,它可以注册自己以响应特定的URL方案。下面是一个链接到歌曲的Spotify URI示例

    spotify:track:0FutrWIUM5Mg3434asiwkp
    
    如果您的设备(包括桌面)上安装了Spotify,您可以单击,它应该会自动打开Spotify应用程序。该应用程序会响应,因为它已注册为该类型URL的响应者。应用程序使用URI的其余部分来执行某些特定操作。在这种情况下,Spotify将URI识别为指向具有特定曲目标识符的歌曲的链接,并打开相应屏幕

    你的应用程序可以注册自己以响应特定的URL方案,如果用户点击已安装应用程序的链接,它将直接打开到你的应用程序。缺点是,如果未安装应用程序,操作系统将无法理解URL方案,并抛出错误

    我认为您正在寻找的解决方案是一个简单的HTTP链接,指向站点上托管的页面(脚本)。您可以像传递普通链接一样传递参数

    http://www.myapp.org/?user=123&source=email. 
    

    您的页面将使用一些服务器端Javascript,该Javascript将尝试打开应用程序指定的URL方案,类似于您在上面发布的内容。如果失败,它将根据HTTP用户代理标头中的浏览器信息将用户重定向到相应的应用商店。您可能需要一些其他Javascript来支持p按下警报。

    我正在为Facebook开发此功能,发现以下内容是在您访问时由他们的系统生成的

    
    应用程序链接
    重定向。。。
    

    你可以在底部看到meta标记,该标记不使用任何javascript进行重定向,并且在所有主要浏览器上都受支持。

    这在iOS 9中现在是可能的。苹果今年在WWDC 2015中宣布了Universal deep links。你可能想看视频-

    它现在可以:

  • 检查应用程序是否已安装,并在iOS应用程序中打开内容
  • Else正常失败,可以在safari中打开内容

  • iOS 9在搜索API之后的最佳功能之一。

    应用程序链接无法为您解决问题,因为Safari和Chrome不支持它。此外,虽然有一些JS解决方案,但没有一个是理想的,因为它们都会有一些怪癖。我也有同样的问题,没有脚本可以解决吗s、 任何例子都值得欣赏JavaScript重定向肯定有潜在的怪癖!我在一家公司(hokolinks.com)工作,我们编写了一个更复杂的脚本,但对于一些疯狂的Android手机来说仍然失败。谷歌和苹果都宣布了一个无缝解决方案(无需JS)为此,请在服务器上使用文件以便于集成。请检查iOS和App Link的通用链接(是,同名)对于Android。我在这里有一个详细的解决方案文档作为答案:我已经在这个问题下写了一个详细的解决方案文档:谢谢你的回答。我正在寻找一个更完整的解决方案,因为App Links文档所指的是你所展示的同一个实现。当你说完整的解决方案时,你的意思是你想要一个更完整的解决方案吗l这项工作所需的代码?我不认为你会在这里找到。不是真的。我不是在寻找完整的代码,我相信没有人会在这里得到这样的代码。我的意思是你所建议的已经实现。也就是说,IOS方案已经创建,当你直接在浏览器..但我无法从网页本身执行同样的操作..我想说的是,您发布的解决方案并不能完全解决这个难题。它不能解决哪一部分?将用户发送到常规HTTP页面,然后使用javascript了解平台,并将用户重定向到相应的存储,或打开应用程序(以可用的为准)这是我的答案所描述的。这篇文章:描述的是javascript片段,这正是你试图使用相同策略所做的。我正在检查是否有可能避免添加javascript,并使用Meta标记,这将打开应用程序中的链接,因为我相信当hostna我之后是它的url映射。感谢您发布有关通用链接方法的链接。但现在我想继续@IntrepidPat建议的方法。
    http://www.myapp.org/?user=123&source=email. 
    
    <html>
    <head><title>App Link</title>
        <meta property="fb:app_id" content="XXXXXXXXXXXXXXX"/>
        <meta property="al:ios:url" content="example://test"/>
        <meta property="al:ios:app_name" content="Example App"/>
        <meta property="al:ios:app_store_id" content="XXXXXXXXX"/>
        <meta property="al:android:package" content="com.example.client"/>
        <meta property="al:android:app_name" content="Example App"/>
        <meta property="al:android:url" content="example://test"/>
        <meta property="al:web:should_fallback" content="false"/>
        <meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.example.client"/>
    </head>
    <body>Redirecting...</body>
    </html>