如何使用Safari App Extension重定向搜索引擎

问题描述

我正在尝试实施一个safari应用扩展程序,其中将safari地址错误中的每个搜索重定向到另一个搜索引擎(在这种情况下,例如,DuckDuckGo)。我已经做到了很多。但是,使用此逻辑,如果用户打开www.google.com并在其搜索栏中进行搜索,则该逻辑也会尝试重定向这些搜索。如何阻止这种情况发生?

//My SafariExtensionHandler file has the following functions:
//Given a Google,Yahoo,or Bing URL,this function will return the url encoding
func getquerystringparameter(url: String) -> String? {
var param = "q"
if url.contains("search.yahoo.com") {
        param = "p"
    }
guard let url = URLComponents(string: url) else { return nil }
let rawString = url.queryItems?.first(where: { $0.name == param })?.value
let percentEncoding = rawString?.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)?.replacingOccurrences(of: "&",with: "%26")
return percentEncoding
}


// Before every page navigaion,this code checks if it's navigating to a search engine site. If so,it parses the url in order to instead navigate to that same seach term on DuckDuckGo.

override func page(_ page: SFSafariPage,willNavigateto url: URL?) {
let hostnames = ["www.google.com","www.bing.com","search.yahoo.com"]
let url = url!
if hostnames.contains(url.host!) {
if let query = self.getquerystringparameter(url: url.absoluteString) {
let redirectedURL = URL(string: "https://duckduckgo.com/?q=\(query)&ia=web")!
            page.getContainingTab { (tab) in
                tab.navigate(to: redirectedURL)
            }
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)