Re: How to get the updated advertisementData (kCBAdvDataManufacturerData) value?
I'll have to write a short simple app to demonstrate. But, we change our manufacturer data and haven't had any issue with caching. The change shows up almost immediately. We don't have to connect to it either. Which part of the data are you changing? On Fri, Jan 16, 2015 at 9:20 AM, Zach Dennis <zach.dennis@gmail.com> wrote:
iOS caching will be problematic for purely advertisement data changes. We have seen related issues as well where it will cache advertisement data based on the advertiser's address in the advertisement. We have a switch that causes a BLE device to act as different devices when toggled, but iOS caching causes an issue.
Our resolution so far is to have the user toggle wifi on and off which seems to force the iOS BLE cache to be cleared.
One thing to try if you own the firmware code on the BLE device is to change the advertiser address whenever you change advertising data, then iOS will think it sees a new device. But, that may defeat whatever it is you're trying to do. I'm assuming you're trying to avoid making the device connectable.
Zach
On Fri, Jan 16, 2015 at 6:09 AM, David Chu <storywithoutend@gmail.com> wrote:
Hey Hank,
I believe this is the problem.
CoreBluetooth only discovers a device once and then caches the data to save energy. In order to keep getting the updated data you would need to do one of two things.
- Connect to the device and then ask for an update of the advertising data. It seems this is what you are avoiding.
- Stop stop and restart your scan. (perhaps on a time delay? I have never stopped and restarted a scan right after each other. But I can confirm that restarting the scan will make the device discoverable again).
Dave
On Jan 16, 2015, at 10:52 AM, Hank Li <hank.h.li@gmail.com> wrote:
The peripheral is saved. the issue is that when the advertisement data is changed on the device, the ios app could not get the updated value. It seems the ios cached the advertisementdata.
Thanks, Hank Li
On Thu, Jan 15, 2015 at 5:05 PM, Christopher Cotton <me@christophercotton.com> wrote:
We use changing advertisement data just fine in our iOS app. Are you keeping a reference to the peripheral that is given to you? you should get a ton of logs. You need to keep a reference otherwise it discards that peripheral as per the docs in the header:
* @discussion This method is invoked while scanning, upon the discovery of <i>peripheral</i> by <i>central</i>. A discovered peripheral must
* be retained in order to use it; otherwise, it is assumed to not be of interest and will be cleaned up by the central manager.
On Thu, Jan 15, 2015 at 6:33 PM, Hank Li <hank.h.li@gmail.com> wrote:
For my IOS app (on ios8), once it get the advertisementData, it will stay the same, even the data has been changed on the BLE device. How can I get the updated advertisementData in my ios app?
Here is the code, the startScan is called every 5 seconds.
func startScan() { let opts = [CBCentralManagerScanOptionAllowDuplicatesKey:true]; centralManager.scanForPeripheralsWithServices(nil, options:opts); }
func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) { println("\(advertisementData)"); }
Here is the output, [kCBAdvDataLocalName: MyDevice001, kCBAdvDataIsConnectable: 1, kCBAdvDataManufacturerData: <11e467f7 7ec2ed>]
the output will never change. how to get the updated advertisementData value?
Thanks, Hank Li
_______________________________________________ Do not post admin requests to the list. They will be ignored. Bluetooth-dev mailing list (Bluetooth-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/bluetooth-dev/christopher.cotton%40g...
This email sent to christopher.cotton@gmail.com
-- Christopher
_______________________________________________ Do not post admin requests to the list. They will be ignored. Bluetooth-dev mailing list (Bluetooth-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/bluetooth-dev/storywithoutend%40gmai...
This email sent to storywithoutend@gmail.com
_______________________________________________ Do not post admin requests to the list. They will be ignored. Bluetooth-dev mailing list (Bluetooth-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/bluetooth-dev/zach.dennis%40gmail.co...
This email sent to zach.dennis@gmail.com
-- @zachdennis http://www.continuousthinking.com http://www.mutuallyhuman.com
-- Christopher _______________________________________________ Do not post admin requests to the list. They will be ignored. Bluetooth-dev mailing list (Bluetooth-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/bluetooth-dev/site_archiver%40lists.... This email sent to site_archiver@lists.apple.com
participants (1)
-
Christopher Cotton