最近发现以前能正常工作的定位功能不能正常工作了(擦,在ios8之后就不能正常工作了,现在都到ios9了,可见项目做了有些日子了),多方验证与相关资料的搜索,现将解决方案分享给大家。
主要是ios8之后CLLocationManager的用法有了变化,
首先在unity3d倒出来的Xcode工程中,找到iPhone_Sensors.mm文件,一般在class目录下,找到void LocationService::StartUpdatingLocation()方法,在[locationManager startUpdatingLocation];前面加上如下代码:
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) {
[locationManager requestWhenInUseAuthorization];
}
如果我们的app需求在后台也需要获取位置信息,则用[locationManager
requestAlwaysAuthorization
];
然后在info.plist里添加对应key:NSLocationWhenInUseUsageDescription,value是会在请求授权的提示框中显示的内容,如果是requestAlwaysAuthorization,则对应的key为NSLocationAlwaysUsageDescription。
OK,现在unity3d的Input.location的功能已可以正常使用了。
具体原因可参考:http://www.cocoachina.com/bbs/read.php?tid-237203.html