如何在iOS应用程序中播放播客文件

时间:2016-12-06 13:51:03

标签: ios swift podcast

我正在开发包含广播和播客的应用。我可以在哪里播放直播电台。此外,我从iTunes获取播客列表,但没有找到歌曲的流媒体链接作为回应。响应提供音频文件集合的链接。那么如何获得声音文件的实际路径链接?

https://itunes.apple.com/search?term=song&country=IN&media=podcast&entity=podcast

   import AFNetworking

     class PodcastApi {

        fileprivate let baseUrl = URL(string: "https://itunes.apple.com/")
        /// Shared singletone object of WSApi
        static let shared : PodcastApi = {
            let instance = PodcastApi()
            return instance
        }()


        private func showNetworkActivity(){
            // Turn on network indicator in status bar
            UIApplication.shared.isNetworkActivityIndicatorVisible = true
        }

        private func hideNetworkActivity(){
            // Turn off network indicator in status bar
            UIApplication.shared.isNetworkActivityIndicatorVisible = false
        }

        private func getPath(term:String)->String{
            return "search?term=\(term)&country=IN&media=podcast&entity=podcast"
        }

        func getPodcasts(term:String,completionHandler:@escaping (_ status:Bool, _ responseObject:Any)->()){

            if !ReachabilityManager.shared.isReachable {
                let error = WSError()
                error.errorTitle = "Network error"
                error.errorDescription = "Unable to connect, please check your internet connectivity."
                completionHandler(false,error)
                return
            }

            self.showNetworkActivity()
            let sessionManager = AFHTTPSessionManager(baseURL: baseUrl, sessionConfiguration: URLSessionConfiguration.default)
            sessionManager.requestSerializer = AFJSONRequestSerializer()
            sessionManager.responseSerializer = AFJSONResponseSerializer()
            let urlPath =  getPath(term: term)

            sessionManager.get(urlPath, parameters: nil, progress: { progress in

            }, success: { task, responseObject in

                self.hideNetworkActivity()
                var podcasts = [Podcast]()
                if let disc = responseObject as? [String:Any]{
                    podcasts.append(contentsOf: Podcast.GetPodcasts(disc: disc))
                }
                completionHandler(true,podcasts)

            }, failure: { operation, err in
                self.hideNetworkActivity()
                let error = WSError(error: err as NSError)
                completionHandler(false,error)

            })

        }

}

 Response is

{
      "wrapperType": "track",
      "kind": "podcast",
      "collectionId": 415636728,
      "trackId": 415636728,
      "artistName": "Kurt Nichols",
      "collectionName": "New Song Fellowship",
      "trackName": "New Song Fellowship",
      "collectionCensoredName": "New Song Fellowship",
      "trackCensoredName": "New Song Fellowship",
      "collectionViewUrl": "https://itunes.apple.com/in/podcast/new-song-fellowship/id415636728?mt=2&uo=4",
      "feedUrl": "http://lily.nowsprouting.com/newsongfellowship/podcast.php?pageID=10",
      "trackViewUrl": "https://itunes.apple.com/in/podcast/new-song-fellowship/id415636728?mt=2&uo=4",
      "artworkUrl30": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/30x30bb.jpg",
      "artworkUrl60": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/60x60bb.jpg",
      "artworkUrl100": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/100x100bb.jpg",
      "collectionPrice": 0,
      "trackPrice": 0,
      "trackRentalPrice": 0,
      "collectionHdPrice": 0,
      "trackHdPrice": 0,
      "trackHdRentalPrice": 0,
      "releaseDate": "2015-12-04T18:00:00Z",
      "collectionExplicitness": "cleaned",
      "trackExplicitness": "cleaned",
      "trackCount": 30,
      "country": "IND",
      "currency": "INR",
      "primaryGenreName": "Christianity",
      "contentAdvisoryRating": "Clean",
      "artworkUrl600": "http://is4.mzstatic.com/image/thumb/Music62/v4/34/b0/16/34b016de-a98f-0bc2-38ca-45ed2f22fe65/source/600x600bb.jpg",
      "genreIds": [
        "1439",
        "26",
        "1314"
      ],
      "genres": [
        "Christianity",
        "Podcasts",
        "Religion & Spirituality"
      ]
    }

1 个答案:

答案 0 :(得分:1)

据我所知,没有iTunes将播客存储起来。 相反,播客们提供(主要是rss-feeds)包含 XML ,其中包含播客的剧集文件的链接。

Feed是" feedUrl"的值在你的回复中。

"feedUrl": "http://lily.nowsprouting.com/newsongfellowship/podcast.php?pageID=10"

这些Feed看起来与此形式类似:

  • a"标题"使用xml版本,unicode和itunes dtd

  • 频道 -

  • 复 ...

    然后以Feed格式提供的每个播客的一个(字面上的名称)项目:

this is from the podcast you mentioned, url to mp3 highlighted

如果你想解析那个,你想读入XMLParser ;-) https://developer.apple.com/documentation/foundation/xmlparser