2017-04-18 3 views
1

Ich arbeite derzeit an einem Projekt, das einen Teil hat, der sich auf Beacons bezieht, da ich verschiedene Artikel und Websites gesehen und gelesen habe. Es wird nicht empfohlen, non-ibeacon für ios zu verwenden, um in Bezug auf Zeit und Zugänglichkeit für die Hintergrunderkennung erkennbar zu sein . Ich lese diesen Artikel: "Can we detect non-iBeacon beacons on iOS?" Also Grundsätzlich können wir Ibeacon-Protokoll verwenden, um unser Telefon aufzuwecken und dann unsere Pakete verwenden, so ist meine Frage, dass nach dem Aufwachen unseres Telefons wie können wir uns mit unserer verwandten App mit uns selbst verbinden Protokoll erstellt? Müssen wir CoreBluetooth für unsere eigenen Pakete verwenden? wenn ja, hat es Nebenwirkungen in Bezug darauf, wie schnell ios diese oder sogar Berechtigungen erkennen kann? Ein anderes Problem wäre, dass wir wie viele Bytes an unser iOS senden können, nachdem wir unser Telefon geweckt haben? Ist es immer noch bestimmte Menge? oder wir können es verlängern? Grundsätzlich können wir nach unserem ersten ibeacon Paket eine 100KB Datei senden?Nicht-iBeacon Beacons auf iOS erkennen?

Dank ...

Antwort

2

Auf iOS-Geräten gibt es zwei sehr unterschiedliche APIs Sie Baken wie Bluetooth LE Geräte zu erkennen, von denen jeder bietet seine eigenen Vor ein Nachteile nutzen:

Corelocation

Vorteile:

  • Sehr schnelle Erfassungen auch im Hintergrund
  • Wake Ihre App auf Bluetooth LE Leuchtfeuer Erkennung bis
  • Viel einfacher für Fälle, Leuchtfeuer verwenden
  • Off-the-shelf-Beacons

Cons billig ist und von vielen Anbietern sind:

  • Sie müssen die 16-Byte-Kennung ProximityUUID kennen, um
  • zu erkennen. Außer dem obigen Bezeichner gibt es nur vier Datenbytes (ein Zwei-Byte-Major und zwei Byte-Minor)

CoreBluetooth

Pro:

  • viel flexibler als Corelocation
  • Sie können rund 20 Byte Nutzdaten in einem Werbepaket empfangen
  • Sie viel erhalten können, viel mehr Daten, wenn Sie eine Bluetooth-GATT-Verbindung herstellen und mehrere Pakete austauschen. Übertragen von 100K ist sicherlich möglich.

Nachteile:

  • Keine Möglichkeit im Hintergrund mit Hersteller Anzeigen im Hintergrund
  • Erkennen Service Anzeigen zu erkennen, erfordert langsam
  • Oft ein speziell angefertigten Bake (es sei denn, Sie AltBeacon verwenden oder Eddystone)
  • Lassen Sie sich nicht lesen iBeacon - es wird von Apple blockiert

Sie können versuchen, das Beste aus beiden Welten zu erhalten, indem Sie beide APIs kombinieren. Sie tun dies, indem Sie zwei verschiedene Hardware Beacons (ein iBeacon, eine benutzerdefinierte) oder eine einzelne Hardware Beacon verwenden, die zwei verschiedene Werbetypen sendet.

Der Haupttrick mit diesen Techniken besteht darin, die beiden Werbungen zu korrelieren, da die iOS-APIs vollständig sandboxed sind und keine Kennungen zwischen ihnen geteilt werden können. Der übliche Ansatz ist . Benutze einfach den iBeacon, um meine App zu aktivieren und dann nach einem separaten Bluetooth GATT-Dienst mit einer bekannten Dienst-UUID zu scannen (entweder im Vordergrund oder im Hintergrund). Sobald ich das gefunden habe, verbinde ich mich damit und nutze es für den Datenaustausch. Mit dieser Technik muss ich keine Identifikatoren korrelieren. Ich weiß nur, dass wenn ich ein Beacon mit einer bestimmten ProximityUUID sehe, dann bedeutet das, dass in der Nähe ein Bluetooth GATT-Dienst beworben werden soll, den ich für meinen Datenaustausch nutzen kann.

+0

Sehr schöne und detaillierte Antwort. Allerdings ist eine 100-KByte-Übertragung, auch wenn es definitiv möglich ist, wahrscheinlich nicht die beste Idee angesichts der Leistung von BLE und dauert einige zehn Sekunden, möglicherweise viel mehr. – jcaron

+0

Danke @davidyoung, ich will nur wissen, ob ich meine App mit iBeacon aufwecke und dann nach einer anderen UUID suche, wie lange dauert es, bis ich das Nicht-iBeacon-Paket entdeckt habe? ist es in der Reihenfolge von Sekunden oder Minuten? und für den Verbindungsteil müssen wir für den gesamten Paarungsvorgang gehen? oder können wir eine leichte Verbindung haben, um Daten zwischen unserer BLE und unserer App zu übertragen? – fafa92

+0

Vielen Dank @ jcaron für Ihren Kommentar, wissen Sie eine effizientere Möglichkeit, eine Verbindung zu meiner iOS-App ohne Pairing zu haben? indem ich sage, dass ich Daten übertragen will. – fafa92

Verwandte Themen