当前位置: 首页 > 知识库问答 >
问题:

理解深度链接中的URI

闻人献
2023-03-14

根据这个-

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_view_http_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />
    </intent-filter>
</activity>

关于第一个意图过滤器,我知道当点击的链接是“http://www.example.com/gizmos”时,它会重定向到带有意图过滤器的应用页面。但是关于第二个意图过滤器“示例://gizmos”,这看起来不像是一个有效的网络网址,也没有有效的网络网址会从这个开始。那么为什么应用程序使用这样的意图过滤器呢?我见过很多这样的意图过滤器,在这些类型中,结合主机和方案并不构成一个合适的网络网址。我知道文档中提到它是URI而不是URL。像“示例://gizmos”这样的URI如何打开?这样的URI可以从外部应用程序打开吗?

共有1个答案

鞠泰平
2023-03-14

你测试过这个example://gizmosURI?e、 g.在某个网站上点击链接打开某个浏览器?或者在代码中添加一些按钮,并尝试使用systemIntent的默认选择器打开此方案。createChooserwhenonClick

请注意,当您在某些消息中获取http://链接并单击该链接时,系统将显示picker:您的应用程序和web浏览器,因为此类应用程序已声明可使用scheme=“http”打开,且没有任何进一步的限制(例如,到主机值)。当你点击examplescheme时,默认选取器将寻找声明它可以打开此类链接的应用程序,如果没有你的应用程序,它将显示此链接不“可打开”,因此这是仅应用程序的链接

顺便说一句,这不是目前最好的方法,在本机级别上效果最好——在两个本机应用程序之间进行通信,并检查另一方是否已安装——而不是与web链接混合使用。最好是整合应用程序链接(实际上是扩展的深度链接)。此模式仅适用于webschemes(如httphttps),但如果安装了,则可以自动从浏览器重定向到应用程序(如果未安装,则保持在web上),并且服务器声明web URI可以/应该重定向到本机应用程序

请注意,还有其他默认的非web方案s,如著名的mailto:

 类似资料:
  • 众所周知,iOS深层链接已经改变了一点,称为通用链接,有了通用链接,我们需要在您的Xcode项目中启用“关联域”,并在那里添加受支持的域,还有一些变化,如在域服务器上托管苹果应用站点关联JSON。 这一点我非常理解,但我的问题是我必须支持多个社区,可能每个使用应用程序的企业都会有自己的社区,所以将所有社区(域)添加到“关联域”中不是一件好事,如果有新企业使用应用程序,然后我需要提供一个应用程序更新

  • 我正在实现Android深度链接的概念,它工作正常,我的问题是,如果应用程序没有安装在手机上,我想将链接重定向到我的play store应用程序页面。 请引导我找到它,谢谢。

  • 我们正在尝试在一款iOS应用中实现延迟深度链接,以鼓励用户邀请好友使用该应用,并根据用户的推荐链接安装次数来奖励用户。与Tapstream的产品基本相似。 请考虑以下示例: 因此,UserA在他们想要的任何网络上共享他们的链接“ourappurl.com/refer?id=UserA”。UserB点击这个链接,这个链接会把他们带到Safari,然后弹出到应用程序商店页面,在那里UserB下载应用程

  • 我正在使用react-native-firebase with messaging向我的应用程序交付通知,使用admin.messaging().send(消息),非常类似于下面的内容:https://medium.com/the-modert-development-stack/React-Native-Push-notifications-with-Firebase-Cloud-functio

  • 我启用了深度链接,还创建了文件夹。 当点击一个URL应用程序打开相关的内容。 我的应用程序中有一个按钮,可以在网络浏览器中打开内容。但是,再次打开链接时,会再次打开应用程序。 我看到我可以尝试设置软件包的目的是,但这不是一个干净的解决方案,因为一些Android用户可能会使用其他浏览器。 我怎样才能正确地做到这一点?

  • 我的清单中定义了以下内容: 我将onCreate()定义为: 这是按照Android留档:Android深度链接 所以问题是: 如何测试URI深层链接?根据留档,我运行类似 adb shell am start-W-aAndroid系统。意图行动视图-d“example://gizmos“com.app.package 但这产生了: 错误:活动未启动,无法解决意图{act=android.inte