Xamarin(Android/iOS)深度链接-通过URL打开应用程序(自定义或非自定义)

Xamarin(Android/iOS)深度链接-通过URL打开应用程序(自定义或非自定义),android,ios,xamarin,deep-linking,custom-url,Android,Ios,Xamarin,Deep Linking,Custom Url,我用Sharepoint和Office365制作了一个网站,用Xamarin为Android和iOS制作了一个应用程序。用户在他们的电子邮件中收到通知,其中附加了一些来自my web的URL。当从手机上打开这些URL时,我想将它们打开到应用程序中,但我在实现这一点时遇到了很多问题 我知道有两种打开链接的方法,使用通用链接(iOS)实现深度链接-应用程序链接(Android)或使用自定义URL方案 在尝试实施自定义URL方案时,我发现Outlook、Gmail和其他电子邮件应用程序无法识别自定义

我用Sharepoint和Office365制作了一个网站,用Xamarin为Android和iOS制作了一个应用程序。用户在他们的电子邮件中收到通知,其中附加了一些来自my web的URL。当从手机上打开这些URL时,我想将它们打开到应用程序中,但我在实现这一点时遇到了很多问题

我知道有两种打开链接的方法,使用通用链接(iOS)实现深度链接-应用程序链接(Android)或使用自定义URL方案

  • 在尝试实施自定义URL方案时,我发现Outlook、Gmail和其他电子邮件应用程序无法识别自定义链接是什么,并将自定义链接显示为简单文本,因此在移动设备中无法找到链接。所以example://something 无法从电子邮件中单击它。有没有办法解决这个问题

  • 在尝试实施通用链接(iOS)时,您需要将AASA(apple app site association)文件上载到您的域,该文件必须位于域的根目录或./well-known/文件夹中。问题是,当使用Sharepoint和Office365创建网站时,无法将文件放置在这些位置。苹果公司的支持告诉我,唯一的解决办法是改变网络,在我看来,这是不可能的

我只通过我的Android应用程序使用意图过滤器实现了从电子邮件中打开链接。这很好,但我需要在Android和iOS中打开相同的链接

我可以将电子邮件中发送的链接格式从更改为myapp://example.com ,这不是问题

你知道怎么做吗


谢谢。

很难从第一个来源复制。以下是您如何在注册Uri方案,以及如何创建示例的示例:

自定义方案由Gmail等过滤,因此您可以通过以下方式完成:

<a href="my-app://deep-link" href="https://example.com/?link=123" href="my-app://deep-link">Open in app</a>


如果您使用常规https链接,请通过用户代理将Android和iOS设备分开,然后使用301或302 HTTP重定向重定向到my-app://deep-link. 或者Android版本,如果它的用户代理。我在工作中这样做,效果很好,所以你也应该这样做?

这不是我要问的,也许我没有正确地解释自己。我不需要我的应用程序通过我的应用程序中显示的url打开另一个应用程序。我需要使用其他应用程序(Gmail、Outlook等)或该应用程序的浏览器版本的外部链接打开我的应用程序。你仍然需要注册uri来告诉Android/iOS它是你的应用程序吗?从邮件中,您应该使用一个普通url到您的API,然后从API发送一个重定向(301/302)到正确的url?以防您想要使用自定义url。在这种情况下,是的,您需要注册uri(在Android的清单上,在iOS的Inflo.plist上)。同样,我这样做没有问题,我在电子邮件(不是我的应用程序)中的url显示有问题,这在使用自定义url时是不可点击的。是的,对此,我告诉过你在新闻稿/电子邮件中发送https链接。如果我在新闻稿/电子邮件中发送和https链接,我只能用Android而不是iOS打开它们。对于iOS,您无法在info.plist中将https注册为自定义URL。我解决此问题的唯一方法是注册Outlook检测为超链接的自定义URL。我在这里找到了这些前缀:我们在Android/iOS中为wais://example.com 而且它工作得很好。我知道这是一个解决办法,但这是经过数周调查后的第一个有效解决方案。
<a href="my-app://deep-link" href="https://example.com/?link=123" href="my-app://deep-link">Open in app</a>