Apple требует, чтобы у вас был специальный чип для ibeaons?

Играя с симуляторами iBeacon, я заметил следующее:

* Телефоны Android могут распознавать iBeacon независимо от устройства, имитирующего iBeacon (iOS и Android).

* iPhone может распознавать iBeacon только в том случае, если имитирующим устройством также является iPhone.

Это почему? это аппаратная вещь?

0
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

IBeacon не зависит от оборудования или операционной системы. Вы можете передавать пакет iBeacon с Android, iOS, MacOS, Linux, Windows 10 и многих встраиваемых платформ.

Вот фотография, показывающая передачу от Android Nexus 5X и обнаружение на iPhone 6:

android transmitting ibeacon to ios

Здесь нет особого трюка, но, конечно, можно напортачить, чтобы не получилось. Две наиболее распространенные ошибки:

  1. Передатчик должен быть настроен на использование кода производителя Apple Bluetooth LE 0x004c.

  2. Передатчик должен отправлять тот же ProximityUUID (он же ID1), который приемник iOS настроен на обнаружение с помощью настроенного CLBeaconRegion.

В приведенной выше настройке используется приложение BeaconScope на Android (с использованием Библиотека Android Beacon для передачи iBeacon) и приложение Найдите (с использованием CoreLocation для обнаружения iBeacon) на iOS.

Используя 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);
        }
    });

Другие вопросы по теме