一个 Swift 包,用于简化 iOS、MacOS、tvOS 和 watchOS 项目中 Apple Music API 的集成。
import AmuseKit
您可以使用 StorageConfiguration 初始化 AmuseKit,该配置指定了服务名称和密钥,这些密钥将用于在钥匙串上保存开发者令牌和用户令牌。
let configuration = AmuseKit.StorageConfiguration(serviceName: "KEYCHAIN_SERVICE_NAME",
developerTokenKey: "DEV_TOKEN_KEYCHAIN_KEY",
userTokenKey: "USER_TOKEN_KEYCHAIN_KEY")
let amuseProvider = AmuseKit.DataProvider(configuration)
amuseProvider.setDeveloperToken("YOUR_DEV_TOKEN")
amuseProvider.setUserToken("USER_TOKEN")
amuseProvider.setUserCountryCode("USER_COUNTRY_CODE")
支持的值包括:albums, artists, musicVideos, playlists, songs
。
let response = try await amuseProvider.catalog(.albums, ids: ["123", "456", "789"])
print(response.data)
amuseProvider.catalog(.albums, ids: ["123", "456", "789"])
.sink { _ in
} receiveValue: { response in
print(response.data)
}
let response = try await amuseProvider.catalogSearch(searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.albums)
print(response.results?.artists)
print(response.results?.musicVideos)
print(response.results?.playlists)
print(response.results?.songs)
print(response.results?.stations)
amuseProvider.catalogSearch(searchTerm: "YOUR_QUERY_TEXT")
.sink { _ in
} receiveValue: { response in
// content will be found under results properties.
print(response.results?.albums)
print(response.results?.artists)
print(response.results?.musicVideos)
print(response.results?.playlists)
print(response.results?.songs)
print(response.results?.stations)
}
let response = try await amuseProvider.catalogSearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.playlists)
print(response.results?.songs)
amuseProvider.catalogSearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
.sink { _ in
} receiveValue: { response in
print(response.results?.playlists)
print(response.results?.songs)
}
支持的值包括:albums, artists, musicVideos, playlists, songs
。
let response = try await dataProvider.library(.albums)
print(response.data)
amuseProvider.library(.albums)
.sink { _ in
} receiveValue: { response in
print(response.data)
}
let response = try await amuseProvider.librarySearch(searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.albums)
print(response.results?.artists)
print(response.results?.musicVideos)
print(response.results?.playlists)
print(response.results?.songs)
amuseProvider.librarySearch(searchTerm: "YOUR_QUERY_TEXT")
.sink { _ in
} receiveValue: { response in
// content will be found under results properties.
print(response.results?.albums)
print(response.results?.artists)
print(response.results?.musicVideos)
print(response.results?.playlists)
print(response.results?.songs)
}
let response = try await amuseProvider.librarySearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.playlists)
print(response.results?.songs)
amuseProvider.librarySearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
.sink { _ in
} receiveValue: { response in
print(response.results?.playlists)
print(response.results?.songs)
}