2017-04-24 2 views
0

Bonjour J'utilise l'application Sample BLTE Apple pour afficher la boîte de dialogue d'appariement. (IPhone pour iPhone)Impossible d'afficher la boîte de dialogue d'association à l'aide CoreBluetooth

Ceci est mon code pour créer la caractéristique

self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] 
                    properties: CBCharacteristicPropertyRead| CBCharacteristicPropertyNotifyEncryptionRequired 
                     value:nil 
                   permissions:CBAttributePermissionsReadable]; 

code ci-dessus a été prise de l'un des articles d'Apple link

Ceci est mon code quand je notifiantes et en essayant de lire la caractéristique

if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID]]) { 
     [peripheral setNotifyValue:YES forCharacteristic:characteristic]; 

     [peripheral readValueForCharacteristic:characteristic]; 
    } 

Mon problème est que lorsque je tente ce code, je n'obtiens pas une boîte de dialogue d'appariement, au lieu que je reçois cette erreur dans didUpdateValueForCharacteristic

2017-04-24 17:24:58.636 BTLE Transfer[1351:457263] Error discovering characteristics: Authentication is insufficient. 

Ce qui signifie essentiellement que je besoin d'un appariement à lire, mais le cadre n » t montre le dialogue d'appariement.

Qu'est-ce que je fais mal ici? S'il vous plaît aider.

EDIT: je mis à jour ma caractéristique comme ci-dessous:

self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] 
                    properties: CBCharacteristicPropertyRead| CBCharacteristicPropertyNotifyEncryptionRequired 
                     value:nil 
                   permissions:CBAttributePermissionsReadEncryptionRequired]; 
+0

Ajouter 'CBAttributePermissionsReadEncryptionRequired' aux autorisations? – Larme

+0

Je reçois maintenant cette erreur 'Erreur lors de la découverte des caractéristiques: La lecture n'est pas autorisée.' après avoir changé les permissions. Aucune boîte de dialogue d'association toujours. Aussi, il ne semble pas frapper mon délégué 'didReceiveReadRequest' maintenant –

Répondre

0

Le vrai problème pourquoi la boîte de dialogue d'appariement n'apparaissait pas été parce que j'avais le même compte iCloud sur l'iPhone. La boîte de dialogue d'appariement est apparue lorsque j'ai supprimé le compte d'un appareil.

Cette réponse m'a aidé à le comprendre link

0

Si vous utilisez Bluetooth Low Energy (sans cryptage), il n'y a pas de dialogue d'appariement ... Vous devez mettre en œuvre une jumelage par vous-même.

Vous pouvez vous abonner aux caractéristiques/recevoir des notifications et lire ou ecrire, c'est tout. Vous devez implémenter les méthodes correspondantes à partir de CBPeripheralManagerDelegate. Définissez le délégué de votre gestionnaire de périphérique et les méthodes seront appelées.

Voir https://developer.apple.com/reference/corebluetooth/cbperipheralmanagerdelegate?language=objc

+0

J'utilise le cryptage comme mentionné dans le code ci-dessus. Selon Apple docs le cadre de base Bluetooth devrait gérer l'appariement lorsque la lecture/écriture échoue, mais cela ne se produit pas dans mon cas. C'est le problème –