Tag: watchkit

iOS WatchKit – 将关键值观察者添加到NSUserDefaults崩溃

我正在尝试添加将数据从iPhone发送到Watch的function。 我已经设置了应用程序组,并且一切运行顺利,但是当我尝试在Watch扩展文件中添加观察者到NSUserDefaults时,应用程序在启动时总是崩溃。 (是的,我已经validation了应用程序组名称是正确的,并在所有目标function中进行了检查,并且所有预configurationconfiguration文件都是最新的,并启用了应用程序组) 码: override func willActivate() { super.willActivate() NSUserDefaults(suiteName: "my.suite.name")?.addObserver(self, forKeyPath: "phoneSaysHello", options: NSKeyValueObservingOptions.New, context: nil) } override func didDeactivate() { super.didDeactivate() // Remove listener for commands sent from phone NSUserDefaults(suiteName: "my.suite.name")?.removeObserver(self, forKeyPath: "phoneSaysHello", context: nil) } 错误: ***由于未捕获exception“NSInternalInconsistencyException”,原因:终止应用程序NSUserDefaults类的一个实例0x7f99534559b0被释放,而键值观察员仍然注册。 当前观察信息:(上下文:0x0,属性:0x7f9953609200>)'

来自Apple Watch的openSystem API电话?

当我观看WWDC 2015会议video“WatchOS 2 for watchOS 2” (13:29)时,我发现可以用openSystem API直接在Apple Watch上拨打电话。 我如何在Swift中使用这个API?

从WatchKit调用MKMapSnapshotter completionHandler在父应用程序中从不调用

我有这个奇怪的问题:我打电话给父应用程序openParentApplication:reply:正常。 使用asynchronousNSURLRequests从网上获取一些数据是非常NSURLRequests但是当我想使用MKMapSnapshotter (仍然在父应用程序中)获取地图图像时,它的完成块永远不会被调用。 MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options]; [snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) { NSLog(@"completion handler is called"); //this never called }; 我试着用: snapshotter startWithQueue:调用snapshotter startWithQueue:在dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)或dispatch_get_main_queue()等,但似乎没有任何工作。 如果我直接从WKInterfaceController或从父应用程序调用相同的代码,它工作得很好。

实现核心数据watchOS 2.0

我是WatchKit的新手,我试图将Core Data添加到我的WatchKit扩展中。 到目前为止,我已经在WatchKit扩展中创build了一个Data Model,但是我坚持实现Core Data的其余部分。 是创build核心数据模型和初始化与iOS相同的核心数据堆栈的过程,还是我应该注意到的任何差异? 另外,我是否在ExtensionDelgate.swift初始化核心数据堆栈,还是应该在其他地方初始化它?

实时读取Apple Watch syslog(NSLog())

我正在寻找一种实时读取手表系统日志的方法,类似于Device Console或者它为iPhone所做的。 如果手机在阅读的时候被usb插到电脑上,那也没关系。 在这一点上,我甚至会解决一个解决scheme,以某种方式从Xcodedebugging控制台实时读取文本,真的(尽pipe我会更喜欢以标准方式挂钩到手表的系统日志:)。 谢谢!

使用Swift 3和Realm同步Apple Watch和iPhone

我需要从苹果手表和iPhone显示和修改我的数据结构。 数据库: 我目前正在使用一个简单的领域结构,我有一个对象A和一个对象B可以容纳大量的A。 所以在iPhone上,用户可以创build一个B并添加A,然后查看所有的A和B。 我想让苹果手表显示当前B的所有A,并给予用户在当前B上添加新A的机会。 我试图这样做的方式: 我想从iPhone移动洞Realm文件到手表或其他方式。 (这是来自互联网的一个提示) iPhone代码: override func viewDidLoad() { super.viewDidLoad() if WCSession.isSupported() { //makes sure it's not an iPad or iPod let watchSession = WCSession.default() watchSession.delegate = self watchSession.activate() transferRealmFile() if watchSession.isWatchAppInstalled { do { try watchSession.updateApplicationContext(["foo": "bar"]) } catch let error as NSError { print(error.description) } } } } func […]

userInfoTransfer,有效载荷太大

我试图从一个watchOS应用程序发送一些公平的数据到iOS应用程序。 数据由手表上生成的内容组成。 这些数据存储在手表上的核心数据中。 所以我实际上并没有传输文件,在这种情况下,我会使用transferFile 。 在这种情况下,我试图使用transferFile ,但是需要一个文件的URL。 由于我实际上没有传输文件,所以我不知道该怎么做。 据此: WCSession – PayloadTooLarge 我目前仅限于65.5kb。 我的平均传输需求是从0到兆字节。 大多数可能在0 – 400kb之间。 我怎样才能传输这些数据? 我想我可以分解它? 不过这样做会有些诡异,因为在使用之前,我还需要iOS应用程序中的代码才能将其重新拼接在一起。 这是我对transferUserInfo调用: func sendDictionary(dict: [String: Any]) { WCSession.default().transferUserInfo(dict) } dict是来自核心数据查询的字典对象。 谢谢。

将iPhone上的UIImage传递给Apple Watch会导致手表无响应

我的手表需要从包含的应用程序请求图像。 在手表的控制器中,我有: – (void)getOrgLogo { NSString *host = mfaInfo[@"host"]; NSDictionary *getOrgLogoRequest = @{@"request":@"getOrgLogo", @"host":host}; [MyInterfaceController openParentApplication:getOrgLogoRequest reply:^(NSDictionary *replyInfo, NSError *error) { if (error) { … } else if (replyInfo == nil) { // I am always getting into this block!!! } else { UIImage *orgLogo = replyInfo[@"orgLogo"]; if (orgLogo != nil) { [self.orgLogoImageView setImage:orgLogo]; } […]

了解handleWatchKitExtensionRequest

我正在testingiPhone应用程序的一些代码的执行。 我遵循苹果build议的文档(不使用后台任务,只是一个控制台日志 )。 但是,我没有得到任何东西(我想看到string“你好”)。 这是因为我在模拟器上运行WatchKit扩展应用程序 ? 还是有什么我失踪? 苹果说: 如果您使用的是openParentApplication:reply:,请确保您在input应用程序后立即创build后台任务:handleWatchKitExtensionRequest:reply :. 这将确保iPhone应用程序在后台获取时间,而不是再次被挂起。 此外,将调用包装为endBackgroundTask:在dispatch_after中保持2秒,以确保iPhone应用程序有时间再次发送答复,然后再次被暂停。 我在WatchKit扩展(链接到button的操作方法)上的实现: – (IBAction)sendMessageToApp{ NSString *requestString = [NSString stringWithFormat:@"executeMethodA"]; // This string is arbitrary, just must match here and at the iPhone side of the implementation. NSDictionary *applicationData = [[NSDictionary alloc] initWithObjects:@[requestString] forKeys:@[@"theRequestString"]]; [WKInterfaceController openParentApplication:applicationData reply:^(NSDictionary *replyInfo, NSError *error) { NSLog(@"\nReply info: %@\nError: %@",replyInfo, […]

WatchKit Image Animation等待完成

我目前正在寻找一种方法来等待完成我的图像animation,然后在完成后开始下一个。 我想用一个完成处理程序,但它“不适合我”是否有办法在这种情况下使用它? if X > 1 { self.GroupIMG.setBackgroundImageNamed("single") self.GroupIMG.startAnimatingWithImagesInRange(NSRange(location: 0, length: 300), duration: Repeater, repeatCount: self.X) } //this should start after the if is done self.GroupIMG.setBackgroundImageNamed("single") self.GroupIMG.startAnimatingWithImagesInRange(NSRange(location: 0, length: leftX), duration: Repeater, repeatCount: 1)