Re: Save CBCharacteristic to NSUserDefaults
Re: Save CBCharacteristic to NSUserDefaults
- Subject: Re: Save CBCharacteristic to NSUserDefaults
- From: Arvydas Sidorenko <email@hidden>
- Date: Wed, 17 Apr 2013 18:59:53 +0100
> [peripheralManager respondToRequest:request withResult:CBATTErrorInsufficientAuthorization];
William, it is CBATTErrorInsufficientAuthentication which triggers
pairing on the central and not CBATTErrorInsufficientAuthorization.
On Wed, Apr 17, 2013 at 6:44 PM, William Henderson
<email@hidden> wrote:
> I've tested the described caching behavior and can very that it works on iOS
> 6.1.3 but does not on Mac OS 10.8.3.
>
> As mentioned above, caching happens only for paired devices. To pair, you
> need to respond to a write request with an insufficient authorization error.
> For example, for an iOS peripheral you would write something like:
>
> - (void)peripheralManager:(CBPeripheralManager *)peripheralManager
> didReceiveWriteRequests:(NSArray *)requests {
> ...
>
> [peripheralManager respondToRequest:request
> withResult:CBATTErrorInsufficientAuthorization];
>
> ...
> }
>
> That will pop up a pairing dialog on the iOS peripheral, after which point
> you will be paired. Other than that you don't have to change your code –
> just call discoverServices etc as normal and they will respond more quickly
> (ie instantly).
>
> William
>
>
> On Wed, Apr 17, 2013 at 3:17 AM, Etan Kissling <email@hidden> wrote:
>>
>> John,
>>
>> nope, i haven't tested caching / encryption yet.
>>
>> Etan
>>
>> On 17.04.2013, at 09:48, John Earl <email@hidden> wrote:
>>
>> Etan,
>>
>> This discussion seems to imply that discovered services and
>> characteristics can be cached across disconnect/reconnect pairs if the
>> application runs continuously in the background, so long as CBCentralManager
>> does not power down.
>>
>> Have you tried this and/or do you use this functionality yourself?
>>
>> John
>>
>> On 17 Apr 2013, at 08:14, Etan Kissling wrote:
>>
>> Jack,
>>
>> In the mentioned session they explained that characteristics are only
>> cached when encryption is on. I haven't tested whether this is true, but may
>> be worth trying.
>>
>> To speed up characteristic discovery, consider lowering the connection
>> interval for the first 30 seconds or so from your peripheral. You can do
>> this by sending a connection parameter update request.
>>
>> Also ensure that all your services with 16-bit uuids are grouped at the
>> beginning of your peripheral gatt database. This allows to read up to four
>> 16-bit uuid services at a time with the default MTU of 23 bytes.
>>
>> Regarding serialization of cb* objects: it's not possible with public apis
>> and even if you could serialize them for nsuserdefaults storage, you would
>> still run into problems as the documentation clearly states that all
>> peripherals etc are invalidated when the cbcentralmanager state falls below
>> a certain level. When you create a new manager, state defaults to "unknown"
>> which is the lowest level ;-)
>>
>> Cheers
>> Etan
>>
>> On 17.04.2013, at 08:34, "Jack Phan" <email@hidden> wrote:
>>
>> Thank you very much for all your comments.
>>
>> Jack
>>
>> On Apr 16, 2013, at 11:28 PM, Andras Kovi <email@hidden> wrote:
>>
>> Well, if you retrieve or discover a peripheral, then its services will be
>> nil. Those are read only from our perspective so there is not even a
>> theoretical way to save and then restore the characteristics. Maybe they
>> come up with some caching this year (WWDC 2013 hasn't happened yet to my
>> best knowledge :) ) but I doubt that as that would introduce a whole bunch
>> of issues. Rediscovery is not a big deal, you just have to plan for it.
>>
>> Cheers,
>> Andras
>>
>> On 2013.04.17., at 8:09, Jack Phan <email@hidden> wrote:
>>
>>
>> I may be wrong but I remember that in Advanced Core Bluetooth session from
>> this years WWDC, they said we could catch the characteristics.
>>
>> Jack
>>
>>
>> On Apr 16, 2013, at 11:06 PM, Andras Kovi <email@hidden> wrote:
>>
>> Yes, Khaos is right. You cannot save neither the characteristics or the
>> services. They must be rediscovered every time.
>>
>> Andras
>>
>> On 2013.04.17., at 7:44, Khaos Tian <email@hidden> wrote:
>>
>> It seems you had to re-discover characteristics every time you established
>> a new connection.
>>
>> Here are threads that discussed this problem previously.
>>
>> http://prod.lists.apple.com/archives/bluetooth-dev/2013/Mar/msg00032.html
>>
>> Best Wishes,
>> Khaos Tian
>>
>> On Apr 17, 2013, at 1:25 PM, Jack Phan <email@hidden> wrote:
>>
>> The reason is that I don't want to scan again. I would like to reconnect
>> but don't want to discover characteristics again because it takes too long.
>> So when the user opens the app, I reconnect, no discover characteristics,
>> but send characteristic values that I had saved to Peripheral.
>>
>> Jack
>>
>> On Apr 16, 2013, at 10:14 PM, Khaos Tian <email@hidden> wrote:
>>
>> sorry for the typo.
>>
>> I mean why don't you perform a discover characteristics action and then
>> use that CBCharacteristic to perform action you want?
>>
>> Best Wishes,
>> Khaos Tian
>>
>> On Apr 17, 2013, at 1:06 PM, Jack Phan <email@hidden> wrote:
>>
>>
>> Hi Khaos,
>>
>> Yes. I would like to save CBCharacteristic *myChar into NSUserDefauts and
>> then load it when user open the app.
>> Thanks,
>>
>> Jack
>>
>>
>> On Apr 16, 2013, at 10:02 PM, Khaos Tian <email@hidden> wrote:
>>
>> May I ask why would you like to say CBCharacteristic into NSUserDefaults?
>>
>> Best Wishes,
>> Khaos Tian
>>
>> On Apr 17, 2013, at 12:56 PM, Jack Phan <email@hidden> wrote:
>>
>> Hi Group,
>>
>> I'm working on a project for iPhone (Central) with TI CC2541 (Peripheral)
>> and would like to save a CBCharacteristic *myChar to NSUserDefaults but I
>> don't know how.
>> Please give me a way to solve this. It's great if you could share your
>> code for it.
>>
>> Thanks a lot,
>>
>> Jack
>> _______________________________________________
>> 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
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>> _______________________________________________
>> 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
>>
>>
>>
>>
>> _______________________________________________
>> 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
>>
>
>
>
> --
> William
> Sent from my iPhone
>
> _______________________________________________
> 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
>
_______________________________________________
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