如何将iOS应用设为默认浏览器及Safari禁用时注册链接处理
iOS 默认浏览器设置及Safari禁用后的链接处理方案
1. 如何将我的应用设置为iOS系统的默认浏览器?
首先得明确:iOS 14及以上版本才支持用户把第三方浏览器设为系统默认,所以你的App得先适配这个版本门槛。具体步骤如下:
第一步:配置Info.plist文件
这是让系统识别你的App为浏览器候选的核心配置,需要添加几个关键项:- 声明支持HTTP/HTTPS链接:添加
CFBundleURLTypes数组,包含对应的scheme:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>http</string> <string>https</string> </array> </dict> </array> - 标记App为浏览器类别:添加
LSApplicationCategoryType并设置为public.browser,告诉系统这是一款浏览器应用:<key>LSApplicationCategoryType</key> <string>public.browser</string> - 设置处理优先级:添加
LSHandlerRank为Default,这样你的App会出现在系统默认浏览器的可选列表里:<key>LSHandlerRank</key> <string>Default</string>
- 声明支持HTTP/HTTPS链接:添加
第二步:实现链接处理逻辑
确保你的App能正确接收并打开传入的链接:- 如果你用的是UIKit+AppDelegate,在
AppDelegate.swift里实现application(_:open:options:)方法:func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { // 在这里处理打开URL的逻辑,比如加载网页 return true } - 如果你用的是SceneDelegate,实现
scene(_:openURLContexts:)方法:func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } // 处理URL逻辑 }
- 如果你用的是UIKit+AppDelegate,在
第三步:用户侧设置
用户需要手动在系统设置里完成切换:打开「设置」→ 找到你的App → 进入「默认浏览器App」选项 → 选择你的App即可。
2. Safari被禁用时,如何注册我的应用处理链接?
当Safari被iOS限制设置禁用后,系统会自动寻找已安装且支持HTTP/HTTPS链接的浏览器类应用来处理所有链接,你只需要确保你的App满足以下条件:
- 完成上面第一个问题里的Info.plist核心配置(HTTP/HTTPS scheme、
public.browser类别、LSHandlerRank),这是系统识别你的App为链接处理候选的基础。 - 确保你的App没有被限制设置禁用(如果你的App也被禁了,那系统就没可选的了)。
- 正确实现链接处理逻辑(和第一个问题里的第二步一致)。
不需要额外的特殊配置,只要满足这些条件,当Safari被禁用后,用户点击任何HTTP/HTTPS链接时,系统都会自动用你的App打开(如果有多个符合条件的App,系统可能会让用户选择默认,或者按优先级打开)。
内容的提问来源于stack exchange,提问作者Steve Moser




