【问题标题】:WatchKit: Getting the current Location with openParentApplication:reply:WatchKit:使用 openParentApplication 获取当前位置:回复:
【发布时间】:2015-04-07 14:39:06
【问题描述】:

打开Apple Watch App后,我用openParentApplication:reply:唤醒iPhone-App以获取当前位置。正如 Apple 所说的 here,您应该避免在 WatchKit 扩展中使用 Core Location。

但是如果我询问我的父应用程序,我必须在我的info.plist 中设置Required background modes 以获取位置更新,并要求用户提供requestAlwaysAuthorization

这真的有必要吗?当我将应用程序上传到 App Store 时,这会导致问题吗?当后台模式被激活时,他们会更深入地观察。

非常感谢您的回答。

【问题讨论】:

    标签: ios core-location watchkit


    【解决方案1】:

    是的,您必须拥有requestAlwaysAuthorization 才能在任何后台上下文中进行位置更新,并且 openParentApplication 是后台上下文,您的 WatchKit 扩展也是如此。当您请求核心位置的后台模式时,您必须说明为什么要在后台获取核心位置。您可以尝试说原因是 Apple Watch(当然措辞更好)。此外,Apple 表示您应该避免在 WatchKit 扩展中使用 Core Location,但他们并没有直接说您不能这样做(尽管我们必须等到更多应用程序被批准才能确定)。他们给出避免核心位置的原因是用户无法在手表应用程序中授权核心位置。在我自己的应用程序中,我在 WatchKit 扩展中使用核心位置。如果用户执行需要核心位置的操作,我首先检查它是否被授权。如果未经授权,我不会启动核心位置,而是向用户显示一条消息,告诉他们如何在我的 iOS 应用程序中授权核心位置。

    【讨论】:

    • 补充斯蒂芬的回答,如果你只使用 WatchKit 扩展中的核心位置,你可以请求requestWhenInUseAuthorization,因为扩展被认为是前台执行。
    • 感谢迈克的澄清。你知道这是否在某个时候发生了变化,当我将核心位置添加到我的 WatchKit 扩展时,它只适用于requestAlwaysAuthorization,但我也很早就在我的扩展中添加了核心位置,无论如何我的 iOS 应用程序都需要requestAlwaysAuthorization所以我没有在以后的 beta 中尝试requestWhenInUseAuthorization
    • 我想我在 beta 3 或 4 左右注意到了它,所以它可能在那时发生了变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2015-11-15
    • 1970-01-01
    相关资源
    最近更新 更多