Unity3d的Input.location在ios8以上版本不能正常工作的解决方案

最近发现以前能正常工作的定位功能不能正常工作了(擦,在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


你可能感兴趣的:(Unity3d,Ios)