【问题标题】:Execute function on app controller from today widget button从今天的小部件按钮在应用控制器上执行功能
【发布时间】:2015-08-14 15:30:02
【问题描述】:

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

我需要小部件在我的应用程序中像“远程控制”按钮一样工作。

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

【问题讨论】:

    标签: ios iphone swift ios8-today-widget today-extension


    【解决方案1】:

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

    let sharedUserDefaults = NSUserDefaults(suiteName: "group.com.mycompany.myapp")!
    sharedUserDefaults.setBool(true, forKey: "tracking location")
    sharedUserDefaults.synchronize()
    

    然后在您应用的applicationDidBecomeActive: 中,您可以读出该值:

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

    您今天的小部件控制器也可以是CLLocationManagerDelegate,并在小部件可见时跟踪用户的位置。

    【讨论】:

    • 这就是问题所在,小部件将只显示几秒钟,只是为了点击“播放”,它需要大量时间来捕获数据......然后,当用户完成在这个过程中,他可以查看应用程序上的所有数据。不向用户展示就无法运行应用程序吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    相关资源
    最近更新 更多