当我进入iBeacon系列时,我可以在Foreground中启动应用程序吗?

时间:2014-03-06 12:32:29

标签: ios background ibeacon foreground

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

1 个答案:

答案 0 :(得分:5)

不,我不相信这是可能的。 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

鉴于这不起作用,您最好的选择是向用户提供本地通知。如果他们点击它,你的应用程序将移动到前台。

相关问题