gpt4 book ai didi

ios - 在应用程序启动后立即使用 openURL 时出现延迟

转载 作者:可可西里 更新时间:2023-11-01 05:35:53 26 4
gpt4 key购买 nike

我正在尝试在我自己的应用程序启动时使用其 url 处理程序 启动另一个应用程序。

- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSURL *actionURL = [NSURL URLWithString:@"fantastical2://"];
[[UIApplication sharedApplication] openURL:actionURL];
}

它基本上可以工作,但是从看到我的应用出现到实际打开 URL 有大约 7 秒的显着延迟。

怎么会延迟呢?如何在启动我自己的应用程序时立即启动打开的 URL/应用程序或减少此延迟?

最佳答案

您可以使用以下任何示例解决。

使用 diapatch_async

dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] openURL:urlString];
});

使用性能选择器

- (void)applicationDidBecomeActive:(UIApplication *)application
{
...

//hangs for 10 seconds
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];

//Fix: use threads!
[self performSelector:@selector(redirectToURL:)
withObject:url afterDelay:0.0];

...
}

- (void)redirectToURL:(NSString *)url
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
}

使用 NSThread

- (void)applicationDidBecomeActive:(UIApplication *)application
{
...

//hangs for 10 seconds
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];

//Fix: use threads!
[NSThread detachNewThreadSelector:@selector(openBrowserInBackground:)
toTarget:self withObject:url];

...
}

- (void)openBrowserInBackground:(NSString *)url
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]];
}

关于ios - 在应用程序启动后立即使用 openURL 时出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19925124/

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