私はRoximityからいくつかのビーコンを得て、私が集めたものから、すべてのRoximityビーコンは同じUUIDを持っています。 [locationManager: didRangeBeacons: inRegion:]
を使用してメジャーとマイナー値を取得できることがわかりますが、プッシュ通知を送信するように[locationManager didEnterRegion]
を設定し、ユーザーが別のRoximityビーコンで歩いている場合、どうすれば[locationManager didEnterRegion]
でこれを判断できますか?Can [LocationManager didEnterRegion]ビーコンのメジャーとマイナーを取得できますか?
答えて
基本的に2つの選択肢があります。
監視対象の領域を定義して、特定のメジャー番号とマイナー番号が含まれるようにします。主な制限は、iOSだけで、あなたが唯一の20種類iBeaconsのためにこれを行うことができることを意味し、同時に20件の地域を監視できることです:
CLBeaconRegion *region1 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"8deefbb9-f738-4297-8040-96668bb44281"] major:1201 minor:3211 identifier:@"beacon1"]; [_locationManager startRangingBeaconsInRegion:region1]; CLBeaconRegion *region1 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"8deefbb9-f738-4297-8040-96668bb44281"] major:1798 minor:2122 identifier:@"beacon2"]; [_locationManager startRangingBeaconsInRegion:region2]; ...
のみUUIDに基づいて地域を監視するだけでなく、この同じ地域に測距ん同時に。あなたが見る特定のiBeaconごとにRangingコールバックを取得します。レンジングコールバックでは、表示されているビーコンのメジャー/マイナー番号をチェックし、所有しているビーコンのリストと比較します。一致が見られる場合にのみ、特定の操作を実行します。ビーコンの追加を続けると、このリストをアプリケーションに最新の状態に保つのが難しい場合があります。そのため、iBeacon識別子のリストをクラウドに保存できるようなWebサービス(ProximityKitなど)を使用したい場合があります。
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { for (CLBeacon *beacon in beacons) { if ([self isMyBeaconWithMajor: beacon.major minor: beacon.minor]) { // Yes, this is my beacon! Do something special here } } } -(BOOL)isMyBeaconWithMajor: (NSNumber *)major minor: (NSNumber *)minor { // TODO: write code here that returns YES if the major and minor belong to you }
別の最終可能性(あなたが求めているものを外に確かに少しは)物事は非常に簡単になりますカスタムUUID、とビーコンを使用することです。完全開示:私はカスタマイズ可能な識別子を持つiBeaconsを販売する従業員です。
あなたはこのコードでメジャーとマイナーを確定することができます
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{
CLBeaconRegion *r = (CLBeaconRegion *) region;
NSLog(@"UUID %@, major %@, minor %@", r.proximityUUID, r.major, r.minor);
[self myNotification:@"You are in the region"];
[self.locationManager startRangingBeaconsInRegion:r];
}
このデリゲートメソッドは、監視対象の領域を返します。基本的には、「ねえ、あなたが監視するように言った地域はちょうど入力されました」と、その地域を宣伝するビーコンについては何も教えてくれません。 したがって、返されるメジャー値とマイナー値は、通知をトリガーしたビーコン領域のものではなく、あなた自身のものです。 – joshblour
- 1. iOS /ビーコン:didEnterRegionをリセットできますか?
- 2. AltBeaconマイナー&メジャー
- 3. OreoでiBeaconのメジャー、マイナー、UUIDを慎重に取得
- 4. マイナー軸とメジャー軸Androidデバイス
- 5. iBeacons:マイナー、メジャー、UUIDの理解
- 6. cordova-plugin-ibeacon:監視がビーコンを検出したときに、メジャー/マイナーではない
- 7. gulp-bumpでメジャーとマイナーのアプリバージョンを変更するには?
- 8. eddystoneビーコン一定時間経過後に自動切断し、メジャーとマイナーを送信しない
- 9. LocationManagerからLat Longを取得できません
- 10. locationManager didEnterRegionがXCode 9シミュレータで呼び出されていません
- 11. 私が使用することができ、マトリックスのメジャーとマイナーの対角線を取得するための単一のiterable
- 12. CANビットレートを取得する
- 13. Linuxデバイスドライバ、ファイルディスクリプタを使用してマイナー番号を取得できますか?
- 14. JavaScript、メジャー、マイナー、パッチのネストされたオブジェクトのSemver?
- 15. startUpdatingLocationを呼び出さないと、LocationManagerから現在の位置を取得できますか?
- 16. eddystone-UIDビーコン信号のMACアドレスをiosで取得できます
- 17. 複数のbluetoothdevices(ビーコン)のbatterylevelを取得
- 18. ビーコン添付ファイル近接ビーコンapiの取得
- 19. GATTサービス:青色ビーコンのバッテリレベルを取得
- 20. LocationManagerからProximityAlertsのリストを取得する
- 21. Googleから、またはLocationManagerで現在の日付を取得する[GMT +6]
- 22. 2D配列のメジャーとマイナーな対角線が0からなるかどうかを調べる
- 23. 「Can Window Be Resize」を取得しますか?
- 24. アンドロイド:30秒でSamsung Galaxy S2でLocationManagerを取得することができます
- 25. Kontakt.ioビーコンを使ってビーコンのIDを取得するにはどうすればいいですか?
- 26. Pythonで異なる線種を持つメジャーとマイナーのグリッド線を作成する方法
- 27. 近くのビーコンをスキャンすると同時に、Androidデバイスからビーコン信号を送信できますか?
- 28. didEnterRegionが時々だけ起動する
- 29. 近くのビーコンとそのMACアドレスを取得
- 30. ビーコンのUUIDとビーコンのレイアウト
は偉大な答えをいただき、ありがとうございます。私は昨日オプション2をしようとしていたが、かなり働いていなかった。それをもう一度見てみましょう。 – Chris
各ビーコンにユニークなUUIDを使用すると、一度に最大20までしか監視できませんか? – random
しかし、それは私が提案しているものではありません。独自の固有のProximityUUIDを定義し、自分のすべてのiBeaconsに同じものを使用すると、そのProximityUUIDを見るとiBeaconsがあなたのものであることがわかります。 – davidgyoung