私のアプリで新しいibeaconsが検出されない

私はビーコン検出アプリケーションを開発していて、現時点ではkontaktブランドのビーコンに非常に適しています。

クライアントは私が見たことがないいくつかの新しいビーコンを送ってきた、そして私はグーグルで検索したが、私は彼らがどんなブランドであることができるか見つけられない。

彼らが私にくれたこのビーコンに関連する以下の情報:

uuid: fda50693-a4e2-4fb1-afcf-c6eb07647825
pass: 000000
name: ion_beacon00021
major: 16789
minor: 24532

enter image description here

私はそれを機能させることなく両方のUUIDを監視するために私のコードを変換しました

for (index, beaconID) in beaconsIds.enumerated() {

  let beaconUUID = UUID(uuidString: beaconID)!
  let identifier = "BLERegionBeacon \(index)"

  let beaconRegion = CLBeaconRegion(proximityUUID: beaconUUID, identifier: identifier)
  self.locationManager?.startMonitoring(for: beaconRegion)
  self.locationManager?.startRangingBeacons(in: beaconRegion)
}

func configureLocationManager() {
    self.locationManager = CLLocationManager()
    self.locationManager!.delegate = self
    self.locationManager!.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager!.distanceFilter = kCLDistanceFilterNone;
    self.locationManager!.activityType = CLActivityType.automotiveNavigation;

    for region in self.locationManager!.monitoredRegions {
      self.locationManager?.stopMonitoring(for: region)
    }

    if CLLocationManager.authorizationStatus() != CLAuthorizationStatus.authorizedAlways {
      self.locationManager?.requestAlwaysAuthorization()
    }

    self.locationManager!.startUpdatingLocation()

}

この新しいibeaconを機能させる方法が見つからない場合は、私はサードパーティ製のアプリケーション( MyBeacon Detector Beacon Demonstrator など)に頼っています。このビーコンの情報が正しいかどうかを検証するには、を検索しますが、アプリケーションによってはこのibeaconを検出できませんでした。

I bought a new battery to make sure it was not as simple as that, but neither. :'(

私はブルートゥースデバイスを検出するどんなアプリケーションでも使うという考えを持っていました、そして私は BLE Scanner を見つけました。このアプリケーションで私はラッキーで、少なくとも私が持っているビーコンの名前は正しいが、 majorまたはminorまたはpass に関連するものは見つからなかったことに気づくことができました。私はまたそこに見られる長いidが正しいことがあり、私が持っていたのは正しくないと思いました...しかし私はそれを捨てました。

enter image description here

enter image description here

ISCONNECTABLE Jumps between YES and NO.

BLE Scanner を使用してビーコンを検出したとき Kontakt SERVICEDATA ISCONNECTABLE という追加情報が表示されます。

enter image description here

- これらのビーコンを検出するために必要なことは他にありますか?

- 何が起こっているのか、だれでもご存知ですか?

どうもありがとうございました

EDIT

davidgyoung の助けを借りて、Locateアプリケーションが動作するのであれば、Android用のバージョンでしか実現できないことがわかりました。そして実際に、最初にそのビーコンから私が与えられた情報を正しく返します。

これらのビーコンは BeaconFlyer という名前のアプリケーションを使用して設定可能であることがわかりましたそしてそこに私は私を送ってきたそのパスワードである理由を実感しました。奇妙なことに私はただの数字と文字を入れないだけですが、 uuid を変更することができました。 8-4-4-4-12と同じパターンに従って、32個のゼロを変更しました。私はまだIOSで結果が得られませんが、UUIDを変更した後でも、Android上で動作します。

一部のブランドはiOSデバイスによって検出されることを認証する必要があり、Androidにはこれらの制限がありません。

編集2

これらすべての詳細を考慮すると、問題はIOSではなくAndroidではないと思われるので、ビーコンの機能をテストするためだけの単純なAndroidプロジェクトを作成すれば、それを検出できるはずです。

テストはこのUUID f7826da6-4fa2-4e98-8024-bc5b71e0893e を登録することによって行われました。これは私にとって問題なく動作し、問題なくビーコンマーク kontakt <を検出します/ code>。

To my surprise I detect it without problem even without registering the UUID that I have for this brand. It is very strange considering that only register 1 UUID that was the mark kontakt

3

6 答え

同じコードを持つ別のビーコンを検出している場合、最も簡単な説明は指定されたProxmityUUIDが間違っていることです。

