Ios 从“今日”窗口小部件按钮在应用程序控制器上执行功能

Ios 从“今日”窗口小部件按钮在应用程序控制器上执行功能,ios,iphone,swift,ios8-today-widget,today-extension,Ios,Iphone,Swift,Ios8 Today Widget,Today Extension,我需要在不打开任何视图控制器(在后台)的情况下执行一个功能(基本上开始更新位置和距离驱动) 我需要小部件像我的应用程序中按钮的“遥控器”一样工作 然后,当我打开应用程序时,进程应该正在运行并显示相应的视图控制器您无法直接与应用程序的进程通信。如果您不想立即启动应用程序,您可以通过共享容器向其传递一些数据: let sharedUserDefaults = NSUserDefaults(suiteName: "group.com.mycompany.myapp")! sharedUserDefau

我需要在不打开任何视图控制器(在后台)的情况下执行一个功能(基本上开始更新位置和距离驱动)

我需要小部件像我的应用程序中按钮的“遥控器”一样工作


然后,当我打开应用程序时,进程应该正在运行并显示相应的视图控制器

您无法直接与应用程序的进程通信。如果您不想立即启动应用程序,您可以通过共享容器向其传递一些数据:

let sharedUserDefaults = NSUserDefaults(suiteName: "group.com.mycompany.myapp")!
sharedUserDefaults.setBool(true, forKey: "tracking location")
sharedUserDefaults.synchronize()
然后,在应用程序的
应用程序IDBECOMEACTIVE:
中,您可以读出该值:

let sharedUserDefaults = NSUserDefaults(suiteName: "group.com.mycompany.myapp")!
if sharedUserDefaults.boolForKey("tracking location") {
    startTrackingLocation()
}
sharedUserDefaults.removeObjectForKey("tracking location")
sharedUserDefaults.synchronize()

您的today widget controller也可以是
CLLocationManagerDelegate
,在widget可见时跟踪用户的位置。

您无法直接与应用程序的进程通信。如果您不想立即启动应用程序,您可以通过共享容器向其传递一些数据:

let sharedUserDefaults = NSUserDefaults(suiteName: "group.com.mycompany.myapp")!
sharedUserDefaults.setBool(true, forKey: "tracking location")
sharedUserDefaults.synchronize()
然后,在应用程序的
应用程序IDBECOMEACTIVE:
中,您可以读出该值:

let sharedUserDefaults = NSUserDefaults(suiteName: "group.com.mycompany.myapp")!
if sharedUserDefaults.boolForKey("tracking location") {
    startTrackingLocation()
}
sharedUserDefaults.removeObjectForKey("tracking location")
sharedUserDefaults.synchronize()

您的today widget controller也可以是
CLLocationManagerDelegate
,并在widget可见时跟踪用户的位置。

这就是问题所在,widget将仅可见几秒钟,只需点击“播放”,它需要大量时间捕捉数据。。。然后,当用户完成该过程时,他可以查看应用程序上的所有数据。在不向用户显示的情况下运行应用程序是不可能的吗?这就是问题所在,小部件只会在几秒钟内可见,只需点击“播放”,它需要捕获大量数据。。。然后,当用户完成该过程时,他可以查看应用程序上的所有数据。不向用户显示应用程序就无法运行应用程序?