Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 已终止的应用程序只重新启动一次_Ios_Swift_Core Location_Appdelegate - Fatal编程技术网

Ios 已终止的应用程序只重新启动一次

Ios 已终止的应用程序只重新启动一次,ios,swift,core-location,appdelegate,Ios,Swift,Core Location,Appdelegate,我有一个应用程序,根据设计,即使应用程序已经终止,也应该在系统发送位置事件后由操作系统激活。终止可以指由系统或多任务切换器中的用户终止。下面是我的应用程序委派代码,位置委派是应用程序委派类的扩展。应用程序终止后,系统生成的第一个事件已发送到我的应用程序并得到正确处理,但我没有收到任何后续事件。在收到事件后,是否需要运行一些代码来重新注册我的应用程序,以便将来进行更新 var window: UIWindow? var locationManager: CLLocationManager!

我有一个应用程序,根据设计,即使应用程序已经终止,也应该在系统发送位置事件后由操作系统激活。终止可以指由系统或多任务切换器中的用户终止。下面是我的应用程序委派代码,位置委派是应用程序委派类的扩展。应用程序终止后,系统生成的第一个事件已发送到我的应用程序并得到正确处理,但我没有收到任何后续事件。在收到事件后,是否需要运行一些代码来重新注册我的应用程序,以便将来进行更新

var window: UIWindow?
    var locationManager: CLLocationManager!
    var notificationCenter: UNUserNotificationCenter?
    var today:String?     //Today's date format: YYYY-MM-DD


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        if launchOptions?[UIApplicationLaunchOptionsKey.location] != nil {

            self.locationManager = CLLocationManager()
            self.locationManager.delegate = self
            self.locationManager.requestAlwaysAuthorization()
            self.locationManager.startMonitoringVisits()
            self.locationManager.allowsBackgroundLocationUpdates = true
            sendTestNotification()
        } else {
            print("normal launch")

        }

你说你的应用程序已经“终止”。这意味着你故意杀掉你的应用作为一种测试方式。但是如果一个应用程序被强制终止,系统会故意停止后台位置监控,所以你自然不会再收到任何访问监控事件。就好像你自己打电话给了
停止监控访问

据我所知,苹果不允许应用程序终止

exit(0)

您可以使用该代码行终止应用程序

这与您的问题无关,但您的代码是错误的:如果您只想监视访问,您不需要也不应该将
allowsBackgroundLocationUpdates
设置为
true
。这不是我看到的行为。如果我使用多任务窗格强制关闭应用程序,那么应用程序仍然会收到下一个位置更新,但之后不会收到任何更新。我说这是意料之中的。