UIApplication openURL背景

Ric*_*III 7 iphone background objective-c openurl fast-app-switching

在我的iOS 4应用程序中,我需要在用户指定的时间从后台打开URL.但是,出于某种原因,我无法出于某种原因从后台启动URL.这是我打开网址的代码:

if (![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]])
{
     // the URL wasn't opened. we will ignore this for now.
}
Run Code Online (Sandbox Code Playgroud)

该代码全部是从之前创建的守护程序线程启动的.我已在模拟器上测试了此代码,并且未打开URL,并且该方法YES由于某种原因返回,但是当我再次打开我的应用程序时(通过快速应用程序切换),它会打开URL.有没有什么方法可以让我的应用程序在此时再次出现(不是通过本地通知),以便URL可以打开,或者这是一个错误或未记录的功能.此外,如果有另一种方法来打开URL,那将在后台运行,这也会有所帮助.

Joe*_*asq 5

UIKit 调用只能在主线程上运行。我认为因为这是在后台线程上运行的,Safari 仍然会访问该 URL,您的应用程序仍然处于活动状态。稍后尝试打开 Safari,看看它是否加载了该 URL。

解决方案是将其放在主线程上,从而在代码运行时离开您的应用程序。抱歉,这听起来不像你想要的。如果您想从应用程序访问该 URL ,您可以提供 UIWebView。


Ric*_*III 5

我相信我找到了它(在模拟器上不起作用,因为它将命令传递给mac上的终端,因为模拟器没有命令行).用这个:

system([[NSString stringWithFormat:@"uiopen \"%@\"", myUrlToOpen] UTF8String]);
Run Code Online (Sandbox Code Playgroud)

这会将命令uiopen(通过越狱找到)传递给设备,强制它打开该URL.我希望这有助于我的立场.