Re: CoreBluetooth in the Background (iOS)
Re: CoreBluetooth in the Background (iOS)
- Subject: Re: CoreBluetooth in the Background (iOS)
- From: Murad Kamalov <email@hidden>
- Date: Mon, 03 Sep 2012 09:46:06 +0300
Hi,
Thanks for the replies everybody.
Jim, I didn't post the full code here, but it's basically based on
Temperature sensor example from Apple developer site
(http://developer.apple.com/library/ios/#samplecode/TemperatureSensor/).
It works well in the foreground BTW, the only problem is it stops
discovering devices when I go to the background.
Joakim, In my case it seems that every 15 minutes I re-discover only
devices which were discovered before in the foreground.
If device was not discovered in the foreground and I power it up when
app is in the background, app doesn't discover new device at all.
regards,
Murad
On Fri, Aug 31, 2012 at 6:33 PM, Joakim Linde <email@hidden> wrote:
>
> Just to clarify, while in the background, the statistical average discovery time is about 55 times the advertising interval of the peripheral. So if the peripheral advertise every 300ms it would take on average 16.5 seconds to discover it. However, and this is perhaps the important part, duplicate advertising packets are filtered out while the app is in the background. Meaning, if you got the advertising packet while the app is in the foreground, you will not get one while in the background.
>
> As a result, the app can detect a new device coming within range while in the background but it can't track a device with a backgrounded app. If the app is interested in the device it will have to connect to it.
>
> Hope this helps.
>
> Thanks,
> Joakim
>
> On Aug 31, 2012, at 6:23 AM, Michael Kroll <email@hidden> wrote:
>
>> Ok, so I will try it again and leave my setup untouched over night ;-)
>>
>> Regards,
>> Dr. Michael Kroll.
>> --------------------
>> Blog: http://www.mkroll.mobi
>> Forum: http://forum.mkroll.mobi
>>
>> Sent from iPhone.
>>
>> On 31.08.2012, at 15:04, Murad Kamalov <email@hidden> wrote:
>>
>>> Hi,
>>>
>>> It seems to be working now, although scanning interval in background
>>> is extremely large. In my case it scans every 15 minutes (iOS 5.0.1).
>>> My BTLE chip advertises every 300ms, so based on what I've read in
>>> archive it should actually discover it in less than a minute. Maybe
>>> anybody had a similar problem?
>>>
>>> Basically the only thing I changed from the original code is queue
>>> parameter in original scan request from
>>> [[CBCentralManager alloc] initWithDelegate: self queue:
>>> dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]
>>> to
>>> [[CBCentralManager alloc] initWithDelegate: self queue: nil]
>>> which should default to dispatch_get_main_queue(), so not sure if it
>>> actually made any difference.
>>> Probably I'll also try to run it on 5.1.1 later on, to check if
>>> background scanning interval is any better.
>>>
>>> regards,
>>> Murad
>>>
>>>
>>> On Fri, Aug 31, 2012 at 10:18 AM, m.kroll <email@hidden> wrote:
>>>> Hi Murad,
>>>>
>>>> I set the filters to match my devices primary service and it was still not
>>>> discoverable in the background :-(
>>>> There are two questions concerning CoreBluetooth which are still unanswered
>>>> for me:
>>>>
>>>> - The background discovery issue
>>>> - Which USB Dongle is supported by the iOS Simulator (when will it work in
>>>> ML again).
>>>>
>>>> Kind Regards/Mit freundlichen Grüssen,
>>>> Dr. Michael Kroll.
>>>> ---
>>>> Blog: http://www.mkroll.mobi
>>>> Forum: http://forum.mkroll.mobi
>>>>
>>>>
>>>> On Aug 31, 2012, at 09:15 AM, Murad Kamalov <email@hidden> wrote:
>>>>
>>>> Thanks András, I'll check the archives. As it seems so far thought,
>>>> event after 10 minutes of waiting phone doesn't discover BLE devices
>>>> in the background mode, but maybe it's related to scans' filtering
>>>> options.
>>>>
>>>> regards,
>>>> Murad
>>>>
>>>>
>>>> On Thu, Aug 30, 2012 at 5:10 PM, András Kovi <email@hidden> wrote:
>>>>> Hi Murad,
>>>>>
>>>>> Your app keeps working but discovery is 55 times slower and the peripheral
>>>>> filtering option of scan is discarded. If it takes 1 sec in foreground to
>>>>> discover in foreground, then it will take almost a minute in background.
>>>>> These issues have been discussed extensively on this list recently. It may
>>>>> be useful for you to search the archives for some answers.
>>>>>
>>>>> Regards, Andras
>>>>> Sent from the iPhone
>>>>>
>>>>> On 2012.08.30., at 16:00, Murad Kamalov <email@hidden> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I'm writing an app for iOS 5.1, which would connect to discovered BTLE
>>>>>> devices and read some data off them (BTLE devices advertise
>>>>>> proprietary Bluetooth service).
>>>>>>
>>>>>> Currently it works in the foreground mode, but I want to make it work
>>>>>> in the background mode. This should be possible with CoreBluetooth.
>>>>>>
>>>>>> Based on Apple documentation, I've added UIBackgroundModes key with
>>>>>> the "bluetooth-central" value in its Info.plist, but it doesn't seem
>>>>>> to be working.
>>>>>> Whenever I turn off the iPhone's screen or just put application into
>>>>>> the background, it just stops receiving CoreBluetooth discovery
>>>>>> (centralManager:didDiscoverPeripheral:advertisementData:RSSI:
>>>>>> callback) notifications and I can't discover/connect to BTLE devices
>>>>>> around. Do you have a guess what could be the problem?
>>>>>>
>>>>>> As I mentioned before in foreground mode application works just fine.
>>>>>>
>>>>>> Thanks for the help,
>>>>>> Murad
>>>>>>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Bluetooth-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden