【问题标题】:Swift 4 continous background task not workingSwift 4 连续后台任务不起作用
【发布时间】:2017-10-12 18:30:27
【问题描述】:

我尝试使用 NSTimer 来安排及时的后台任务。但是,它在某个时候停止工作(不知道问题出在哪里),并且当用户试图故意杀死应用程序时它也会停止。

无论我的应用处于前台还是后台,我都需要在每 1 分钟后调用一次 API。类似于原生 iOS 闹钟应用(类似于创建重复闹钟)。

请提供任何帮助。提前致谢。

附:我是快速发展的新手。

【问题讨论】:

    标签: ios background nstimer swift4 repeatingalarm


    【解决方案1】:

    简短的回答是“你不能那样做”。 Apple 不允许第 3 方应用在后台连续运行,但有一些非常具体的例外情况(例如导航应用和流媒体音乐应用。)

    为了测试,您可以将您的应用设置为导航应用,并允许它在后台连续运行,但当您尝试将其提交到应用商店时会被拒绝。

    【讨论】:

    • 感谢您的建议。但是,目前该应用程序建议供个人客户使用。因此,它不会受到 Apple 应用程序商店的审查。如果您能提供我的代码 sn-p 或步骤以使我的应用程序用作导航应用程序,那就太好了。
    • 您需要弄清楚如何分发应用程序。如果您使用开发人员凭据构建它,它将在短暂的一段时间后过期(如果有记忆,则为 90 天。)您也许可以使用企业开发人员许可证分发它,但这适用于开发供员工使用的应用程序的公司。
    • 您可以使用企业许可证并将设备视为您公司的财产,并使用 MDM(移动设备管理工具)设置应用程序。
    • 要在后台获取位置更新,请查看此链接:code.tutsplus.com/tutorials/…
    【解决方案2】:

    您有两个选择: - 创建一个重复的本地通知,每分钟触发一次。

    func repeatNotification() {
        let content = UNMutableNotificationContent()
        content.title = "It's Time!!"
        content.body = "This is a body"
        content.categoryIdentifier = "my.reminder.category"
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60.0, repeats: true)
    
        let request = UNNotificationRequest(identifier: "my.reminder", content: content, trigger: trigger)
    
        UNUserNotificationCenter.current().add(request) { (error) in
            if let error = error {
                print("error in allowing notifications: \(error.localizedDescription)")
            }
        }
        print("added notification:\(request.identifier)")
    }
    

    当通知被触发时,您将在 AppDelegate userNotificationCenter:willPresentNotification:withCompletionHandler:

    中获得回调

    您的第二个选择是注册为后台定位应用。基本上,即使不使用您的应用程序,您也会一直要求您的用户允许定位。这将允许您无限期地在后台运行,但它的代价是会超快地耗尽电池电量。

    如果选择此选项,您需要设置location manager 并在出现提示时要求您的用户始终允许定位。 他们将在 locationManager(_:didUpdateLocations:) 中每隔 X 间隔获得一次位置更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多