2017-07-25 2 views
0

Existe-t-il un moyen de "forcer" une application iOS (codée en tant que BLE Central) pour continuer à exécuter l'analyse BLE en arrière-plan comme si elle fonctionnait au premier plan? Nous utilisons le RSSI pour déterminer la proximité et l'application doit fonctionner en arrière-plan et traiter les niveaux RSSI. REMARQUE: Comme vous le savez peut-être, le RSSI est très bruyant et doit être filtré en utilisant autant d'échantillons que possible pour obtenir une proximité précise. Nous avons essayé de nous connecter et de déconnecter immédiatement l'application du périphérique BLE, mais en utilisant cette approche, nous empêchons le périphérique de faire de la publicité lorsqu'il est connecté à l'application iOS. Ceci, en effet, limite la quantité de publicité par le périphérique BLE qui serait nécessaire par d'autres appareils iOS à proximité, donc idéalement, nous préférerions ne pas utiliser cette méthode. Pour ceux qui souhaitent se pencher sur cette question, nous avons accès à modifier tout ou partie de la charge utile de la publicité par le périphérique BLE.BLE iOS publicité d'arrière-plan

Répondre

0

Vous ne pouvez pas forcer une application iOS à faire quelque chose qui va à l'encontre des règles d'Apple. Si vous souhaitez continuer à rechercher des périphériques BLE, votre application doit être à l'avant-plan.

Vous pouvez également surveiller les périphériques BLE en arrière-plan. Chaque fois qu'un périphérique BLE se rapproche de votre périphérique, vous disposez d'un temps limité pour rechercher des périphériques, également en arrière-plan.

let beaconRegion = CLBeaconRegion(proximityUUID: "some uuid", major: 1, minor: 1, identifier: "some identifier") 
locationManager.startMonitoring(for: beaconRegion) 

Cependant, je ne sais pas si cela correspond à votre cas d'utilisation.

0

Vous pouvez poursuivre la numérisation BLE en arrière-plan à l'aide de l'UUID de service. Vous devez rechercher un UUID de service spécifique. Utilisez la méthode ci-dessous pour numériser en arrière-plan.

ouvert fonc scanForPeripherals (withServices serviceUUIDs: [CBUUID] ?, Options: [chaîne: Tous]? = Nul)

Une autre chose que vous devez définir le mode d'arrière-plan dans votre fichier .plist. Définissez 'Modes de fond requis' comme 'App communique en utilisant CoreBluetooth'.