I am trying to use NSURLSession for http and https streaming, but I encounter numerous issues doing so. For one thing, my file open function must be synchronous, since the caller is expecting to be able to start reading data the moment the open function returns. Also, the read requests are expected to complete on the same thread as the file is opened from, which also implies synchronous access. I also do my own decoding and playback interface, and support a whole host of exotic formats, so it's really impractical for me to use the AVPlayer interface.
I also have a concern with using Core Audio to decode indeterminate length non-seekable streams which may not start on a packet boundary, but I'll take that to another sub forum of this site, since it's not really a networking question.
I already solved this. It was meant to support either single short replies, or continuous data streaming at a regular playback rate, for playing streaming audio. It turned out to be rather a poor choice for audio streaming in the end.
I ended up borrowing a libcurl solution from the DeaDBeeF audio player project. I also added an option to disable peer verification, in case users must use stream servers with either self-signed or expired certificates. It uses the system's libcurl, so it fits the exemption for not bundling any encryption solutions.