如何使用推送通知启动GPS跟踪

时间:2015-07-17 11:54:00

标签: ios cocoa ios8 gps core-location

我在早上8点发送推送通知,以便在后台运行的应用程序中启动GPS。推送通知接收,但GPS未开始跟踪。我怎样才能实现这一目标?我正在使用以下代码。

func application(application: UIApplication,
    didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
    fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

    NSLog("userInfoComp %@",userInfo);

    var app = UIApplication.sharedApplication()    
    var  bgTask2 : UIBackgroundTaskIdentifier?

    bgTask2  = app.beginBackgroundTaskWithExpirationHandler { () -> Void in
        app.endBackgroundTask(bgTask2!)
        bgTask2 = UIBackgroundTaskInvalid
    }
    if bgTask2 == UIBackgroundTaskInvalid {
        return
    }

    PSLocationManager.sharedLocationManager().prepLocationUpdates()
    PSLocationManager.sharedLocationManager().startLocationUpdates()
}

1 个答案:

答案 0 :(得分:0)

当您的应用处于后台模式时,您无法启动位置服务。当您的应用在用户允许的情况下处于活动状态时(即使用户未使用该应用程序来跟踪他),您需要使用startMonitoringSignificantLocationChanges来在后台模式下获取位置更新。

如果用户不静止,即使用户每隔5分钟终止应用,您也会获得位置更新。

如果您的应用程序在后台,您可以使用startLocationUpdates获取位置更新,但即使3-4个应用程序在后台操作系统可能会停止更新位置,它也不可靠。