当应用程序在 iOS 中处于后台时,openURL 不起作用
Posted
技术标签:
【中文标题】当应用程序在 iOS 中处于后台时,openURL 不起作用【英文标题】:openURL is not working when App is in background in iOS 【发布时间】:2014-08-05 07:01:28 【问题描述】:当应用程序在后台时,我试图从我的应用程序在 Safari 中打开一个 URL,下面是我的代码
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:strURL]];
我的应用在调试过程中遇到了上述行,但没有使用给定的 URL 打开 Safari。
【问题讨论】:
UIKit 调用只能在主线程上运行。我认为因为这是在后台线程上运行的,所以 Safari 仍会访问 URL,但您的应用程序仍处于活动状态。稍后尝试打开 Safari,看看它是否加载了 URL。解决方案是将其放在主线程上,从而在代码运行时离开您的应用程序。这听起来不像你想要的,抱歉。如果你想在你的应用中访问 URL,你可以展示一个 UIWebView。 if([[UIApplication sharedApplication]canOpenURL:url]) [[UIApplication sharedApplication]openURL:url]; @MohitPopat:我尝试在 MainThread 上运行上述代码行,尽管它不起作用并且我们的客户不想在 UIWebView 中显示,他们只喜欢 Safari。 你试过了吗system([[NSString stringWithFormat:@"uiopen \"%@\"", myUrlToOpen] UTF8String]);
此命令不适用于模拟器。它只适用于越狱设备
【参考方案1】:
这是不可能的,您不能从后台状态启动另一个应用程序。如果应用程序在后台,那么您将无法从 iPhone/iPad 屏幕处理您的应用程序事件。您必须唤醒您的应用程序。您可以使用本地通知。
【讨论】:
以上是关于当应用程序在 iOS 中处于后台时,openURL 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序在 iOS 11.4.1 中处于后台时,静默通知不起作用
当应用程序处于后台时,在 iOS appDelegate didReceiveRemoteNotification 中调用 lambda 函数