【问题标题】:iPhone How to prevent my app from entering background when lock screen?iPhone锁屏时如何防止我的应用程序进入后台?
【发布时间】:2012-01-28 09:46:59
【问题描述】:

当在应用程序中按下锁定按钮时,系统会调用:

-(void) applicationWillResignActive:(UIApplication *)application and
-(void) applicationDidEnterBackground:(UIApplication *)application

那么我怎样才能让我的应用程序只resignActive而不进入后台,并且我可以在屏幕锁定时运行我的计时器(计时器不能在后台模式下执行)。

一种方法是将 .plist 中的“应用程序不在后台运行”属性设置为“是”,它可以工作,但我的应用程序永远无法再次进入后台,但是我希望它在按下主页按钮时进入后台。

更新:我想在某个时间在我的应用中播放一些音乐,就像音乐闹钟一样,我仍然希望它在屏幕锁定时正常工作,因为保持屏幕打开可能浪费了很多电池,当用户按下主页按钮并退出我的应用程序时,我不需要做任何事情。

【问题讨论】:

  • 您可以查看一个教程,该教程讲述了如何防止应用进入后台-blog.marcopeluso.com/2009/08/23/…
  • 谢谢,不过我认为这种方式只能让系统不进入深度睡眠,但不能阻止我的应用进入后台。
  • 锁定设备时应用程序从什么时候进入后台?我只有在用户点击主页按钮或切换应用程序时才会触发它。

标签: iphone background


【解决方案1】:

打开您的 Info.plist 文件并添加应用程序不在后台运行。将值设置为 YES。

【讨论】:

    【解决方案2】:

    应用程序必须具有特权才能在后台进行任何处理,例如音频服务/Voip 服务/定位服务。

    “我可以在屏幕锁定时运行我的计时器(计时器无法在后台模式下执行)” 你不能在后台运行一个计时器,它会在不使用任何发条的情况下继续运行......苹果不会在应用商店接受你的应用程序 - 如果你的目标是应用商店,那是最糟糕的一面......

    【讨论】:

    • 其实我不想在后台做任何事情,我想知道当我的应用程序关闭屏幕时,我的应用程序是否可以保持在前台。
    【解决方案3】:

    您无法阻止您的应用进入后台。这是由操作系统 (iOS) 决定的,不受应用程序的控制。但是,通过阅读您更新的问题,我认为这不是您需要做的。

    您可以使用[UIApplication beginBackgroundTaskWithExpirationHandler;] 执行后台任务(请参阅reference)。如果您想在某个时间间隔后发生一些事情,请查看[UIApplication scheduleLocalNotification:]

    允许在后台运行某些服务,例如 VOIP、Audio 和 CoreLocation。将这些用于非预期目的(例如,播放无声音频)可能会导致您的应用被拒绝。

    请注意,您无法阻止应用程序进入后台。只是允许某些任务在后台执行。因此,您无法进行 GUI 操作,并且 NSTimers 可能不会触发(至少我知道某些情况下它们不会触发)。

    这有助于了解您想在后台运行什么以便提出解决方案。

    【讨论】:

    • 我真的不希望我的应用进入后台,但是正如你所说,我可以认为在我的应用中按下锁定按钮就像按下主页按钮一样,我的应用应该进入后台。
    【解决方案4】:

    除非您在移至后台之前播放音频,否则当应用移至后台或屏幕被锁定(有一些奇怪的细节)时,您无法开始音频播放,这足以说明,就好像您在后台一样没有实际收到 applicationDidEnterBackground 通知。

    您可以做的最好的事情是安排本地通知,但在这种情况下,您的音乐被限制为 30 秒,并且必须是您的应用程序包的一部分。

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多