应用程序中的后台模式使用

Posted

技术标签:

【中文标题】应用程序中的后台模式使用【英文标题】:Background modes usage in apps 【发布时间】:2016-01-14 06:51:13 【问题描述】:

我正在开发一个 ios 应用程序,它每分钟将数据更新到服务器。即使应用程序进入后台,我也想进行此数据更新。我在“功能”中启用了“背景模式”,没有检查任何背景选项。也使用了下面的代码

UIApplication*    app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^
        NSLog(@"beginBackgroundTaskWithExpirationHandler");
        //[app endBackgroundTask:bgTask];
        //bgTask = UIBackgroundTaskInvalid;
    ];

Imp:我评论了[app endBackgroundTask:bgTask]bgTask = UIBackgroundTaskInvalid

现在我的应用在后台运行良好。

我的问题是,是否有机会因此从 App Store 拒绝我的应用?

【问题讨论】:

你认为有必要为这个问题创建background-mode 标签吗?我们已经有了其他标签。如果您想证明标签的存在,请创建有效的 wiki 并为其摘录? 【参考方案1】:

当您使用此后台任务时,它只运行几分钟。 (在未通过 Xcode 连接的设备上进行测试。如果您在模拟器上进行测试,您可能会陷入一种应用程序继续在后台运行的感觉,而在现实世界中则不会。)

Apple 仅允许对非常有限的应用程序集(导航、音乐、VOIP 等)进行持续的后台操作。对于后台网络请求,有后台NSURLSession 会话(用于进行长时间运行的下载/上传,而不是重复发起新请求)。它还具有后台获取功能,用于根据操作系统的判断机会性地发起请求,而不是按照任何预定的时间表,当然也不是每分钟。

归根结底,Apple 不会允许应用程序以某种方式规避这些狭义的场景。此外,如果您不断发起新请求,您可能会耗尽用户的电池并耗尽他们的手机数据计划。

【讨论】:

以上是关于应用程序中的后台模式使用的主要内容,如果未能解决你的问题,请参考以下文章

iOS蓝牙后台模式

iPhone中的XMPP后台连接

WPF中的MVVM模式简单实现

使用 cordova-plugin-background-mode 在后台模式下进行位置检测和 HTTP 调用

在后台使用 iBeacon 或 CoreBluetooth 识别 iOS 设备

苹果拒绝了该应用,称该应用使用后台模式