You won't be able to determine the correct ProximityUUID from BLE Scanner on iOS, as iOS blocks access to iBeacon advertisements unless you know the ProximityUUID up front. If you can get your hands on an Android device you can use the Locate app to see any beacon regardless of its identifiers. https://play.google.com/store/apps/details?id=com.radiusnetworks.locate&hl=en You can use this to find out what it is actually sending. There are similar apps for MacOS as well if you have access to a Mac.

5
追加された
iOS向けの検索について話しているのであれば、Kontaktを箱から出して検出するのは、アプリがKontaktのデフォルトのUUIDを表示するように事前設定されているためです。私はそれをアプリに入れた作者なので知っています。
追加された 著者 davidgyoung,
@Gero、これについてブログ記事を書きました。 iBeaconsを発見するためにCoreBluetoothでコールバックを取得できるのは事実ですが、iOSがiBeaconのレイアウトと一致するとiOSが判断した場合、広告データは実際には削除されます。そのため、コールバックはかなり無意味です。詳細はこちらをご覧ください。 davidgyoungtech.com/2013/ 10/21 /&hellip;
追加された 著者 davidgyoung,
それで、ProximityUUIDがあなたが期待するものであるかどうか確認しましたか? LocateはUUIDを "fda50693-a4e2-4fb1-afcf-c6eb07647825"と表示しますか?
追加された 著者 davidgyoung,
わかりました、明確にするために、あなたの質問は「しかし、どのアプリケーションでも私はそれにこのibeaconを検出させることができませんでした」と言います。これは、「はい、まさにそのとおりです」という上記の説明と一致しません。 「LocateはUUIDを 'fda50693-a4e2-4fb1-afcf-c6eb07647825'として示していますか?Locateはそれを検出しますか。それとも検出しませんか。
追加された 著者 davidgyoung,
こんにちは、あなたは私のアップデートをご覧ください。
追加された 著者 jose920405,
混乱させて申し訳ありませんが、問題は私が質問のその部分を編集していないことです(私はそれをやったはずです)。 Locate ANDROID APPには、 fda50693-a4e2-4fb1-afcf-c6eb07647825 がビーコンのUUIDとして表示されます。しかし、 Locate iOS APPやその他のIOSのアプリケーションでは、そのビーコンについて何も表示されません。
追加された 著者 jose920405,
はい、それはまさにそれです
追加された 著者 jose920405,
こんにちは、効果的にあなたがこのビーコンを検出した場合あなたが私に与えたアプリケーション...そして私はビーコンから私が持っている情報が正しいことを検出することができました、ありがとう。さて、偶然にも、このビーコンが検出されない理由は何なのか知っていますが、このデータを私のアプリケーションやサードパーティ製アプリケーションにも記録しています。
追加された 著者 jose920405,
こんにちはdavid ...あなたが与えたProxmityUUIDをしがみついているのは間違っています Locate アプリケーションを使用すると、以前にuuidを追加しなくてもkontaktマークを検出できるため、非常に奇妙です。
追加された 著者 jose920405,
明確にするために、@ davidyoung:Appleはあなたがまだ考えていないようなあなたがまだ知らないビーコンのためにUUIDを完全にはブロックしていない。 iBeaconとして認識することは できません(そしてそれについての地域や範囲の結果をアプリに送信することもありません)が、COreBluetoothフレームワークを使用してもスキャンできます。そのようにしてすべての Bluetooth広告デバイスをスキャンできます。 BLEスキャナーはまさにそれをします、それはあなたがBLE装置を調べることを可能にします。残念なことに、それは必ずしも適切にデバイスを識別するわけではありません、なぜならそれは彼らが何を送信するのかを自然に知らないからです。
追加された 著者 Gero,
@ davidgyoungああ、それはとてもおもしろいです。スキャナーアプリですべての情報を取得できるビーコンを見たことがあります(ただし、どれを思い出すことはできません)が、それらは通常より洗練されたものです(たとえば、Bluetoothを介してメジャーとマイナーを編集できます)。彼らは別のサービスを宣伝し、おそらくそのようにデータを配ったと思います。私は自分自身でCoreBluetoothを使用しようとはしていないので、この制限を知っているのは面白いです、ありがとう。もう一つの理由、ところで、最も安いビーコンを使用しないこと。 :)(ああ、そしてポストもこれの "様々なUUID"の側面を示しています)
追加された 著者 Gero,

同じコードを持つ別のビーコンを検出している場合、最も簡単な説明は指定されたProxmityUUIDが間違っていることです。

You won't be able to determine the correct ProximityUUID from BLE Scanner on iOS, as iOS blocks access to iBeacon advertisements unless you know the ProximityUUID up front. If you can get your hands on an Android device you can use the Locate app to see any beacon regardless of its identifiers. https://play.google.com/store/apps/details?id=com.radiusnetworks.locate&hl=en You can use this to find out what it is actually sending. There are similar apps for MacOS as well if you have access to a Mac.

