在我的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.
}这些代码都是从先前创建的守护程序线程启动的。我已经在模拟器上测试了这段代码,但是由于某种原因,该方法返回YES,但是当我再次打开应用程序(通过快速应用程序切换)时,它会打开URL。有没有什么方法可以让我的应用程序在这一点上再次出现在前台(而不是通过本地通知),以便URL可以打开,或者这是一个bug或未记录的功能。此外,如果有另一种打开URL的方法,那将在后台工作,这也会很有帮助。
发布于 2010-11-14 02:45:49
我相信我已经找到它了(在模拟器上不起作用,因为它将命令传递给mac上的终端,因为模拟器没有命令行)。使用以下命令:
system([[NSString stringWithFormat:@"uiopen \"%@\"", myUrlToOpen] UTF8String]);这会将命令uiopen (通过越狱找到)传递给设备,强制其打开该URL。我希望这对其他处在我这个位置的人有所帮助。
发布于 2010-11-13 08:57:30
UIKit调用只能在主线程上运行。我认为这是因为它是在后台线程上运行的,Safari仍然访问URL,但您的应用程序仍然处于活动状态。不久之后,尝试打开Safari,看看它是否加载了URL。
解决方案是把它放在主线程上,这样就把你的应用程序留在代码运行的时候。抱歉,这听起来不像你想要它做的事情。如果你想在你的应用中访问这个网址,你可以提供一个UIWebView。
发布于 2010-11-13 08:57:30
iOS不支持这一点。每个the relevant section of Apple's iOS Programming Guide
对某些类型的后台执行的
支持必须由使用它们的应用程序通过一个数组预先声明,该数组包含一个或多个具有下列值的字符串:
互联网音频-应用程序在background.
..。
除了前面的键之外,iOS还提供了另外两种在后台执行工作的方法:
您的使用不符合任何允许的多任务类型。
https://stackoverflow.com/questions/4170254
复制相似问题