2012-10-24 9 views
9

Yeniden bağlanmak için hizmet ve özellikleri yeniden keşfetmekten kaçının iPhone için bir CoreBluetooth yönetici uygulaması üzerinde çalışıyorum. Önceden keşfedilmiş bir CBPeripheral'a yeniden bağlanabilmek için, çevresel birimin UUID'sini (CoreData'da) kaydediyorum ve CBCentralManager'ın retrievePeripherals :. DidRetrievePeripherals: geri arama denir ve ben bağlanabilir, vs. Şimdiye kadar çok iyi.CoreBluetooth

Zaten bildiğim bir çevre birimine yeniden bağlandığım için, hizmetlerini ve özelliklerini keşfetmekten kaçınmak istiyorum. Bu nedenle, ilk bağlandığımda, hizmetlerin ve özelliklerin UUID'lerini (yine CoreData'da, çevre biriminin UUID'si ile birlikte) kaydediyorum. veya writeValueForCharacteristic:

Ama CBPeripheral en readValueForCharacteristic çünkü karakteristiklerini okumak veya yazmak için bu UUIDs kullanamayan bir parametre olarak bir CBCharacteristic almak ve bir CBCharacteristic örneğini oluşturmak için hiçbir API yoktur.

Önceden bilinen bir çevre birimi ile yeniden bağlantı kurarken hizmet ve özelliklerin keşfedilmesinden kaçınmanın bir yolu var mı?

+0

Merhaba, CoreData'da bilinen aygıtların UUID'sini kaydettiğinizde, uyguladıkları hizmetleri ve özellikleri içeren her aygıt için bir veri yapısı kaydedemediniz mi? –

+1

Bir aygıtın hizmetleri ve özellikleri, kaydettiğim UUID'ler tarafından tanımlanır. Ama ben NSManagedObject türetilmiş değil çünkü CoreData CBService ve CBCharacteristic örneklerini kaydedemiyorum - en azından nasıl yapabilirim bilmiyorum. Yoksa sorunuzu yanlış mı anladım? – mezulu

+0

Tamam Sorunu anladığımı biliyorum. DiscoverCharacteristics ile yapmanız gerekecek: forService: UUID'leri kullanarak ... –

cevap

3

Mezulu, şifrelenmiş/eşleştirilmiş bir bağlantı kullanmak istiyorsunuz - iOS sizin için önbellekleme yapacak. Cevabıma bakın here.

+0

teşekkürler. IOS 6'nın hizmetlerin ve özelliklerin önbelleğini tanıdığını fark etmemiştim. Aradığım şey bu. – mezulu