5
追加された
@Gero、これについてブログ記事を書きました。 iBeaconsを発見するためにCoreBluetoothでコールバックを取得できるのは事実ですが、iOSがiBeaconのレイアウトと一致するとiOSが判断した場合、広告データは実際には削除されます。そのため、コールバックはかなり無意味です。詳細はこちらをご覧ください。 davidgyoungtech.com/2013/ 10/21 /&hellip;
追加された 著者 davidgyoung,
iOS向けの検索について話しているのであれば、Kontaktを箱から出して検出するのは、アプリがKontaktのデフォルトのUUIDを表示するように事前設定されているためです。私はそれをアプリに入れた作者なので知っています。
追加された 著者 davidgyoung,
それで、ProximityUUIDがあなたが期待するものであるかどうか確認しましたか? LocateはUUIDを "fda50693-a4e2-4fb1-afcf-c6eb07647825"と表示しますか?
追加された 著者 davidgyoung,
わかりました、明確にするために、あなたの質問は「しかし、どのアプリケーションでも私はそれにこのibeaconを検出させることができませんでした」と言います。これは、「はい、まさにそのとおりです」という上記の説明と一致しません。 「LocateはUUIDを 'fda50693-a4e2-4fb1-afcf-c6eb07647825'として示していますか?Locateはそれを検出しますか。それとも検出しませんか。
追加された 著者 davidgyoung,
こんにちはdavid ...あなたが与えたProxmityUUIDをしがみついているのは間違っています Locate アプリケーションを使用すると、以前にuuidを追加しなくてもkontaktマークを検出できるため、非常に奇妙です。
追加された 著者 jose920405,
こんにちは、あなたは私のアップデートをご覧ください。
追加された 著者 jose920405,
混乱させて申し訳ありませんが、問題は私が質問のその部分を編集していないことです(私はそれをやったはずです)。 Locate ANDROID APPには、 fda50693-a4e2-4fb1-afcf-c6eb07647825 がビーコンのUUIDとして表示されます。しかし、 Locate iOS APPやその他のIOSのアプリケーションでは、そのビーコンについて何も表示されません。
追加された 著者 jose920405,
はい、それはまさにそれです
追加された 著者 jose920405,
こんにちは、効果的にあなたがこのビーコンを検出した場合あなたが私に与えたアプリケーション...そして私はビーコンから私が持っている情報が正しいことを検出することができました、ありがとう。さて、偶然にも、このビーコンが検出されない理由は何なのか知っていますが、このデータを私のアプリケーションやサードパーティ製アプリケーションにも記録しています。
追加された 著者 jose920405,
明確にするために、@ davidyoung:Appleはあなたがまだ考えていないようなあなたがまだ知らないビーコンのためにUUIDを完全にはブロックしていない。 iBeaconとして認識することは できません(そしてそれについての地域や範囲の結果をアプリに送信することもありません)が、COreBluetoothフレームワークを使用してもスキャンできます。そのようにしてすべての Bluetooth広告デバイスをスキャンできます。 BLEスキャナーはまさにそれをします、それはあなたがBLE装置を調べることを可能にします。残念なことに、それは必ずしも適切にデバイスを識別するわけではありません、なぜならそれは彼らが何を送信するのかを自然に知らないからです。
追加された 著者 Gero,
@ davidgyoungああ、それはとてもおもしろいです。スキャナーアプリですべての情報を取得できるビーコンを見たことがあります(ただし、どれを思い出すことはできません)が、それらは通常より洗練されたものです(たとえば、Bluetoothを介してメジャーとマイナーを編集できます)。彼らは別のサービスを宣伝し、おそらくそのようにデータを配ったと思います。私は自分自身でCoreBluetoothを使用しようとはしていないので、この制限を知っているのは面白いです、ありがとう。もう一つの理由、ところで、最も安いビーコンを使用しないこと。 :)(ああ、そしてポストもこれの "様々なUUID"の側面を示しています)
追加された 著者 Gero,

クライアントから「ビーコン」が送信され、必ずしも「 i ビーコン」とは限らないことは明らかです。 davidyoungが指摘したように、iBeaconを構成するものは Appleによって(非常に厳密に)指定されたです。あなたがそのように傾いているならば、そこから仕様をダウンロードして見てください。

