首页 > 其他分享 >iOS开发基础103-APP之间跳转

iOS开发基础103-APP之间跳转

时间:2024-07-16 16:44:57浏览次数:14  
标签:Schemes Links URL APP iOS 应用 跳转 Universal

iOS提供了多种方式来实现应用之间的相互跳转。其中,URL Schemes和Universal Links是两种主要的方法。下面详细介绍这两种方法,并提供相应的示例代码,同时对它们的优缺点进行分析。

一、URL Schemes

1. 什么是URL Schemes

URL Schemes是一种基于URL的通讯方式,允许一个应用通过指定的URL打开另一个应用。每个应用可以注册一个或多个自定义URL Schemes。

2. 配置URL Schemes

在应用的Info.plist中添加URL Types,配置自定义URL Schemes:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.example.myapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
    </dict>
</array>

3. 实现URL Schemes的处理

在AppDelegate中实现application:openURL:options:方法:

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
    if ([[url scheme] isEqualToString:@"myapp"]) {
        // 处理打开URL的逻辑
        NSLog(@"URL host: %@", [url host]);
        return YES;
    }
    return NO;
}

@end

4. 通过URL Schemes跳转到其他应用

在另一个应用中,通过如下代码使用URL Schemes进行跳转:

NSURL *url = [NSURL URLWithString:@"myapp://example"]; // Replace "myapp" with the actual scheme
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
}

Universal Links是一种更为现代和安全的方式,用于在应用和Web之间建立链接。通过Universal Links,用户点击链接时,如果已经安装了关联应用,会直接打开应用;如果未安装,则会跳转到对应的网页。

  1. 设置Associated Domains:

在Xcode的Capabilities中开启Associated Domains,并添加关联域名:

applinks:example.com
  1. 创建apple-app-site-association文件:

在您的域名服务器根目录下创建一个名为apple-app-site-association的JSON文件,内容如下:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAMID.com.example.myapp",
                "paths": ["/path/*"]
            }
        ]
    }
}

其中,appID由团队ID和应用包名组成,paths用于指定哪些路径应该跳转到应用。

  1. 配置Info.plist:

在Info.plist中添加如下配置:

<key>com.apple.developer.associated-domains</key>
<array>
    <string>applinks:example.com</string>
</array>

3. 实现Universal Links的处理

在AppDelegate中实现处理Universal Links的方法:

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;
        if ([[url host] isEqualToString:@"example.com"]) {
            // 处理Universal Links的逻辑
            NSLog(@"Universal Link URL: %@", url);
            return YES;
        }
    }
    return NO;
}

@end

4. 使用Universal Links跳转

在另一端使用Universal Links可以直接点击或通过发送邮件等方式打开指定的URL,例如https://example.com/path/,即可触发关联应用的打开。

三、两者优缺点对比

URL Schemes

优点:

  1. 实现简单,不需要服务器配置。
  2. 配置灵活,只需在Info.plist中添加相应的配置即可。

缺点:

  1. 由于使用自定义Scheme,容易和其他应用发生冲突。
  2. 不安全,容易被其他应用滥用。
  3. 用户未安装目标应用时,可能会无响应,用户体验不佳。

优点:

  1. 更为安全和现代,防止滥用。
  2. 用户未安装应用时,自动跳转到对应的网页,提升用户体验。
  3. 一个链接同时支持Web和应用,更加自然。

缺点:

  1. 需要额外的服务器配置,添加apple-app-site-association文件。
  2. 配置相对复杂,需要Xcode和服务器端的配合。

开发者可以根据应用的需求选择合适的跳转方式。如果希望实现更现代和安全的跳转,同时提升用户体验,推荐使用Universal Links。如果对实现和配置要求较低,可以选择URL Schemes。

标签:Schemes,Links,URL,APP,iOS,应用,跳转,Universal
From: https://www.cnblogs.com/chglog/p/18305569

相关文章

  • iOS开发基础102-后台保活方案
    iOS系统在后台执行程序时,有严格的限制,为了更好地管理资源和电池寿命,iOS会限制应用程序在后台的运行时间。然而,iOS提供了一些特定的策略和技术,使得应用程序可以在特定场景下保持后台运行(即“后台保活”)。以下是iOS中几种常见的后台保活方案,并附上示例代码:一、后台任务利用beginBa......
  • iOS开发基础101-指纹和面部识别
    在iOS开发中,使用FaceID和TouchID可以为用户提供安全的生物识别认证,而手势识别(GestureRecognition)可以增加用户交互的便利性和灵活性。下面将详细介绍这三种技术,并给出如何封装一个统一的工具类来供外部使用。一、FaceID与TouchID1.设置与配置在使用FaceID和TouchID之前,需要在......
  • Markdown实现页内跳转与页间跳转指定位置
    1.页内跳转在需要跳转的地方,加上:[名称](#跳转处id)其中名称填写的是想要显示的内容,跳转处id为自定义的跳转处的锚点名称例如:[见后文](#jump)再在跳转过去的地方,加上锚:<spanid="jump"></span>其中,此处id中的内容与需要跳转处`#`后的内容保持一致效果如下:点击此处跳转......
  • uniApp 接入微信短剧播放器
    短剧播放器是微信官方为微短剧类目小程序提供的播放器插件。开发者可引入短剧播放器插件后,基于自身需求快速进行开发上线。 小程序中使用短剧播放器需要以下几个条件小程序已有短剧类目(文娱->微短剧),并且将该类目设为主类目小程序引入短剧播放器插件   微信官方短剧......
  • 《藏文翻译词典》App功能介绍,支持藏汉词典和藏文字典查单词,好用的藏语学习工具!
    《藏文翻译词典》App,作为一款功能强大的语言学习工具,不仅为藏语学习者提供了一个便捷的学习平台,也为那些对藏文化感兴趣的人们打开了一扇了解和学习的窗口。app内置藏汉词典、藏汉大词典、新术语等多本辞书,方便大家查询单词,中文藏文双语解释。藏汉双语,藏语学习的得力助手《......
  • vue项目中使用axios(自用)
    ————流程参考 在vscode的集成终端中输入npminstallaxios回车安装重启项目(重新运行) 在script中导入axiosimportaxiosfrom'axios'; 在default中的data同级mounted()中按如下获取数据mounted(){//发送异步请求,获取数据//输入thenc......
  • 掌握 MyBatis-Plus Wrapper:构建的高效数据库操作
    MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了一种简洁的方式来处理数据库操作,尤其是通过其Wrapper类和LambdaWrapper类,可以非常方便地构建动态SQL查询。WrapperWrapper是一个通用的查询构建器接......
  • 转型Web3开发第二课:Dapp开发入门基础 | 01 | 安装MetaMask
    前言完成了《转型Web3开发第一课》之后,得到了不少读者的认可,很多都在问什么时候开始下一课,近期终于抽出了时间开始搞起这第二课。这第二课的主题为「Dapp开发入门基础」,即想要转型做Dapp开发的人员,不管是做前端开发、后端开发、智能合约开发,都需要掌握的基础知识。这......
  • 基于SpringBoot+Vue+uniapp的邮件过滤系统的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的美食推荐小程序的详细设计和实现(源码+lw+部署文档+讲解
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......