When sending to the main queue, it should be safe to be in the background.
When your application is in the background, all it does is technically run in the background because the system marks your application as a lower priority. However, for the system to run your code, it must at least have a main queue. Therefore, we can safely assume that you will have access to the main queue. You can create other work queues from there if you want, but everything will most likely be superimposed on one background thread to execute, so you may not see much benefit.
Also note that testing the background thread can be a bit complicated. Background threads are always executed and never seem to turn off during the simulator. The same thing happens when testing on a device if Xcode is connected and debugged. The system also allows your application to run continuously for 10 minutes (the last thing I checked, it may have changed in the last year or two) after entering the background, if necessary, and after that it will take something like the bluetooth event that you are talking about mentioned to get extra time in the background.
Source: bad experience with background applications.
source share