Post

Replies

Boosts

Views

Activity

URLSession request: request Code=-1009 "(null)" UserInfo={_NSURLErrorNWPathKey=unsatisfied (Denied over cellular interface)
My UI test is performed on iPhone 13 Pro 15.3.1, with Xcode 13.2.1. I have narrow down the issue as below two tests. The test code below just send a simple https request. I have allowed the network access for the test app on both Wifi and cell. And I'm a paid developer. All following two tests are passed in simulator but failed on iPhone, so it means something is wrong in iPhone side, but I couldn't figure out it. Need help, guys. The error exists with WiFi and Cellular. URLSession request is denied on both Wi-Fi interface and cellular interface. NSURLErrorNWPathKey=unsatisfied... 1st test: The test code is provided in Apple doc (https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations). func testDownloadWebData() { // Create an expectation for a background download task. let expectation = XCTestExpectation(description: "Download apple.com home page") // Create a URL for a web page to be downloaded. let url = URL(string: "https://apple.com")! // Create a background task to download the web page. let dataTask = URLSession.shared.dataTask(with: url) { (data, _, _) in // Make sure we downloaded some data. XCTAssertNotNil(data, "No data was downloaded.") // Fulfill the expectation to indicate that the background task has finished successfully. expectation.fulfill() } // Start the download task. dataTask.resume() // Wait until the expectation is fulfilled, with a timeout of 10 seconds. wait(for: [expectation], timeout: 10.0) } 2nd attempt: I also try my version, but get the same result. func testDownloadWebData() { // Create an expectation for a background download task. let expectation = expectation(description: "Download apple.com home page") // Create a URL for a web page to be downloaded. let url = URL(string: "https://apple.com")! var request = URLRequest(url: url) request.httpMethod = "GET" let config = URLSessionConfiguration.default config.waitsForConnectivity = true let session = URLSession(configuration: config) // Create a background task to download the web page. let dataTask = session.dataTask(with: request) { (data, _, error) in // put a breakpoint here, no triggered. guard error == nil else { print(error!.localizedDescription) return } // Make sure we downloaded some data. XCTAssertNotNil(data, "No data was downloaded.") // Fulfill the expectation to indicate that the background task has finished successfully. expectation.fulfill() } // Start the download task. dataTask.resume() // Wait until the expectation is fulfilled, with a timeout of 10 seconds. wait(for: [expectation], timeout: 10.0) }
3
1
1.3k
Feb ’22
Bug: Xcode 13 doesn't show quick help for user defined property, function, etc.
A quick question. I use to see the inferred type by option click the property or object. After upgrade to Xcode 13, for instance, when I option click on below text property, there is no quick help popping up. Do u guys meet this same issue? Just Google it, no clue found. let text = "Have a nice day" Update Quick help is only showed up when I optional click on an iOS built-in property, functions, etc. It doesn't appear for custom defined things. For code below, when I optional click on viewDidLoad or addSubview , I could get quick help menu popped up. But without luck for tableView, which is a user defined stuff. private lazy var tableView: UITableView = { let table = UITableView() table.register(UITableViewCell.self, forCellReuseIdentifier: "cell") return table }() override func viewDidLoad() { super.viewDidLoad() view.addSubview(tableView) tableView.frame = view.bounds }
0
0
499
Oct ’21
ShazamKit: Music detection "session.match(signature)" with no match found and no error was thrown, weird
Today, I create a small app to try ShazamKit music detection ability in iOS 15. Follow a tutorial on Youtube, and I have Apple developer membership and have enabled the ShazamKit service for this app identifier. In short, I want to detect a song metadata with ShazamKit from the audio file inside app. The problem is that both of delegate method didFind and didNotFindMatchFor didn't fire though I have generated the signature successfully. I think it should give me an error in didNotFindMatchFor delegate method if there is no match found at least, but it doesn't. It's a pretty new feature, there is not that much related stuff I could find. What am I missing here? Appreciate for any help. More info: I do find some stuff using audioEngine, however that use output from Microphone, if user listen music with a headphone, that would be not possible. In my case I want to use the file itself since my production app is a music player, which stores a lot audio files in sandbox. import ShazamKit import UIKit class ViewController: UIViewController { lazy var recoButton: UIButton = { let button = UIButton(frame: CGRect(x: 0, y: 0, width: 120, height: 60)) button.layer.cornerRadius = 8 button.backgroundColor = .brown button.setTitle("Recognize", for: .normal) button.addTarget(self, action: #selector(recognizeSong), for: .touchUpInside) return button }() override func viewDidLoad() { super.viewDidLoad() view.addSubview(recoButton) recoButton.center = view.center } @objc func recognizeSong(_ sender: UIButton) { print("reco button tapped") // ShazamKit is available from iOS 15 if #available(iOS 15, *) { // session let session = SHSession() // delegate session.delegate = self do { // get track guard let url = Bundle.main.url(forResource: "Baby One More Time", withExtension: "mp3") else { print("url is NULLLL") return } // create audio file let file = try AVAudioFile(forReading: url) let frameCapacity = AVAudioFrameCount(file.length / 26) // Audio -> Buffer guard let buffer = AVAudioPCMBuffer(pcmFormat: file.processingFormat, frameCapacity: frameCapacity) else { print("Failed to create a buffer") return } // Read file into buffer try file.read(into: buffer) // SignatureGenerator let generator = SHSignatureGenerator() try generator.append(buffer, at: nil) // create signature let signature = generator.signature() // try to match session.match(signature) } catch { print(error) } } else { // unavailable alert } } } extension ViewController: SHSessionDelegate { func session(_ session: SHSession, didFind match: SHMatch) { print("Match found!") // get results let items = match.mediaItems items.forEach { item in print(item.title ?? "title") print(item.artist ?? "artist") print(item.artworkURL?.absoluteURL ?? "artwork url") } } func session(_ session: SHSession, didNotFindMatchFor signature: SHSignature, error: Error?) { if let error = error { print(error) } } }
2
0
1.5k
Oct ’21