首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIApplication openURL背景

UIApplication openURL背景
EN

Stack Overflow用户
提问于 2010-11-13 08:47:00
回答 3查看 8K关注 0票数 7

在我的iOS 4应用程序中,我需要在用户指定的时间从后台打开一个网址。但是,由于某些原因,我不能从后台启动URL。下面是我打开URL的代码:

代码语言:javascript
复制
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的方法,那将在后台工作,这也会很有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-14 02:45:49

我相信我已经找到它了(在模拟器上不起作用,因为它将命令传递给mac上的终端,因为模拟器没有命令行)。使用以下命令:

代码语言:javascript
复制
system([[NSString stringWithFormat:@"uiopen \"%@\"", myUrlToOpen] UTF8String]);

这会将命令uiopen (通过越狱找到)传递给设备,强制其打开该URL。我希望这对其他处在我这个位置的人有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2010-11-13 08:57:30

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

解决方案是把它放在主线程上,这样就把你的应用程序留在代码运行的时候。抱歉,这听起来不像你想要它做的事情。如果你想在你的应用中访问这个网址,你可以提供一个UIWebView。

票数 4
EN

Stack Overflow用户

发布于 2010-11-13 08:57:30

iOS不支持这一点。每个the relevant section of Apple's iOS Programming Guide

对某些类型的后台执行的

支持必须由使用它们的应用程序通过一个数组预先声明,该数组包含一个或多个具有下列值的字符串:

互联网音频-应用程序在background.

  • location中向用户播放音频内容-即使在background.

  • voip中运行,该应用程序也会随时通知用户其位置-该应用程序为用户提供使用连接进行电话呼叫的能力。

..。

除了前面的键之外,iOS还提供了另外两种在后台执行工作的方法:

  • Applications可以要求系统提供额外的时间来完成给定的task.
  • Applications可以计划在预定时间发送本地通知。

您的使用不符合任何允许的多任务类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4170254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档