I am trying to make a react-native app cast to chromecast. The chromecast GCKDeviceScanner has to run on the main thread.
The react native page says to run on main thread you have to do this:
- (dispatch_queue_t)methodQueue { return dispatch_get_main_queue(); }
I am not very familiar with swift or ios, so where do I put this code, and how do I use it? I have my method:
let filterCriteria = GCKFilterCriteria(forAvailableApplicationWithID: "myApp") let deviceScanner = GCKDeviceScanner(filterCriteria: filterCriteria) if let deviceScanner = deviceScanner { deviceScanner.addListener(self) deviceScanner.startScan() deviceScanner.passiveScan = true }
Any idea on how I can run my code on the main thread?
To run that code section in the main thread, you can do this:
DispatchQueue.main.async {
let filterCriteria = GCKFilterCriteria(forAvailableApplicationWithID: "myApp")
let deviceScanner = GCKDeviceScanner(filterCriteria: filterCriteria)
if let deviceScanner = deviceScanner {
deviceScanner.addListener(self)
deviceScanner.startScan()
deviceScanner.passiveScan = true
}
}
Another option is RunLoop.main.perform { .. }
.
Old version, before Swift 4 (maybe even 3?):
dispatch_async(dispatch_get_main_queue()) {
let filterCriteria = GCKFilterCriteria(forAvailableApplicationWithID: "myApp")
let deviceScanner = GCKDeviceScanner(filterCriteria: filterCriteria)
if let deviceScanner = deviceScanner {
deviceScanner.addListener(self)
deviceScanner.startScan()
deviceScanner.passiveScan = true
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.