因此,我在Unity3d 5.4.4f1中开发了一个应用程序,类似于最初针对安卓的Pokemon Go,然后我最近将其构建为iOS 10.3,发现Input.location根本无法工作。以下是代码:
public class Locate : MonoBehaviour {
public float latitude;
public float longitude;
IEnumerator coroutine;
IEnumerator Start() {
coroutine = updateGPS();
if (!Input.location.isEnabledByUser)
yield break;
Input.location.Start();
int maxWait = 4;
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) {
yield return new WaitForSeconds(1);
maxWait--;
}
if (maxWait < 1) {
print("Timed out");
yield break;
}
if (Input.location.status == LocationServiceStatus.Failed) {
print("Unable to determine device location");
yield break;
} else {
print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
longitude = Input.location.lastData.longitude;
latitude = Input.location.lastData.latitude;
StartCoroutine(coroutine);
}
}
IEnumerator updateGPS() {
float UPDATE_TIME = 1f;
WaitForSeconds updateTime = new WaitForSeconds(UPDATE_TIME);
while (true) {
print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
longitude = Input.location.lastData.longitude;
latitude = Input.location.lastData.latitude;
yield return updateTime;
}
}
void stopGPS() {
Input.location.Stop();
StopCoroutine(coroutine);
}
void OnDisable() {
stopGPS();
}
}当我研究这个问题的时候,有些人说状态总是处于“初始化”状态,从来没有改变过。我认为正在发生的另一件事是,iOS不允许应用程序使用位置,但我进入了限制,并将其设置为“始终”,仍然什么也不允许。
发布于 2017-04-30 14:45:21
从iOS 10开始,需要将NSLocationWhenInUseUsageDescription添加到info.plist文件中。这与将Android中的传感器权限添加到Manifest文件几乎是一样的。
NSLocationWhenInUseUsageDescription =“您使用此传感器的原因”;
当您这样做时,您将被允许访问GPS传感器。
https://stackoverflow.com/questions/43701104
复制相似问题