为了赏金,我对 GPS 或音频背景模式不感兴趣,因为前者使用过多的电池,而后者会阻止使用任何其他音频,否则会面临音频中断,从而结束后台进程。我将需要一种在后台持续处理的方法,因此偶尔触发的后台模式也是不可能的。
如果有某种方法可以在后台运行应用程序,甚至可以忽略 Apple 的规则,我有兴趣尝试一下。如果答案是 VOIP,我不确定从哪里开始实现,因为我的所有研究都达到了太高的水平或失败了。我的应用程序如何能够使用 VOIP 后台模式在后台运行。如果没有添加任何代码,应用程序将拒绝在后台运行。
我知道在 iOS 7 中,背景模式又发生了变化。我希望能够在后台运行我的应用程序(永远不需要在 iOS App Store 上获得批准)。我还希望能够在后台停止执行,直到将来的特定时间。
例如,我希望它运行一个进程 15 分钟,安排下一个任务,然后休眠到该时间。现在,我不得不在后台运行一个无声轨道以进行后台处理,但我希望能够让应用程序在那段时间真正休眠——此外,播放真正的音乐或打电话是“方便的功能” "的 iPhone,我不喜欢丢失它们。
我知道还有 GPS,但这会消耗大量电池。其他后台模式似乎并没有完全控制后台处理和时间给应用程序,而是将大部分时间和执行持续时间留给操作系统。
我需要的是能够让我的应用程序一次在后台处理几分钟,然后休眠直到相当特定的时间间隔并继续处理。是否可以使用比我目前使用的更好的方法?
我已经看到 VOIP 曾经是一种可能性,但我不确定它是否会起作用,因为我不需要应用程序在后台运行一个简单的任务,而是继续正在运行的任何东西在应用程序被推送到后台之前在前台。此外,个别任务可能需要 1 小时以上才能完成,因此当后台任务到期时,它们将无法转移。我所有的假设都是基于 this thread .
最佳答案
编辑:使用此方法的流失率似乎很糟糕。随机地,递归似乎会无缘无故地失败(可能是系统执行超时?)。如果我在结束后台任务之前放置递归,操作系统会杀死我的应用程序,但如果我把它放在之后,它偶尔似乎会在某个时候停止后台任务。我也看到它在我的“分配的背景时间”中间停止了。
简而言之,下面的方法似乎可以无限期地运行,但并非无限期。有没有办法保证运行时间是无限的或其他解决方案?
使用 VOIP 似乎比我最初想象的要容易得多。
要无限期地运行我的应用程序(不幸的是,休眠不是一个选项)所需要做的就是将 voip 添加到选定的后台模式,可以在 plist 中,也可以在 Target 的功能中。之后,在永远不会释放的对象中添加并运行此代码一次(您的 AppDelegate 在这里工作得很好),将允许无限的后台处理时间:
- (void)infiniteBackgroundLoop
{
__block UIApplication *applicationBlockReference = [UIApplication sharedApplication];
__block AppDelegate *appDelegateBlockReference = self;
__block UIBackgroundTaskIdentifier backgroundTask = [applicationBlockReference beginBackgroundTaskWithExpirationHandler:^
{
[applicationBlockReference endBackgroundTask:backgroundTask];
backgroundTask = UIBackgroundTaskInvalid;
[appDelegateBlockReference infiniteBackgroundLoop];
}];
}
为了允许无限期休眠,给递归添加一个中断。
关于iOS 7 背景模式 - 不适用于 App Store(无规则适用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642621/
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最