CoreLocation无法使用MonoMac

时间:2012-09-07 17:23:51

标签: c# mono core-location monomac

好的,所以我正在尝试在单声道应用中使用CoreLocation。经过几次尝试让它运转起来没有运气(.UpdatedLocation事件从未被提出),我从MonoMac repository抓取了这个样本。

CLLocationManager的配置/使用看起来非常简单:

locationManager = new CLLocationManager();
locationManager.UpdatedLocation += HandleLocationManagerUpdatedLocation;
locationManager.Failed += HandleLocationManagerFailed;
locationManager.StartUpdatingLocation();

不幸的是,似乎结果与位置永远不会显示相同:

Where Is My Mac Sample App

因此,我需要启用某种设置才能实现此功能吗?当我在运行时检查它时,CLLocationManager.LocationServicesEnabled返回true。

3 个答案:

答案 0 :(得分:3)

确保您已允许WhereIsMyMacApp允许访问位置服务。如果您错过了第一次运行程序时显示的弹出窗口,则必须在“系统设置 - >安全性 - >隐私”中设置复选框。如果您错过了为应用设置的复选框但启用了位置服务,则CLLocationManager.LocationServicesEnabled将为true,但您的应用将无法使用该服务。

以下是我在机器上的外观: Location Settings

(对不起,这是德语,但你应该可以在你的Mac上找到设置)。刚刚测试了MonoMac示例,其中Lion上的WhereIsMyMac采用MonoMac 1.0 tarball编译而来,可以作为魅力。

答案 1 :(得分:2)

在Mountain Lion上我看到了Joel看到的同样问题。更新永远不会发生。我创建了一个示例obj-c应用程序,它确实有用。在控制台日志中,我通过MonoMac应用程序看到了这些错误:

9/16/12 8:06:34.291 AM com.apple.launchd.peruser.501[154]: (com.apple.CoreLocationAgent) Throttling respawn: Will start in 1 seconds
9/16/12 8:06:35.332 AM CoreLocationAgent[7744]: CodeSigningInforequest for pid=7739 
9/16/12 8:06:35.333 AM CoreLocationAgent[7744]: getting requirement data failed for pid=7739

但对于obj-c应用程序,它看起来像:

9/16/12 8:02:18.143 AM CoreLocationAgent[7674]: locationRequest for pid=7670 message=0
9/16/12 8:02:20.196 AM CoreLocationAgent[7674]: locationRequest for pid=7670 response=1

我还没确定原因。

答案 2 :(得分:0)

我遇到了同样的问题。但是,OS X 10.8.3和最新的MonoMac源自源代码(截至7e55bb19cf27afe44b53eacb33643397921aafb9),现在又重新开始了。