ios - 我可以在进入 iBeacon 范围时在前台启动应用程序吗?

标签 ios background ibeacon foreground

我正在使用 iBeacons 创建适用于 iOS 的应用程序。我知道,如果我设置一个区域来监控,当我进入/退出一个区域,或者打开区域内的屏幕时,框架可以调用我的应用程序。我也设法在这个回调中创建了一个本地通知。 我的问题是,是否可以将应用程序置于前台,就像它是由用户启动的一样?

最佳答案

不,我认为这是不可能的。 Apple 的理念是用户可以控制前台的应用程序。将应用程序置于前台的仅有三种方法是:(1) 点击其图标,(2) 点击与该应用程序关联的通知或 (3) 通过自定义 URL 从其他应用程序启动该应用程序。

我有一个同事一直坚持这是可能的,所以我今天亲自试了一下,看看是否确定。在我们的开源 SavengerHunt app ,我修改了 AppDelegate 的 didDetermineState 方法以添加下面的代码以尝试强制应用程序进入前台。

        NSLog(@"Attempting for force window %@ into foreground", self.window);
        [self.window makeKeyAndVisible];
        NSLog(@"Done with attempt");

在后台检测到 iBeacon 时执行的代码,日志行按预期显示。但是,该应用程序并未更改为前台。

       2014-03-06 11:35:43.655 scavengerhunt[277:60b] Sending a notification that a beacon is nearby
       2014-03-06 11:35:43.678 scavengerhunt[277:60b] Attempting for force window <UIWindow: 0x14e96730; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x14e95870>; layer = <UIWindowLayer: 0x14e961f0>> into foreground
       2014-03-06 11:35:43.686 scavengerhunt[277:60b] Done with attempt

鉴于这行不通,最好的办法是向用户显示本地通知。如果他们点击它,您的应用程序将移至前台。

关于ios - 我可以在进入 iBeacon 范围时在前台启动应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224639/

相关文章:

ios - 圆角,同时将 subview 扩展到父 View 的边界之外

ios - Segue 到 tableview Controller,传递数据

ios - Sprite Kit 使用 16x16 tiles 与 32x32 tiles 渲染性能?

ios - 在 nil 中的 uiview 之间传输数据

swift - iBeacon swift 在检测 Beacon 时需要 'requestWhenInUseAuth'?

ios - 如果用户关闭它,是否可以在 iOS 应用程序中运行应用程序?

php - 后台 & php/jquery

html - 按钮不会停留在背景图片上

swift - 如何在 MacOS (Swift) 上解析 iBeacon

ios - 应用程序在后台时的信标行为