【发布时间】:2014-12-11 10:22:09
【问题描述】:
我目前正在开发一个 Apple Watch 扩展程序。有人知道当前位置是由 iPhone 还是 Watch 本身提供的? 我找不到有关此的任何信息,我需要画一个指南针指向手表所指的位置。
【问题讨论】:
标签: ios watchkit apple-watch
我目前正在开发一个 Apple Watch 扩展程序。有人知道当前位置是由 iPhone 还是 Watch 本身提供的? 我找不到有关此的任何信息,我需要画一个指南针指向手表所指的位置。
【问题讨论】:
标签: ios watchkit apple-watch
为了做你想做的事,你不需要 CoreLocation,你只需要一个磁力计。
AFAIK Apple Watch 没有内置的。
它拥有的传感器是……
虽然没有磁力计。
【讨论】:
执行任何长时间运行的任务的最佳解决方案是让您的 iOS 应用执行该任务。例如,不要在 WatchKit 扩展中启动定位服务,而是在 iOS 应用中启动它。您的 iOS 应用程序可以收集所需的数据并将其放入共享的应用程序组中,以便您的扩展程序以后可以访问它。使用 openParentApplication:reply: 方法来启动任务并接收回复或使用共享组容器在您的 iOS 应用程序和 WatchKit 扩展之间传达详细信息。有关如何处理您的 iOS 应用和 WatchKit 扩展之间的通信的信息,请参阅与您的包含的 iOS 应用直接通信。
附:我正在开发类似的应用程序。
【讨论】:
您不能从 watchkit 扩展中使用 CoreLocation。但是,您可以使用 api 打开父应用程序(在后台)并询问您的父 api 信息。这个api真的很好,因为你可以用它来回复,这样你就可以很容易地得到信息:
+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo, NSError *error)) reply; // launches containing iOS application on the phone
【讨论】:
openParentApplication: 很难使用您描述的方式,因为响应需要是同步的,但 CoreLocation 是一个异步 API。
openParentApplication:reply: 是异步的——您的应用可以随时调用回调。