“`markdown
## Swift 程式教學:使用 Google SafeSearch API 進行安全搜尋與色情檢測
在這篇文章中,我們將學習如何使用 Google 的 SafeSearch API 進行圖像安全性檢測,包括色情、血腥等內容的識別。隨著技術的進步,本文將更新為 **2025 最新語法與最佳實踐**,幫助開發者更輕鬆地整合這個功能。
### 安裝與設定
請確保您已經擁有 Google Cloud Platform 的帳戶,並啟用 Vision API。接下來,您需要獲取 API 金鑰,並將其替換為程式碼中的 `yourKey`。
### 原生 HTTP POST 請求
我們將使用 Swift 的 `URLSession` 來發送 HTTP POST 請求。以下是進行安全搜尋的程式碼範例:
“`swift
import UIKit
let semaphore = DispatchSemaphore(value: 0)
// 載入圖片並轉換為 JPEG 格式的 NSData
guard let image = UIImage(named: “test2”),
let testImageData = image.jpegData(compressionQuality: 0.5) else {
print(“無法載入圖片”)
return
}
let base64ImageString = testImageData.base64EncodedString(options: .endLineWithCarriageReturn)
let parameters: [String: Any] = [
“requests”: [
[
“image”: [“content”: base64ImageString],
“features”: [[“type”: “SAFE_SEARCH_DETECTION”]],
“imageContext”: [“languageHints”: [“zh”, “en”]]
]
]
]
do {
let postData = try JSONSerialization.data(withJSONObject: parameters)
var request = URLRequest(url: URL(string: “https://vision.googleapis.com/v1/images:annotate?key=yourKey”)!, timeoutInterval: Double.infinity)
request.addValue(“application/json”, forHTTPHeaderField: “Content-Type”)
request.httpMethod = “POST”
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
// 處理 API 回應
if let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
semaphore.signal()
}
task.resume()
semaphore.wait()
} catch {
print(“JSONSerialization 錯誤:\(error)”)
}
“`
### 錯誤排除
1. **無法載入圖片**:請檢查圖片名稱是否正確。
2. **API 回應錯誤**:確保您的 API 金鑰是有效的,並且已經啟用 Vision API。
3. **JSON 解析錯誤**:請檢查 `parameters` 的格式是否正確。
### 延伸應用
您可以擴展這個程式碼來處理多張圖片,或是更改檢測類型(例如:面部偵測、物件識別等)。利用 Google Vision API 的其他功能,可以創建更強大的應用程式。
### 圖片示例
以下是一些可能被檢測的圖片示例:
– **色情照片**


– **血腥照片**


—
## Q&A(常見問題解答)
**Q1: 如何獲取 Google API 金鑰?**
A1: 您需要登入 Google Cloud Platform,並在 API & Services 中啟用 Vision API,然後創建憑證來獲取金鑰。
**Q2: 可以檢測哪些類型的內容?**
A2: Google SafeSearch API 可以檢測色情、血腥、成人內容等,並返回相應的檢測結果。
**Q3: 如何處理多張圖片的檢測?**
A3: 您可以將多張圖片的 base64 編碼結果保存到一個數組中,然後將它們一起發送到 API 進行檢測。
“`
—