2014-12-09 4 views
3

У нас есть экосистема на основе iBeacon и вы хотите расширить ее с помощью рекламы на Android. Мы используем класс AltBeacon BeaconTransmitter, основанный на этом блоге: http://developer.radiusnetworks.com/2014/11/18/beacon-transmission-with-android-5.html с макетом радиомаяка, упомянутым в этой теме: Is this the correct layout to detect iBeacons with AltBeacon's Android Beacon Library?iOS устройства не могут видеть Nexus 9 рекламируемый маяк AltBeacon

Мы используем Nexus 9 таблетки для рекламы, другие наши Android устройство может видеть рекламируемый маяк, но IOS устройств нет.

Мы создаем маяк, как это:

mBeaconTransmitter = new BeaconTransmitter(this, new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")); 
      // Transmit a beacon with Identifiers 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 2 
      Beacon beacon = new Beacon.Builder() 
        .setId1("our uuid") 
        .setId2("a major id") 
        .setId3("a minor id") 
        .setManufacturer(0x0000) 
        .setTxPower(-59) 
        .setDataFields(Arrays.asList(new Long[] {0l})) 
        .build(); 

Что может быть недостающая часть? В методе didRangeBeacons CL мы не видим этот маяк.

ответ

3

Класс Android Beacon Library's новый BeaconTransmitter требует, чтобы выражение new BeaconParser.setBeaconLayout() было точно правильным для типа маякового радиосигнала, который вы хотите передать.

Две вещи о коде выглядят подозрительно:

  1. Код вызывает setDataFields() на маяке, даже если никакие поля данных не определены в выражении расположения маяка (с д: префикс). Вероятно, это должно привести к исключению, но если это не так, это может привести к сбою передачи. Я бы убрал это.

  2. Я не уверен, имеет ли код производителя 0x0000. Если (1) не решает проблему, попробуйте разные коды производителей, чтобы найти тот, который работает с iOS.

Просто чтобы убедиться, что нет никаких проблем с аппаратным обеспечением Nexus 9, попробуйте запустить бесплатную QuickBeacon приложения в Google Play магазине. Он использует те же API-интерфейсы для передачи, поэтому, если он работает, вы также сможете заставить ваш код работать.

+0

Спасибо Дэвиду за ваши рекомендации, я использовал 0x004c (код производителя Apple), и теперь он работает! – viplezer

+0

Дэвид, есть ли предполагаемая дата, когда вы объедините ветку андроида-l-apis с мастером? – viplezer

+0

Я планирую выпустить это сегодня в версии 2.1 beta-1, так что тогда будет доступна двоичная версия. Поскольку API-интерфейсы сканирования значительно изменились для поддержки Android 5, 2.1, вероятно, останется в бета-версии в течение нескольких недель, чтобы люди могли отправлять отчеты об ошибках. Пользователи, которым не нужны новые функции сканирования или BeaconTransmitter, все еще могут использовать версии 2.0.x. – davidgyoung