gpt4 book ai didi

iOS 自定义 URL 方案 XCode

转载 作者:可可西里 更新时间:2023-11-01 04:45:18 24 4
gpt4 key购买 nike

首先,我知道如何在 iOS 中制作自定义方案,我知道如何使用 javascript setTimeout 方法从网站打开我的应用程序。

我有一个使用自定义 URL 方案的应用程序,它运行良好。它所做的是,它发送一个 http://testsite.com/QueryStrings向联系人列表(预定义)中的其他用户发送消息并单击短信中的那些 Web 链接时,会发生以下情况:

  1. 在 Safari 中打开链接
  2. 如果安装了使用 setTimeout 的自定义 url,则打开应用
  3. 如果没有安装,转到正常的网站页面

我实际上想要的是直接从 SMS 打开我的应用程序(如果已安装),但为此我必须在 SMS 中发送我的自定义 url 方案,这不是一个选项,因为如果未安装应用程序,则此 SMS 将无法工作,所以网页链接是目前唯一的选择。

今天安装SoundCloud,无意中发现这个东西是当http://m. soundcloud .com/... url 是在短信中发送的,单击链接会直接打开应用程序(如果已安装),而不是 Safari(对我来说很奇怪)。

所以我想知道他们的应用程序如何在不打开 Safari 的情况下从 Web 链接打开。我用谷歌搜索,但找不到解决问题的方法。我也附上了我手机上的屏幕截图,按住消息应用程序中的链接也会提供在“SoundCloud”选项中打开。那么SoundCloud是如何注册一个http链接,在app中自动处理的呢。请大家帮忙

Screenshot of SoundCloud Open

最佳答案

这个问题的答案是使用Associated Domains(但在9.2之后我们必须使用Universal Links来实现)。

在 Universal Links 之前,安装应用程序时打开应用程序的主要机制是尝试在 Safari 中重定向到应用程序的 URI 方案(像这样在应用程序的 PLIST 中注册)。这将路由逻辑放在 Safari 中,但无法检查应用程序是否已安装。

iOS 9 通用链接旨在解决此问题。单击链接时,iOS 不会首先打开 Safari,而是会检查是否已为与该链接关联的域注册通用链接,然后检查是否安装了相应的应用程序。如果当前安装了该应用程序,它将被打开。如果不是,Safari 将打开并加载 http(s) 链接。

在功能上,它允许您使用一个链接打开您的应用或打开您的移动网站。

配置您的应用以注册批准的域

  1. 在 developers.apple.com 注册了您的应用
  2. 在您的应用标识符上启用“关联域”
  3. 在您的 Xcode 项目中启用“关联域”
  4. 添加适当的域授权
  5. 确保权利文件包含在构建中

配置您的网站以托管“apple-app-site-association”文件

  1. 购买域名或从现有域名中选择
  2. 为域名获取SSL认证
  3. 创建结构化的“apple-app-site-association”JSON 文件
  4. 使用 SSL 证书签署 JSON 文件
  5. 配置文件服务器

Apple 在 iOS 9.0 中推出了 Universal Links,它将应用程序路由移至操作系统中,因此开发人员无需担心在 Javascript 中进行路由。

在应用程序中接收通用链接 URL

URI 方案通过 App Delegate 中的 openUrl 接收深层链接 URL。通用链接通过不同的代码路径接收数据:continueUserActivity。这种新的委托(delegate)方法用于许多应用程序转换,从 Spotlight 到通用链接,并且可能会在未来的操作系统版本中引入更多用例。

下面是一段代码,您可以使用它来检索打开应用程序的完整通用链接 URL。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSString *myUrl = [userActivity.webpageURL absoluteString];
// parse URL string or access query params
}
return YES;
}

来源:https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

关于iOS 自定义 URL 方案 XCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35032158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com