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

如何实现用户访问指定搜索引擎网站时APP内弹出对应提示?

问题原因

  • 变量作用域错误:你在每一个if/else分支里都用var关键字重新声明了isSearchEngine变量,这些新声明的变量只在当前分支的局部作用域生效,根本没有修改最外层你初始化的那个isSearchEngine变量,外层变量的值始终是初始的"NO"。
  • 判断逻辑覆盖问题:你写的四个if是完全独立的判断,即使修正了作用域问题,后面的判断也会覆盖前面的结果。比如用户访问谷歌网站,第一个判断匹配后设为YES,第二个判断是否是DuckDuckGo,不匹配就会把值又改回NO,最终只有访问必应网站才会得到YES的结果。
  • 判断变量名拼写错误:最后触发弹窗的判断条件写的是isHub == "YES",但你全程没有定义过isHub这个变量,你用来标记是否是搜索引擎的变量是isSearchEngine,所以条件永远不成立,只会走else分支弹出未检测到的提示。

修复方案

你可以直接把匹配逻辑改成判断url是否在指定的域名列表里,简化代码同时避免逻辑错误,修复后代码如下:

// 定义搜索引擎域名列表
let searchEngines = ["https://google.com", "https://duckduckgo.com", "https://bing.com", "https://yandex.ru"]
// 直接判断url是否包含列表中的任意域名
let isSearchEngine = searchEngines.contains { urlString!.contains($0) }

if isSearchEngine {
    Debug.log("Visited search engine website.")
    let alert = UIAlertController(title: "检测到搜索引擎", message: "你访问的网站是搜索引擎", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "确定", style: .cancel, handler: nil))
    self.present(alert, animated: true)
} else {
    Debug.log("Didn't visit a Search engine website.")
    // 按照需求,访问非搜索引擎网站不需要弹出提示,故删除else分支的弹窗代码
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:09:03