苹果是否要求您为iBeaons提供一些特殊的芯片?

时间:2018-10-26 06:42:27

标签: android ios hardware ibeacon android-ibeacon

在玩iBeacon模拟器时,我注意到了这一点:

*无论模拟iBeacons的设备(iOS和Android),Android手机都可以识别iBeacons

*仅当模拟设备也是iPhone时,iPhone才能识别iBeacon。

那是为什么?这是硬件吗?

1 个答案:

答案 0 :(得分:2)

iBeacon没有硬件或操作系统依赖性。您可以从Android,iOS,MacOS,Linux,Windows 10和许多嵌入式平台传输iBeacon数据包。

这是一张显示Android Nexus 5X的传输和iPhone 6上的检测结果的照片:

android transmitting ibeacon to ios

这里没有特殊的技巧,但是肯定有可能搞砸了,所以不起作用。最常见的两个陷阱是:

  1. 必须将发射器设置为使用Apple Bluetooth LE制造商代码0x004c

  2. 发送器必须发送与iOS接收器相同的ProximityUUID(也称为ID1),该接收器已设置为使用已配置的CLBeaconRegion进行检测。

以上设置在iOS上使用Android上的BeaconScope应用(使用Android Beacon Library传输iBeacon)和iOS上的Locate应用(使用CoreLocation检测iBeacon)。

使用AndroidBeaconLibrary,设置此发送器非常简单:

    Beacon beacon = new Beacon.Builder()
            .setId2(1) // Major for beacon
            .setId3(1) // Minor for beacon
            .setManufacturer(0x004C) // Apple
            .setTxPower(-56) // Power in dB
            .build();

    BeaconParser beaconParser = new BeaconParser()
            .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");

    transmitter = new BeaconTransmitter(context, beaconParser);
    transmitter.startAdvertising(beacon, new AdvertiseCallback() {
        @Override
        public void onStartFailure(int errorCode) {
            Log.i(Settings.DEBUG, "Advertisement start failed with code: " + errorCode);
        }
    });