在iOS中实现Google自定义搜索API

15

我查阅了多个链接,以找到在iOS应用程序中实现Google Custom Search API的正确步骤,并在此过程中花费了大约6-7个小时。

链接:

所有这些网站都提供了一些信息片段。是否有什么地方可以提供摘要、精确的信息,以帮助在iOS应用程序中实现自定义搜索?

2个回答

46

过程简要步骤:

  1. 创建一个Google账户(如果您已经有了,则忽略此步骤)
  2. 您可能会在此页面底部找到一些与定价相关的信息(您也可以忽略此步骤)
  3. 创建一个项目并生成API密钥
  4. 进入Google控制台并创建一个项目
  5. 创建项目后,单击该项目以进入其详细信息。
  6. 在左侧栏中的“身份验证和API”部分下,单击API。
  7. 现在您将在“浏览API”部分中找到CustomSearchAPI链接(因为它不是默认激活的),通过单击右侧的按钮将其打开。
  8. 现在单击API选项下方的凭据
  9. 在此页面上,在“公共API访问”下,单击“创建新密钥”按钮,目前选择浏览器密钥(因为我们首先想要在浏览器上测试它),创建它,并将其保留为现在的状态。
  10. 创建自定义搜索引擎
  11. 现在在新标签上,打开自定义搜索引擎页面。在此页面上,单击“创建自定义搜索引擎”按钮
  12. 这将带您转到创建新搜索引擎页面,在此处在“要搜索的网站”字段中提供您的域名。(如果您没有域名,不用担心,给出任何以www.开头和.com结尾的内容即可)
  13. 填写名称(如果它还没有选择一个),然后单击创建。
  14. 所以你得到了一个跳跃的机器人来祝贺你?;)是的,就是这样。在此页面上,通过单击“控制面板”按钮进入“修改搜索引擎”步骤
  15. 在那里,现在打开图像搜索(如果您想要)
  16. 还在“要搜索的网站”部分中,选择“搜索整个网络但强调包含的项目”,而不是默认值“仅搜索包含的网站”
  17. 这就是了,在此页面底部单击更新。然后回到页面中间,在“详细信息”标题下,单击搜索引擎ID,将其复制,粘贴到某个地方。
  18. 使用get请求进行搜索
  19. 使用此请求URL进行get请求
  20. 在其中替换{API_KEY}为您在“创建项目并生成API密钥”部分创建的密钥
  21. 并将{SEARCH_ENGINE_KEY}替换为您刚刚复制粘贴的搜索引擎ID 使用一些不同的值在查询字符串中调用它,然后是'a',https://www.googleapis.com/customsearch/v1?**q=a**&key={API_KEY}&cx={SEARCH_ENGINE_KEY}将a更改为您想要搜索的任何内容,您必须已经得到了美丽的搜索结果JSON
  22. 其他杂项
  23. 如果您想查看请求状态,请返回您的项目页面,查看有多少请求被放置,其中有多少失败等。单击概述,您将获得该图表,爱你谷歌
  24. 如果您对JSON有困难,这里有一些服务链接,
    1. 什么是JSON 1, 2?
    2. ios中使用JSON。
    3. android中使用JSON

1
非常感谢,它帮了我很多! - Mihir Gurjar
错误 = { 代码 = 400; 错误 = ( { 领域 = usageLimits; 消息 = "错误请求"; 原因 = keyInvalid; } ); 消息 = "错误请求"; }; 为什么我会收到这个响应? - Mr.G
自定义搜索引擎和Google站点搜索服务将于2018年4月1日关闭。还有其他替代方案吗?@rptwsthi - OhadM
@OhadM 我现在还不知道,会查一下然后让您知道,如果我找到了什么。 - rptwsthi
这在模拟器上运行良好,但在 iPhone 设备上无法运行。你能帮忙吗? - Akash KR
显示剩余7条评论

1
以下是使用Swift 4实现从Google自定义搜索引擎进行"GET"请求的内容:
let apiKey = "Your api key here"
let bundleId = "com.Your uniqueBundleId here"
let searchEngineId = "Your searchEngine here"
let serverAddress = String(format: "https://www.googleapis.com/customsearch/v1?q=%@&cx=%@&key=%@","Your query here" ,searchEngineId, apiKey)


let url = serverAddress.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let finalUrl = URL(string: url!)
let request = NSMutableURLRequest(url: finalUrl!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10)
request.httpMethod = "GET"
request.setValue(bundleId, forHTTPHeaderField: "X-Ios-Bundle-Identifier")

let session = URLSession.shared

let datatask = session.dataTask(with: request as URLRequest) { (data, response, error) in
    do{
        if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary {
            print("asyncResult\(jsonResult)")
        }
    }
    catch let error as NSError {
        print(error.localizedDescription)
    }
}
datatask.resume()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接