2016-04-20 12 views
1

Ich habe Stackoverflow durchsucht; Ich habe jedoch verschiedene widersprüchliche Antworten auf diesbezügliche Fragen gefunden. Bei Android 5.1.1 und iOS 8.4.1 ist die maximale Anzahl an Bytes angegeben, die über einen verbindungslosen BLE-Dienst gesendet werden können. Es ist mein Grundverständnis, dass es 20 Bytes von BLE Specification (eigentlich 23) sein sollte; Ich habe jedoch Anfragen gesehen, bei denen iOS 512 drücken konnte und Android seine MTU erhöhen konnte.iOS und Android Max BLE werben und scannen Bytes

Auch wenn es möglich ist, mehr als 20 Bytes in einer Verbindung zu senden, würden sie alle bei den Scannern auf iOS und Android mit einer plattformübergreifenden Anwendung korrekt erkannt, wenn sie die Pakete ohne direkte Verbindung empfängt?

Antwort

1

Per Apple Best Practices for Setting Up Your Local Device as a Peripheral:

Obwohl Werbepakete im Allgemeinen eine Vielzahl von Informationen über das Peripheriegerät halten kann, können Sie werben nur Ihre lokalen Gerätenamen und die UUIDs aller Dienste, die Sie wollen werben. Das heißt, wenn Sie Ihr Werbewörterbuch erstellen, können Sie nur die folgenden zwei Schlüssel angeben: CBAdvertisementDataLocalNameKey und CBAdvertisementDataServiceUUIDsKey. Sie erhalten einen Fehler, wenn Sie andere Schlüssel angeben.

Es gibt auch Grenzen, wie viel Platz Sie verwenden können, wenn Werbedaten. Wenn Ihre App im Vordergrund ist, kann sie bis zu 28 Byte Speicherplatz in den anfänglichen Ankündigungsdaten für eine beliebige Kombination der beiden unterstützten Werbedatenschlüssel verwenden. Wenn dieser Speicherplatz aufgebraucht ist, gibt es zusätzliche 10 Byte Speicherplatz in der Überprüfung Antwort, die nur für den lokalen Namen verwendet werden kann. Alle Dienst-UUIDs , die nicht in den zugewiesenen Speicherplatz passen, werden zu einem speziellen "Überlauf" -Bereich hinzugefügt; Sie können nur von einem iOS-Gerät erkannt werden, das explizit nach ihnen scannt. Während sich Ihre App im Hintergrund befindet, wird der lokale Name nicht angezeigt und alle Service-UUIDs befinden sich im Überlaufbereich .

Hinweis: Diese Größen enthalten nicht die 2 Bytes der Headerinformationen , die für jeden neuen Datentyp erforderlich sind. Das genaue Format der Werbung und Antwortdaten werden in der Bluetooth 4.0 Spezifikation definiert, Band 3, Teil C, Abschnitt 11

Wenn Sie eine nicht registrierte 16-Byte-Dienst UUID verwenden, glaube ich, dass Sie geben geht über 12 Bytes Daten.

Die verfügbaren Bytes in einem Werbepaket unterscheiden sich von den verfügbaren Bytes in einem Payload-Paket.

Verwandte Themen