2016-03-25 103 views
0

我的应用程序中有GPS记录功能。在我的应用程序“设置页面”中有几个选项可以为此功能进行配置。但是,此功能取决于启用的位置服务(在实际的iPhone本身上)。因此,对于可配置的选项,我检查了locationServicesEnabled(),如果为false,则禁用设置选项的功能。CLLocationManager.locationServicesEnabled()正在“侦听”

但是,如果看到我添加的选项“需要启用位置服务”下方的文本,用户将最有可能点击主页按钮,进入iPhone设置,启用位置服务,然后返回到应用程序配置设置。但是,由于我在viewDidAppear()中更改了启用/禁用选项,因此他们必须离开当前视图并返回以启用选项。

因此(在Swift中),有没有一种简单的方法来侦听locationServicesEnabled()上的更改,如果是,执行一个函数,在这种情况下,将重新启用我的应用程序中的可配置选项。谢谢!

编辑:所以它看起来像我可能能够使用委托方法CLLocationManagerDelegate,didChangeAuthorizationStatus。这是否是正确的方式去做这件事?

回答

2

您应该创建一个位置管理器的实例,并将它自己设置为委托。

然后,您应该实施didChangeAuthorizationStatus委托方法。如果用户授权您的应用使用位置服务,它将被调用。

您可以在每个需要了解此更改的视图控制器中创建位置管理器的实例,也可以创建自己的类来管理位置管理器的实例(“位置管理器管理器”,如果您愿意)。我会让这个班级成为一个单身人士。然后,您可以让位置管理器更改时广播自定义通知。

我会建议创建一个持有并管理单个位置管理器实例的单例。这就是我通常所做的。

+0

太棒了,谢谢!这听起来像它会工作。 –