2013-12-13 4 views
5

Ich bin ein wenig verwirrt über die Bedeutung einer CLBeaconRegion UUID und die Zeichenfolge-ID. Wenn meine CLBeaconRegion bereits eine eindeutige ID hat, warum muss dann ein zusätzlicher, nicht eindeutiger String-Bezeichner verwendet werden? Ist es rein "kosmetisch"?iBeacon - Unterschied zwischen der Nähe von UUID und region.identifier

Da Benutzer nicht in der Lage sind, Scan-Regionen zu scannen und mit WLAN (und SSIDs) zu verbinden, und die Empfänger-App die CLBeaconRegion vor-codiert und vordefiniert für Eingabe und Bereich benötigt Für Beacons in einer Region, wie wird der Bezeichner tatsächlich verwendet?

Ich habe Beispiele gesehen, wo Leute es für Ort Dinge wie com.companyname.app verwenden, was ich für sinnvoller hielt, falls die Kennung verwendet wurde, um das Signaturzertifikat der App zu entsprechen (aber es scheint keine !). Andere haben es verwendet, um Namen wie "Beacon Example", "Apple", "Kitchen" zu platzieren.

Mit anderen Worten, ich bekomme nicht, warum der Empfänger auch eine region.identifier angeben muss, da es nicht weiß, an welchen Broadcaster-Namen es sich anschließen wird. Egal, wie ich den Sender benenne, der Empfänger wird immer die Kennung auf seiner Seite definiert bekommen.

Antwort

15

Die Zeichenfolge-ID CLBeaconRegion hat nichts mit den IDs in iBeacon-Übertragungen zu tun. Es ist einfach ein Nachschlageschlüssel, der von CoreLocationManager verwendet wird, um mehrere Regionen zu verfolgen.

Sie können ihren Wert beliebig setzen, aber oft wird ein Paket-Stil-Qualifikationsmerkmal verwendet, da es eine einfache Möglichkeit ist, eine anwendungsspezifische eindeutige Zeichenfolge zu erstellen.

Der Hauptzweck der ID kommt, wenn Sie die Entfernung/Überwachung Ihrer Region ändern oder stoppen wollen. Mit derselben ID weiß CoreLocation genau, auf welche Region Sie sich beziehen.

Im folgenden Beispiel konstruieren wir region1 und starten dann die Überwachung. Wir ändern dann die Neben-ID, die wir in region2 überwachen, und starten die Überwachung dafür. Da in Region1 und Region2 genau der gleiche Zeichenfolgenbezeichner verwendet wird, weiß CoreLocation, dass die erste überwachte Region durch die zweite ersetzt.

CLBeaconRegion *region1 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6"] major: 1 minor: 1 identifier: @"my.made.up.unique.identifer]; 
[_locationManager startMonitoringForRegion:region1]; 
CLBeaconRegion *region2 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6"] major: 1 minor: 2 identifier: @"my.made.up.unique.identifer]; 
[_locationManager startMonitoringForRegion:region2]; 

Dies wird am häufigsten verwendet, um die Überwachung für eine Region zu stoppen. Wie folgt aus:

In diesem zweiten Beispiel, wo wir Region Überwachung stoppen, ist es wirklich, dass String-Bezeichner in der Region Objekt, das in immer Corelocation wichtig ist, zu stoppen, die Region zu überwachen.

+0

Danke David. Perfekt beantwortet und jetzt verstanden. –