私はいくつかのBLEスキャナーを使用して、私が使用したさまざまなブランドのiBeaconsのUUID、メジャー、およびマイナー番号を確認しました。この仕様は、どういうわけかiBeaconに追加のサービスを追加することを妨げるものではないと思います。その結果、異なるブランドのiBeaconsが異なるスキャナでわずかに異なる情報を表示する可能性があります。 しかし、スクリーンショットに表示されていることと、 isconnectable フィールドの値が切り替わっていることから、これらのビーコンは正しく機能していないと思います。

そのようにiOS上でそれらを動作させるためのいいえの方法があります。あなたはそれらを扱うためにあなた自身のBluetoothプロトコルコードを書くことができます、しかしそれはそれからAppleのiBeaconメカニズムに頼りません。これは、アプリが中断されている間も地域監視のような素晴らしい機能があることを意味します。それはまた、おそらくより多くのバッテリーを消耗させ、そして一般的により多くの仕事をします。


私はBluetoothの専門家ではないと言っていますが、これについては多くのことを学びました。UUIDはすべての仕様をカバーしています。あなた(およびApple)が参照するUUIDは、iBeaconが送信することになっているデータパケットの一部ですが、BLE サービス全般もUUIDによって識別されています。 (Apple以外の)参考文書にあります。このようなビーコンをスキャンして複数の場所でUUID(または少なくとも1つのように見える文字列)を見ると、これは混乱を招く可能性があります。そのため、あなたが持っているビーコンが仕様に従っている(あるいはどういうわけかそうするように設定することができる)場合でも、私の推測は誰かが失敗したということです。たとえば、間違った UUIDを編集して、必要なものを設定するのではなく、誤ってそのデバイスをiBeaconとして指定している部分を上書きしてしまった可能性があります。データパケットのバイト5と6が頭に浮かぶので、それらを使用することは不可能です。

アドバイスとして、私は以下を提案します:あなたのクライアントが実際のiBeacon機能に興味があるならば、彼らに彼らが正しいビーコンを買うべきであると伝えてください。 kontaktのものは実際にはかなり良いです。私は安い中国のノックオフをテストし、それらがすぐに信頼できなくなるのでそれらに対して助言するでしょう。最初は数ドルを節約したくなるかもしれませんが、長期的にビーコンを常に交換する必要がある場合は、最終的にはより高価になります。

3
追加された
この場合、質問の作成者は、Androidスキャナーを使用してビーコンを検出し、それらをiBeaconフォーマットとして解析することができたことを示しました。それは私が偶然に書いたものなので、私はそれが期待されるApple iBeaconフォーマットを使ってそれらをデコードすることを知っています。詳細については、「発生している可能性があることに関するもう1つの理論」から始まる私の回答を参照してください。
追加された 著者 davidgyoung,
まあ、それはそれを検証し、私は言うだろう:それはビーコンですが、Appleが望んでいるようにiBeacon ではありません。製造元コード(仕様から5バイト目と6バイト目を意味していると思いますが、正しいですか?)は修正されるはずです。フレームワークが登場した当初は自分自身の「会社コード」を入力することになっていましたが、自分自身のビーコンを設計する人々と話をしましたが、それは常に0x4Cと0x00である必要がありました。
追加された 著者 Gero,

何が起こっているのかについてのもう一つの理論:

iBeaconを実装するビーコンアドバタイズメントパケットは、iOSで検出されるためにはアップルの製造元コード004cを持っていなければなりません。 Androidにはそのような制限はありません。このビーコンが異なる製造元コードを送信している場合は、Androidのみがそれを検出できる理由を説明します。

これが本当かどうか、どうやってわかりますか?あなたはどういうわけか広告の生のバイトを見る必要があります。

2
追加された

The beacon brand is Iotton and it's looks like the one we sell: https://www.beaconzone.co.uk/ibeacon/ton9108

ローカル名が間違っているため、KontaktアプリがIottonビーコンを表示しているとは考えにくいです。それはあなたのKontaktビーコンの可能性が高いです - 今のところそれを消してください。このビーコンまたは任意のビーコンで、UUIDを取得してビーコンが機能しているかどうかを確認するための最良のアプリは、Nordic nRF Connectです。

1
追加された

デリゲートを CLLocationManager に設定してよろしいですか?コードには表示されていないので、これが上または下のどこかにない限り、追加する必要があります。

self.locationManager?.delegate = self

次に、クラスがコールバックを取得するために CLLocationManagerDelegate didRange(beacons:region :) メソッドを実装していることを確認します。

すでにこの設定が済んでいると思われる場合は、そのコードを表示することで、機能しないようにしていない他の何かが明らかになるかもしれません。

1
追加された
もちろん。そうでない場合..ビーコンマークkontaktを検出することすらできませんでした。コードの更新を確認する
追加された 著者 jose920405,