我正在做以下事情以确保我的应用程序仅在获得用户的位置更新后才启动。
1)我的app委托实现了CLLocationManagerDelegate
2)在我的app委托中,didFinishLaunchingWithOptions方法,我正在做
[locationManager startUpdatingLocation]
其中locationManager是CLLocationManager实例,然后返回YES
3)在我的app委托中实现了这个方法
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
4)现在,当调用didUpdateToLocation方法时,我做了
[self.window addSubview:myViewController.view];
[self.window makeKeyAndVisible];
5)我还有一个启动页面
所以这就是我所看到的,启动页面会出现一两秒,然后会出现一个普通的白色窗口,然后我会看到我的myViewController.view
我想避免出现白色普通窗口,我知道它出现是因为在那段时间我的手机正在尝试更新用户当前位置,但我希望它在此期间继续显示启动画面而不是显示白色平原窗。
答案 0 :(得分:2)
使用与初始屏幕相同的图像添加图像视图到MainWindow.xib中的窗口。
(PS:糟糕的用户体验!如果位置管理员无法获得位置修复,您会怎么做?或者如果需要30秒才能获得一个位置?无论您做什么,您的用户都将消失。)
答案 1 :(得分:0)
您必须编码才能显示启动画面的副本。
但您还需要考虑用户可能会拒绝位置服务权限提示,或者不在GPS覆盖区域或飞行模式下。
答案 2 :(得分:0)
我同意其他人的意见。它可以伪造,但这对用户来说太糟糕了。
如果您的应用程序绝对无法在没有用户位置的情况下运行,我建议您提供一些屏幕,指示应用程序正在定位用户。如果不这样做,请让用户知道这一点。
简单地让它看起来像应用程序需要30秒才能加载,这将使许多用户失望。所以如果没有别的请让他们知道那里发生了什么事。 (或者更好的是,在确定应用程序功能允许的位置时,找到一些方法来呈现应用程序的有用部分)