You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iOS 14.x中通过代码启动Safari并调用默认搜索引擎搜索

iOS 14.x 应用内启动Safari调用默认搜索引擎的实现方案

x-web-search:// 是苹果未公开的私有URL Scheme,在iOS 14+ 版本已被禁用,因此原有方案无法生效。目前可以通过以下方案实现需求,无需硬编码各搜索引擎的地址,完全遵循用户系统设置的默认搜索引擎:

实现步骤

  • 对需要搜索的关键词进行URL编码,处理空格、特殊字符等内容
  • 在编码后的关键词前拼接一个问号?,构造为完整的NSURL对象
  • 调用UIApplication的openURL:(iOS 14+ 推荐使用open:options:completionHandler:)方法打开构造的URL,系统会自动唤起Safari,Safari会识别该内容为搜索请求,自动调用用户设置的默认搜索引擎执行搜索

示例代码(Objective-C)

NSString *searchKeyword = @"你要搜索的关键词";
// 关键词URL编码
NSString *encodedKeyword = [searchKeyword stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
// 构造搜索URL
NSURL *searchURL = [NSURL URLWithString:[NSString stringWithFormat:@"?%@", encodedKeyword]];
if ([[UIApplication sharedApplication] canOpenURL:searchURL]) {
    [[UIApplication sharedApplication] openURL:searchURL options:@{} completionHandler:nil];
}

示例代码(Swift)

let searchKeyword = "你要搜索的关键词"
guard let encodedKeyword = searchKeyword.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { return }
guard let searchURL = URL(string: "?\(encodedKeyword)") else { return }
if UIApplication.shared.canOpenURL(searchURL) {
    UIApplication.shared.open(searchURL)
}

方案说明

该方案利用了Safari的默认行为:当地址栏输入的内容不是标准可访问URL时,会自动将内容提交给用户设置的默认搜索引擎执行搜索。在关键词前拼接问号可以避免当关键词本身是合法域名时,Safari直接跳转对应网站而非执行搜索的问题。

内容的提问来源于stack exchange,提问作者user5209082

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:36:03