Apple AppStore에서 app을 검색할 때 호출할 수 있는 함수. 아래처럼 사용하면 되겠다.
import Foundation
import ReactiveSwift
class ITunesAPIDataSource: ITunesAPIInterface {
let session = URLSession.shared
func getAppList(key: String) -> SignalProducer<String, TraceError> {
return SignalProducer { observer, lifetime in
guard !lifetime.hasEnded else {
observer.sendInterrupted()
return
}
guard let url = self.buildUrl(term: key) else {
observer.send(error: TraceError(message: "url error", code: ""))
return
}
let task = self.session.dataTask(with: url) { data, response, error in
guard let data = data else {
observer.send(error: TraceError(error: error))
return
}
observer.send(value: String(data: data, encoding: .utf8) ?? "")
}
task.resume()
}
}
func buildUrl(term: String) -> URL? {
let parameters = ["term":term, "country":"KR","media":"software","limit":"10"]
var urlComponents = URLComponents()
urlComponents.scheme = "https"
urlComponents.host = "itunes.apple.com"
urlComponents.path = "/search"
urlComponents.queryItems = parameters.map { (key: String, value: String) in
URLQueryItem(name: key, value: value)
}
return urlComponents.url
}
}
parameters에 있는 항목들을 수정해서 원하는 결과를 얻을 수 있다.
limit의 default는 50개다. 너무 많아서 줄여뒀고,
media를 써주지 않으면 음악, 영화, 뮤직비디오, 이북 등 모든 type의 정보를 가져온다.
이외에 다른 parameter는 아래를 참조하면 된다.
https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/
'iOS > 기초' 카테고리의 다른 글
ARC (Auto Reference Counting), Garbage Collection 차이 (0) | 2022.04.24 |
---|---|
[iOS] Cosmos를 이용한 앱 별점 구현 (0) | 2022.03.22 |
[Swift] url로 ImageView에 image 설정하기 (0) | 2022.03.18 |
SwiftUI 기초 - State, onTabGesture, withAnimation (0) | 2020.09.25 |
SwiftUI 기초 - Slider, Stepper, Picker (0) | 2020.09.25 |