0

我正在执行以下操作以确保我的应用程序仅在为用户获取位置更新后启动。

1)我的应用程序委托实现 CLLocationManagerDelegate

2)在我的应用程序委托 didFinishLaunchingWithOptions 方法中,我正在做

[locationManager startUpdatingLocation]

其中 locationManager 是 CLLocationManager 实例,然后返回 YES

3)在我的应用委托中实现了这个方法

 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

4)现在当 didUpdateToLocation 方法被调用时,我做

  [self.window addSubview:myViewController.view];
  [self.window makeKeyAndVisible];

5)我也有一个启动页面

所以这就是我所看到的,启动页面出现一两秒钟,然后一个纯白色窗口出现一秒钟左右,然后我看到我的 myViewController.view

我想避免出现那个白色纯窗口,我知道它出现是因为那时我的手机正在尝试更新用户当前位置,但我希望它在那段时间继续显示启动画面而不是显示白色纯窗口.

4

3 回答 3

2

在 MainWindow.xib 中的窗口中添加一个与您用作初始屏幕相同的图像的图像视图。

(PS:多么糟糕的用户体验!如果位置管理器无法获得位置修复,你会怎么做?或者如果需要 30 秒才能得到一个?无论你做什么,你的用户都会消失。)

于 2011-04-06T14:39:55.237 回答
0

您必须编写代码以显示启动屏幕的副本。

但您还需要考虑用户可能会拒绝位置服务权限提示或不在良好的 GPS 覆盖区域或处于飞行模式。

于 2011-04-06T14:41:21.530 回答
0

我同意这里的其他人。它可以被伪造,但这对用户来说是可怕的。

如果您的应用程序在没有用户位置的情况下绝对无法运行,我建议显示一些屏幕,指示应用程序正在定位用户。如果它不这样做,让用户知道这一点。

简单地让它看起来像应用程序需要 30 秒来加载会拒绝许多用户。因此,如果没有其他事情,请让他们知道那里正在发生一些事情。(或者更好的是,如果应用程序功能允许,在确定位置的同时找到一些呈现应用程序有用部分的方法)

于 2011-04-06T14:54:01.213 回答