【问题标题】:Why is my iOS app suspended instantly when in background为什么我的 iOS 应用程序在后台时会立即挂起
【发布时间】:2015-02-26 12:31:59
【问题描述】:

我编写了一个 iOS 应用程序,它每秒通过 post 向 Web 服务发送数据。

我希望让这个应用程序无限期地在后台运行,但在此之前我意识到当我点击主页按钮时我的应用程序会立即暂停。

根据我对 iOS 的研究(我对此很陌生),我了解到所有应用程序都至少有几分钟的时间在后台运行。我的应用程序已经在后台模式中检查了location and updates(即使尚未实现)。

我的问题是,当我点击主页按钮时,应用程序立即暂停是否正常?如果可能的话,我该如何阻止它?

【问题讨论】:

    标签: ios iphone background


    【解决方案1】:

    您只能在后台运行应用程序,它属于可用的后台模式之一。就像您发布的那样,您已经拥有location and updates 模式。您必须跟踪用户位置才能使您的应用程序不被暂停,这与节省电池电量有关。

    如果您在应用程序中误用了后台模式,Apple 将拒绝它。因此,如果您使用后台模式 location and updates 并且您的应用程序没有执行任何操作,则位置更新将被拒绝。

    您真的应该问自己是否有必要让您的应用程序保持运行。例如,如果您只想完成一些数据的上传,请使用Executing Finite-Length Tasks

    用户体验是 iOS 最重要的功能之一,因此您不应该让您的应用在不必要或可以做得更高效时耗尽电池电量。

    【讨论】:

    • 感谢您的回答。我现在已将此代码添加到我的应用程序的计时器中:CLLocation *locationManager = [[CLLCLLocationManager alloc] init] ; [locationManager startUpdatingLocation] ; 但我的应用程序仍然会立即暂停。有任何想法吗? (另外,我不打算将其发送到应用商店)
    • 那不行,您还需要开始跟踪位置更新:startUpdatingLocationstartMonitoringSignificantLocationChanges 。使用后一种可以节省电池电量。
    • startUpdatingLocation 不是我在第一条评论中提到和使用的那个吗?此外,电池消耗对我来说不是问题。谢谢。
    • 您设置了代理吗?您是否要求用户访问他们的位置?您是否在 info.plist 中设置了NSLocationAlwaysUsageDescription?这不会那么容易;)
    • 不,对不起,我不知道该怎么做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多