标签: ibeacon

iBeacons:如果app在后台,则只有在显示锁定屏幕时才会调用locationManager:didEnterRegion:

我正在开发一款监控iBeacon地区的iOS应用程序.当应用程序在后台运行时,我希望它在遇到特定的iBeacon区域时发送本地通知.一切正常,除了一件事:locationManager:didEnterRegion显然不会被调用,直到用户显示锁定屏幕.因此,即使设备在应用程序处于后台时通过iBeacon区域,他们也不会在显示锁定屏幕之前收到通知.

我也尝试过使用startMonitoringForRegion,这种工作方式 - 如果应用程序在后台运行,则locationManager:didDetermineState:当设备进入iBeacon区域时触发.但是,它只执行一次 - 如果用户随后退出并重新进入iBeacon区域,则locationManager:didDetermineState不会再次触发.

我正在运行iPhone 5s并使用iPhone 4s作为iBeacon,如果这有任何区别的话.

更正:当我使用iPhone 4s作为客户端时,这种现象显然只会发生.如果我使用5s,通知会立即发送.

cllocationmanager ios ibeacon

10
推荐指数
1
解决办法
4997
查看次数

startMonitoringForRegion不会触发didEnterRegion和didExitRegion

我正在使用estimote信标和区域进行一些测试.

当我开始监视一个区域时阅读文档我将告诉我的代表,但是,特定区域正在被监视,didEnterRegion并且didExitRegion永远不会被触发.

我的代表开火了:

