加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iOS自定义URL方案XCode

发布时间:2020-12-14 19:17:22 所属栏目:百科 来源:网络整理
导读:首先,我知道如何在iOS中制作自定义方案,我知道如何使用 javascript setTimeout方法从网站打开我的应用程序. 我有一个使用自定义URL方案的应用程序,它工作得很好.它的作用是,它向联系人列表中的其他用户发送了一条http://testsite.com/QueryStrings消息(预定
首先,我知道如何在iOS中制作自定义方案,我知道如何使用 javascript setTimeout方法从网站打开我的应用程序.

我有一个使用自定义URL方案的应用程序,它工作得很好.它的作用是,它向联系人列表中的其他用户发送了一条http://testsite.com/QueryStrings消息(预定义),并在点击短信中的那些网络链接时,会发生以下情况:

>打开Safari中的链接
>如果使用setTimeout安装了自定义URL,请打开应用程序
>如果未安装,请转到正常网站页面

实际上我想要的是直接从短信打开我的应用程序,如果安装,但我必须在短信中发送我的自定义网址方案,这不是一个选项,因为如果没有安装应用程序,那么这个短信不会工作所以一个网络链接是现在唯一的选择.

今天,我安装了SoundCloud,不小心注意到这个东西是http:// m. soundcloud .com / … url是通过短信发送的,点击链接后,它会直接打开应用程序(如果已安装),而不是Safari(对我来说很奇怪).

所以我想知道如何在不打开Safari的情况下从Web链接打开他们的应用程序.我用Google搜索,但我无法找到解决问题的方法.我也从我的手机上附上了一个截图,按住消息应用程序中的链接,也可以在“SoundCloud”选项中打开.那么SoundCloud如何注册一个http链接,以便在应用程序中自动处理.请帮帮我们

Screenshot of SoundCloud Open

解决方法

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

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

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

从功能上讲,它允许您拥有一个链接,可以打开您的应用程序或打开您的移动网站.

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

>在developers.apple.com上注册您的应用程序
>在您的应用标识符上启用“关联域”
>在Xcode项目中启用“关联域”
>添加适当的域权利
>确保在构建时包含权利文件

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

>购买域名或从现有域名中挑选
>获取域名的SSL认证
>创建结构化的“apple-app-site-association”JSON文件
>使用SSL认证签署JSON文件
>配置文件服务器

Apple在iOS 9.0中推出了Universal Links,它将应用程序路由移动到操作系统中,这样开发人员就不必担心在Javascript中进行路由.

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

URI方案通过App Delegate中的openUrl接收深层链接URL. Universal Links通过不同的代码路径接收数据:continueUserActivity.这种新的委托方法用于许多应用程序转换,从Spotlight到Universal Links,并且可能会在未来的OS版本中看到更多用例.

下面是一段代码,您可以使用它来检索打开应用程序的完整通用链接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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读