我们有一个基于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?
我们使用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();
缺少的部分是什么?在CL的didRangeBeacons方法中,我们无法看到这个灯塔。
答案 0 :(得分:3)
Android Beacon Library's新BeaconTransmitter
类要求new BeaconParser.setBeaconLayout()
表达式完全适合您要传输的信标类型。
关于代码的两件事看起来很可疑:
即使在信标布局表达式中没有定义数据字段(带有d:前缀),代码也会在信标上调用setDataFields()。这可能会导致异常,但如果没有,则可能会导致变速器堵塞。我会删除它。
我不确定制造商代码0x0000是否有效。如果(1)没有解决问题,请尝试使用不同的制造商代码找到适用于iOS的产品代码。
只是为了验证Nexus 9硬件没有问题,请尝试在Google Play商店中运行免费的QuickBeacon应用。它使用完全相同的API进行传输,因此如果它可以工作,您也应该能够使代码工作。