标签: watchos-2

在 watchOS 2 中关闭屏幕时无法获取加速度计和心率数据

我正在使用 CMMotionManager 和 HKWorkoutSession 开发 Apple Watch 应用程序以获取加速度计和心率数据。该应用程序在短时间内(70 秒)运行良好,但当屏幕关闭时,心率和加速度计数据都会停止。

我的问题是如何从加速度计和心率传感器获得 5 分钟的数据?

accelerometer healthkit apple-watch watchkit watchos-2

4
推荐指数
1
解决办法
1271
查看次数

如何连接和调试自定义ClockKit并发症控制器?

我正在尝试定制ClockKit Complication工作.

  1. 我创建了一个符合的自定义ComplicationControllerCLKComplicationDataSource.它被添加到Watch Extension的plist中CLKComplicationPrincipalClass.

我可以在手表上选择一个复杂功能并激活它,但我只看到"---------------"而不是我的实际占位符.

我尝试了什么

  • override init(){…}在我的ComplicationController中添加了自定义,并在其中添加了一个断点用于调试.但即使运行Complication 构建方案,也永远不会达到这个断点.似乎我的自定义ComplicationController从未实例化.

  • 我确实看到了一条日志消息,Extension received request to wake up for complication support.但我不清楚这是在代码中触发的位置.

  • 我也试着从我的主人InterfaceController那里打电话给我,以了解我的主动并发症

    if let server = CLKComplicationServer.sharedInstance() {
        for complication in server.activeComplications {
            server.reloadTimelineForComplication(complication)
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    ......但是server返回零.没有并发症似乎是活跃的并且重新加载.

  • 如何成功连接我的自定义ComplicationController?

    此外,欢迎任何其他调试技巧.

    通常是否足以从手表模拟器或iPhone上的手表应用程序中删除并发症,或者您是否需要重新安装整个手表应用程序以查看有效的并发症相关更新?此外,当我在我的自定义ComplicationController中记录某些内容时,我应该只在使用Complications构建方案运行时或者使用正常的Watch App构建方案时才能看到它的输出吗?

欢迎任何寻找问题的想法.

ios swift clockkit watchos-2 apple-watch-complication

4
推荐指数
1
解决办法
686
查看次数

如何在后台刷新的复杂功能上显示HealthKit数据?

我正在尝试构建一个watchOS 2复杂功能,它显示用户的健康数据,例如步骤(但理论上它应该能够显示用户已授予应用程序查看权限的任何健康数据).当复杂化首次启动时,我可以查询Healthkit并获取我想要的所有数据,因为第一次启动被认为是在前台.但是,当新的健康数据可用时,我在后台检索HealthKit数据时遇到问题.有两个地方我可以得到这些数据,手表和iPhone.

当从getNextRequestedUpdateDateWithHandler中设置的日期触发复杂的后台刷新时,我试图从手表本身获取数据.但是,当我调用HKHealthStore的execute方法时,如果应用程序(或者在这种情况下是复杂的)运行后台,它不会返回任何查询结果.我还尝试设置一个HKAnchoredObject查询,该查询应该在进程恢复时立即返回我的结果,但除非我在手表上手动启动应用程序扩展,否则这似乎也不会返回任何结果.这是我的监视代码,在请求运行状况工具包权限后从我的ExtensionDelegate的init方法调用:

func setupComplicationDataCache() {
    let now = NSDate()
    var startDate: NSDate? = nil
    var interval: NSTimeInterval = 0

    self.calendar.rangeOfUnit(NSCalendarUnit.Day, startDate: &startDate, interval: &interval, forDate: now)
    let stepSampleType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierStepCount)!

    // Match samples with a start date after the workout start
    let predicate = HKQuery.predicateForSamplesWithStartDate(startDate, endDate: nil, options: .None)
    let query = HKAnchoredObjectQuery(type: stepSampleType, predicate: predicate, anchor: nil, limit: 0) { (query, samples, deletedObjects, anchor, error) -> Void in
        // Handle when the query first returns results …
Run Code Online (Sandbox Code Playgroud)

ios apple-watch clockkit watchos-2 apple-watch-complication

4
推荐指数
1
解决办法
763
查看次数

我应该使用哪种方法向 Apple Watch 发送数据并返回数据?

我有一个与待办事项列表类似的应用程序。用户在 iPhone 上创建他们想要完成的任务,并且每天都会在所需的时间提醒他们完成该任务。但是,我不确定哪种数据传输方法最适合我的应用程序。我希望 Apple Watch 至少能够查看和完成任务。我还希望在任务完成、添加或删除时在 Watch 和 iPhone 上更新数据。

我应该使用:

updateApplicationContexttransferUserInfosendMessage或任何其他方法?

ios swift watchkit watchos-2 watchconnectivity

4
推荐指数
1
解决办法
780
查看次数

在WatchKit中使用firebase

我试图在我的watchKit应用程序中使用firebase数据库.我在我的iPhone应用程序上开发了这个功能,但发现我的Watch应用程序很难做到这一点.当我尝试将firebase导入监视应用程序中的VC类时,它正在创建错误no such module 'firebase'.

是否可以在手表应用程序中使用firebase?

ios firebase swift watchkit watchos-2

4
推荐指数
1
解决办法
1730
查看次数

我们可以在没有鼠标或触控板的情况下在Apple Watch模拟器中旋转数字表冠吗?

在操作(旋转/旋转)Apple Watch 2.0 / 3.x模拟器上的数字表冠时,我可以找到的唯一参考是使用触控板/鼠标垫。强大的鼠标能否在模拟器中旋转/转动数字表冠?

trackpad ios-simulator watchos-2

4
推荐指数
1
解决办法
792
查看次数

在 watchOS 故事板中叠加图像并自定义 x,y 位置

我想复制这个设计模型并在生产中使用它。

iOS 具有用于在 Z 轴上排列的 Z 层次结构,但它在 watchOS 中呈灰色显示。我想创建一个个人资料头像的叠加层,就像这个 Instagram 原型一样,其中只有一半的头像位于主图像上。

当然,我希望将来自服务器的所有个人资料图像放置在小圆形 imagview 中,该 imagview 位于流中照片的顶部。

在此输入图像描述

xcode-storyboard swift watchos-2

4
推荐指数
1
解决办法
579
查看次数

带有Core Data的watchOS 2

使用watchOS 1,我的理解是手表扩展程序放在iOS应用程序中,因此您可以为手表应用程序和iOS应用程序使用共享的Core Data持久存储(这是通过使用应用程序组完成的,并且处理iOS应用和观看应用的数据模型的独立框架.)

然而,对于watchOS 2,手表扩展已经移动到手表本身 - 所以它将有自己的持久存储.所以,据我说,我可以直接使用苹果手表上的核心数据而不使用iOS应用程序,但当我创建一个watchOS 2的项目,没有选项可以在你的手表应用程序中使用核心数据.如果我在ExtensionDelegate中添加这些功能:

lazy var applicationDocumentsDirectory: NSURL = {
    // The directory the application uses to store the Core Data store file. This code uses a directory named "finoit.test" in the application's documents Application Support directory.
    let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
    return urls[urls.count-1]
}()

lazy var managedObjectModel: NSManagedObjectModel = {
    // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be …
Run Code Online (Sandbox Code Playgroud)

core-data ios swift apple-watch watchos-2

3
推荐指数
1
解决办法
2955
查看次数

didReceiveApplicationContext未被调用

我刚刚使用教程/示例代码在我的应用程序中设置了WCConnectivity,我觉得我已经正确实现了它.我没有使用模拟器进行测试.出于某种原因,即使所有内容都已正确设置,也不会在监视应用程序中调用didReceiveApplicationContext.

我尝试在ExtensionDelegate中调用WatchKit应用程序的接口控制器,并使用NSUserDefaults来设置接口控制器数据.

iOS应用程序

ViewController.m

- (void) viewDidLoad{
if ([WCSession isSupported]) {
    WCSession *session = [WCSession defaultSession];
    session.delegate = self;
    [session activateSession];
  }
}

-(void) saveTrip{
NSMutableArray *currentTrips = [NSMutableArray arrayWithArray:[self.sharedDefaults objectForKey:@"UserLocations"]];

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:newLocation];
[currentTrips addObject:data];
[self.sharedDefaults setObject:currentTrips forKey:@"UserLocations"];
[self.sharedDefaults synchronize];

WCSession *session = [WCSession defaultSession];
NSDictionary *applicationDict = [[NSDictionary alloc] initWithObjects:@[currentTrips] forKeys:@[@"UserLocations"]];;
[session updateApplicationContext:applicationDict error:nil];
}
Run Code Online (Sandbox Code Playgroud)

观看分机代码

ExtensionDelegate.m

- (void)applicationDidFinishLaunching {
if ([WCSession isSupported]) {
    WCSession *session = [WCSession defaultSession];
    session.delegate = self;
    [session activateSession];
}
} …
Run Code Online (Sandbox Code Playgroud)

ios watchkit watchos-2 watchconnectivity

3
推荐指数
3
解决办法
2476
查看次数

从我的Watch应用程序中删除并发症

我对于并发症有一些非常好的想法,但意识到我的应用程序中的数据经常变化,并且已经确定并发症不适合.

我之前在创建应用程序时选中了"复杂功能"复选框.

我现在如何消除Watch App中的复杂情况?

xcode watchos-2 apple-watch-complication

3
推荐指数
1
解决办法
907
查看次数