gpt4 book ai didi

iphone - 应用程序启动期间 iOS 测试与服务器的连接时间过长

转载 作者:可可西里 更新时间:2023-11-01 05:02:57 24 4
gpt4 key购买 nike

我有一个允许用户自动登录的应用程序。我老板想要的是,当应用程序启动时,应用程序需要测试与我们服务器的连接(不仅仅是测试是否有 WiFi 或 3G 网络)。我借了苹果的Reachability sample ,它的工作原理。

问题是花费的时间太长,尤其是在启动时。我在没有互联网连接的本地无线网络上尝试了它,我花了将近半分钟的时间。由于在 -ViewDidLoad() 中调用了自动登录,在那半分钟内,ui 没有加载。花那么长时间简直是不能接受的。更糟糕的是,如果我的应用加载时间过长,iOS 甚至可能会关闭该应用。

此外,我的应用程序中有很多网络服务调用。我知道每个 Web 服务调用都有可能失败,因为 iPhone/iPad 的性质很容易失去或获得连接,即使用户从一个地方步行到另一个地方也很容易。我个人不喜欢它,但这是我老板希望我做的,我可能必须经常在应用程序中测试连接。

所以我在这里寻找的是一种非常非常快(几秒钟内)检测连接的方法,或者是一种在幕后进行检测而不影响用户体验的方法。

有人有建议吗?

感谢您花时间阅读我的问题。

最佳答案

在测试进行时使用 presentModalViewController 呈现中间加载 View ,并使用 performSelectorInBackground 运行实际测试。然后使用 performSelectorOnMainThread 向主线程发信号:

- (void)viewDidLoad
{
[super viewDidLoad];

// Make this a hidden member
loadingViewController = [LoadingViewController new];
[self presentModalViewController:loadingViewController animated:NO];

[self performSelectorInBackground:@selector(testConnectivity) withObject:nil];
}

- (void)testConnectivity
{
// Do expensive testing stuff

[self performSelectorOnMainThread:@selector(testCompleted) withObject:nil waitUntilDone:NO];
}

- (void)testCompleted
{
[loadingViewController dismissViewControllerAnimated:YES];
loadingViewController = nil;
}

请注意,等待应用程序启动 30 秒的整体用户体验有点糟糕,并且在您使用应用程序时连接经常发生变化,因此即使您在每次启动时都进行测试,也不太可能可靠。但如果这是你老板想要的,我就和你一起受苦。 ;)

关于iphone - 应用程序启动期间 iOS 测试与服务器的连接时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com