2014-12-09 34 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(); 

什么可缺少的一部分?在CL的didRangeBeacons方法中,我们看不到这个灯塔。

回答

3

Android Beacon Library'sBeaconTransmitter类要求new BeaconParser.setBeaconLayout()表达式对于希望传输的信标类型是完全正确的。关于代码

两件事情看起来很可疑:

  1. 该代码调用setDataFields()上的信标,即使没有数据字段在信标布局表达式定义(用d:前缀)。这可能会导致异常,但如果不是这样,可能会导致变速器故障。我会删除这个。

  2. 我不确定制造商代码0x0000是否有效。如果(1)不能解决问题,请尝试使用不同的制造商代码找到适用于iOS的产品代码。

只是为了验证有与Nexus 9硬件没有问题,尝试在谷歌Play商店运行免费QuickBeacon应用。它使用完全相同的API来传输,所以如果它起作用,你也应该能够使你的代码工作。

+0

谢谢大卫为您的建议,我用0x004c(苹果的制造商代码),它现在的作品! – viplezer 2014-12-09 13:28:30

+0

大卫,有没有估计的日期,当你将合并android-l-apis分支与主人? – viplezer 2014-12-09 13:50:42

+0

我打算在今天晚些时候发布2.1-beta-1,所以会有二进制版本可用。由于扫描API发生了显着变化以支持Android 5,因此2.1可能会在几周内保持测试版,以便人们发送错误报告。不需要新扫描功能的人或BeaconTransmitter仍然可以使用2.0.x版本。 – davidgyoung 2014-12-09 15:43:10