-(void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
Run Code Online (Sandbox Code Playgroud)

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
Run Code Online (Sandbox Code Playgroud)

我没有检查是否发生错误locationManager:didFailWithError:

目前我正在使用状态手动运行两个私有方法,这些方法与didEnter和didExit一样工作 - 在这种情况下,我也能够监视该区域,但我没有得到原因locationManager:didEnterRegion:并且locationManager:didExitRegion:永远不会被调用.

有人面临同样的行为吗?

cllocationmanager ios ibeacon

10
推荐指数
2
解决办法
9199
查看次数

iOS iBeacon:如何以编程方式获取所有的proximityUUID?

我想以编程方式查看广告包的所有proximityUUID.有些文章说在iOS上是不可能的,但Android是可能的.但我无法相信它,因为我发现梦幻般的应用程序"BLExplr"具有该功能.我需要在我的应用程序中实现该功能.有谁知道怎么做或好例子?任何帮助将不胜感激.

(更新2014/1/17)

我相信@davidgyoung的回答是对的.Estimote beacon的proximityUUID是"B9407F30-F5F8-466E-AFF9-25556B57FE6D",但在BLExplr app上显示我的Estimote beacon的UUID是另一个ID.

在此输入图像描述 在此输入图像描述

ios ibeacon

10
推荐指数
2
解决办法
2万
查看次数

在没有Roximity SDK的情况下检测Roximity iBeacon?

我们正在考虑从Roximity订购一些iBeacons,但我不清楚是否必须将Roximity SDK与这些信标一起使用,或者我是否可以使用核心位置功能?

我问的原因是我不想与他们的SDK绑在一起,然后必须总是从他们那里购买信标.

我能够获得Roxmity信标的UUID,但我不知道信标"标识符"是什么,所以在这个代码的情况下: [[CLBeaconRegion alloc] initWithProximityUUID:_uuid identifier:@"COM.TEST.APP"]; 我不知道要放什么代替COM.TEST.APP

sdk ios ibeacon

10
推荐指数
2
解决办法
3351
查看次数

在区域监控时检测iBeacon需要多长时间?

采取这种情况:用户通过iBeacon在口袋里放了一个iPhone.她的手机正在进行区域监控.现实世界需要多长时间才能从进入该地区到应用程序被唤醒的那一刻?我在David G. Young(http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html)上找到了一篇关于这个主题的优秀文章,但我可以不相信它真的需要15分钟.这意味着所有的iBeacon家庭自动化场景都无法使用,因为你不会在黑暗的房间里等待15个学生开灯,也不会通过积极使用应用程序来打开灯.门打开和锁定是iBeacon无法使用的另一种情况(NFC在这里工作得更好).或者我错过了什么?

home-automation ios bluetooth-lowenergy ibeacon

10
推荐指数
1
解决办法
3180
查看次数

Estimote信标区域检测从后台服务

我最近开始测试Estimote Beacons,我正在尝试在进入信标区域时从后台服务发出通知,但不幸的是我的解决方案不起作用.它不会出错,但在发现信标时不会启动通知.我不知道它是否是一些代码错误或只是这样做的方式是错误的.我已经阅读了这个其他问题,但它看起来有点不同,因为我使用的是服务而不是活动,但也许答案是类似的(应用程序上下文相关)...

这是我的服务代码

public class BeaconsMonitoringService extends Service{

    private BeaconManager beaconManager;

    private String user;

    @Override
      public void onCreate() {
        // Configure BeaconManager.
        beaconManager = new BeaconManager(this);

      }

      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          Toast.makeText(this, "Beacons monitoring service starting", Toast.LENGTH_SHORT).show();

          user = intent.getStringExtra("user");

            // Check if device supports Bluetooth Low Energy.
            if (!beaconManager.hasBluetooth()||!beaconManager.isBluetoothEnabled()) {
              Toast.makeText(this, "Device does not have Bluetooth Low Energy or it is not enabled", Toast.LENGTH_LONG).show();
              this.stopSelf();
            }

              connectToService();


          // If we get …
Run Code Online (Sandbox Code Playgroud)

android ibeacon ibeacon-android estimote

10
推荐指数
1
解决办法
4030
查看次数

如何使用AltBeacon android-beacon-library检测多个信标的区域输入/退出?

我正在使用iBeacons并使用AltBeacon库.

beaconManager.getBeaconParsers()
             .add(new BeaconParser()
             .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
Run Code Online (Sandbox Code Playgroud)

我想我的Android应用程序在信标进入和退出可见性时检测并生成事件.使用方法使用库的单个信标可以很好地工作.

public void **didEnterRegion**(Region region)
Run Code Online (Sandbox Code Playgroud)

public void **didExitRegion**(Region region) 
Run Code Online (Sandbox Code Playgroud)

我的问题是同时可以看到多个信标.我试图维护一个所有信标可见的数组.我想在每次信标进入和退出时生成一个事件.事件应通过其唯一标识符识别生成事件的信标.使用beacon.getIdentifiers()或(UUID,Major和Minor)可以识别我的信标

问题是在didExitRegion所有信标退出该区域之前,该方法不会被执行.

谁能想到一个简单的方法让我使用AltBeacon库实现我的目标?

任何建议将不胜感激.

android ibeacon

10
推荐指数
1
解决办法
1万
查看次数

Javasacript(Ionic)中两个移动设备之间的距离

对于我的一个项目,我目前想要构建一个Ionic应用程序,为i​​OS和Android平台编写一次代码.我正在寻找一种方法来衡量两个移动设备之间的距离.一个设备应放置在特定位置,另一个设备应在进入第一个设备的范围(或更具体地说是第一个设备所在的位置)时检测到.

特定位置的设备1将连接到互联网,对于访问该位置的设备2也是如此.

我已经阅读了很多不同的实现,但大多数时候它需要Android或iOS的本机代码.

以下是我已经找到的解决方案:

  • 蓝牙:每部手机都有蓝牙,因此一旦手机接近另一部手机就不难发现,但这意味着与另一部设备配对,并不可能测量两台设备之间的距离.
  • iBeacons和BLE:我们希望避免在发布时购买大量信标.这意味着我们希望创建一个移动应用程序来充当灯塔,但在许多设备上的Android上都不可能.此外,我们不关心微观位置,这意味着我们不会以100%的潜力使用信标.
  • GPS:在安全方面确实不太好,以确保两个设备的位置都是好的.
  • 在位置手动检入:确保设备2到达设备1 位置的最佳方法是在位置进行手动检查.但这有点令人沮丧,因为根本没有创新.

我实际上已经没想完了.实现应该在Javascript中编写快速原型,以便限制选项.

我在StackExchange上看了一篇帖子:Stack,但问题是没有描述任何实现.

换句话说,我希望检入系统知道设备2在设备1的位置.即使在请求我们的服务器的API之间进行交换,我们怎么能确定两个设备是关闭的,或者至少设备2已关闭在特定的位置?

编辑和新闻

为了给那些可能面临同样情况的人提供更多选择,我联系了在微软工作的人和一个叫做ThaliProject的项目,你可以在Google上找到这是一个PeerToPeer库,可以在移动设备之间进行通信.但它不适合这个问题:

不幸的是,Thali不会解决你的问题.:(我们依赖Android上的蓝牙4.2支持(所以我们可以是BLE中心和外围设备).

如果您需要在Android和iOS设备之间工作,蓝牙也将无法工作,因为Apple使用的蓝牙专有变体不起作用.

现在BLE可以在Android和iOS之间工作.虽然许多Android手机不能作为外围设备,但大多数都可以作为中心设备.

不同的人正在玩的另一种可能性是声音.类似于 https://developers.google.com/nearby/messages/overview?hl=en.许多小组一直在通过超声波通信进行局部发现试验.只需发送挑战并通过超声波获得响应,您已经证明设备1和2彼此非常接近.

我偶然发现了一个名为SonicNet.JS的JavaScript库,它能够通过超声波发送数据和字符串,但实际上我正在努力让它在我的计算机上运行.这可能是一种解决方案,可以避免互操作性问题.

javascript bluetooth-lowenergy indoor-positioning-system ibeacon ionic-framework

10
推荐指数
1
解决办法
1104
查看次数

使用ibeacons时确定确切位置的工具

我们正在与零售客户合作,他们想知道在整个商店中使用多个iBeacons是否有助于跟踪客户在商店内的确切位置(当然,当他们安装了客户端的应用程序时).

我想知道为此目的已经有哪些软件工具可用?

很清楚的是,在基本级别,设备的位置可以基于它与多个(至少2个)iBeacons的相对距离来确定.如果是这样,有没有工具可以帮助解决这个问题?

谢谢

ibeacon

9
推荐指数
2
解决办法
2万
查看次数

用Gimbal sdk编程我的android应用程序并没有检测到云台灯塔

我正在尝试使用Gimbal sdk创建一个Android应用程序来检测基于Gimbal的信标,但我的应用程序无法检测到信标.但如果我尝试使用BluetoothGATT,我就能够检测到信标.以下是我的代码中侦听信标事件的部分.API密钥验证成功,但仍然无法显示邻近度.

public class MainActivity extends Activity {

    private PlaceManager placeManager;
    private PlaceEventListener placeEventListener;
    private BeaconEventListener beaconEventListener;
    private BeaconManager beaconManager;
    private String TAG = "beacon";

    public ArrayAdapter<String> listAdapter;
    public ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        Gimbal.setApiKey(getApplication(),
                "MY API KEY ");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        initView();

        monitorPlace();

        listenBeacon();



        CommunicationManager.getInstance().startReceivingCommunications();

    }

    private void listenBeacon() {
        BeaconEventListener beaconEventListener = getBeaconEventListener();
        BeaconManager beaconManager = new BeaconManager();
        beaconManager.addListener(beaconEventListener);
        beaconManager.startListening();
    }

    private void monitorPlace() {
        placeEventListener = getPlaceEventListener();

        // placeManager = PlaceManager.getInstance();
        // placeManager.addListener(placeEventListener);
        placeManager = …
Run Code Online (Sandbox Code Playgroud)

android ibeacon gimbal beacon

9
推荐指数
1
解决办法
817
查看次数