iOS デバイスを iBeacon にできることは知っています ( iOS7 デバイスは iBeacon として機能しますか? )。残念ながら、デバイスが 1 つしかなく、ビーコンがまだ到着していません。そこで、テスト目的で MacBook Air (Mid-2011、Bluetooth 4.0 をサポート) を iBeacon に変える方法を考えていました。iOS 用の airlocate のような既製のアプリケーションはありますか? 前もって感謝します!
7 に答える
注: これは Mavericks でのみ機能し、Yosemite では機能しません。
Mavericks には、iOS 7 に追加された Core Location での iBeacon サポートがありません。ただし、Mavericks には、BLE 周辺デバイスとして機能する機能が追加されました。iBeacon が基本的に周辺機器であることを考えると、Mavericks を iBeacon として使用できるはずです (そして実際に可能です)。
iOS で iBeacon を作成するには、まずCLBeaconRegion
オブジェクトを作成し、peripheralDataWithMeasuredPower:
メソッドを使用NSDictionary
してブロードキャストに必要な広告データを含む を取得します。このコンテンツをNSDictionary
iOS デバイスから取得して Mavericks で使用すると、iBeacon が得られます。
これを簡単にし、Mavericks で直接広告データ ディクショナリを生成できるようにするクラスを作成しました。ソース コードはhttps://github.com/mttrb/BeaconOSXで入手できます。
このBLCBeaconAdvertisementData
クラスは、、、および調整された電力値を取得しproximityUUID
、major
Mavericksのメソッドにminor
渡すことができる NSDictionary を作成します。startAdvertising:
CBPeripheralManager
BLCBeaconAdvertisementData
クラスはとてもシンプルです。主な作業は次の方法で行われます。
- (NSDictionary *)beaconAdvertisement {
NSString *beaconKey = @"kCBAdvDataAppleBeaconKey";
unsigned char advertisementBytes[21] = {0};
[self.proximityUUID getUUIDBytes:(unsigned char *)&advertisementBytes];
advertisementBytes[16] = (unsigned char)(self.major >> 8);
advertisementBytes[17] = (unsigned char)(self.major & 255);
advertisementBytes[18] = (unsigned char)(self.minor >> 8);
advertisementBytes[19] = (unsigned char)(self.minor & 255);
advertisementBytes[20] = self.measuredPower;
NSMutableData *advertisement = [NSMutableData dataWithBytes:advertisementBytes length:21];
return [NSDictionary dictionaryWithObject:advertisement forKey:beaconKey];
}
これについては、 http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/でより詳細なブログ投稿があります。
私がこれまでに見つけた最良の解決策は、Tim Duckett によるものです: https://github.com/timd/MactsAsBeacon
プロジェクトを取得し、UUID、メジャー値、およびマイナー値を設定して、[ブロードキャスト] をクリックするだけです。本当に簡単です。このソリューションは、次のブログ投稿に基づいています: http://www.blendedcocoa.com/blog/2013/11/02/mavericks-as-an-ibeacon/
これは OSX Mavericks では可能ですが、Mountain Lion およびそれ以前のバージョンの OS では可能ではありません。私の会社、Radius Networks には、Mavericks でこれを行うMacBeaconアプリがあります。
OSX Mountain Lion では、iOS 6+ とは異なり、iBeacon のようにアドバタイズする必要がある Bluetooth ペリフェラル モードの組み込みサポートはありません。これは、独自の低レベル Bluetooth コードを展開することを意味し、控えめに言っても簡単ではありません。
ただし、古いオペレーティング システム用のソリューションがあります。Linux を実行している VirtualBox VM と Mac の外部 Bluetooth ドングルをペアリングし、探しているものを実現しました。私の会社は、この VM を無料でダウンロードできるようにしました: http://developer.radiusnetworks.com/ibeacon/
9.99 ユーロを節約したい場合は、mttrb による最新バージョンのオープン ソース クライアントをご覧ください。すべてのフィールドを調整できるように、GUI を追加しました。https://github.com/deadfalkon/BeaconOSX/releasesには、バイナリのダウンロードもあります。
私はこれらすべての解決策を試しましたが、これに従うまで AirLocate に信号を拾わせることができませんでした: https://github.com/lgaches/BeaconEmitter そしてこの UUID で送信を開始しました: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 と識別子: hello
AirLocate に関する次の投稿も役に立ちました 。AirLocate は特定の UUID のみを検索しますか?
はい、可能です。この github プロジェクトをチェックして ください https://github.com/nolim1t/iBeaconAdvertisement