天道酬勤,学无止境

watchos-2

When to call activateSession() on WCSession object

I wonder at what point one would call activateSession() on a WCSession object on the watch and on the iOS device. In the documentation it says: Always assign a delegate and activate your session before calling any session-related methods. The session must be configured and activated before sending messages or obtaining information about the state of the connection. At first thought I put my code to initialise the session: if (WCSession.isSupported()) { session = WCSession.defaultSession() session.delegate = self session.activateSession() } in viewDidLoad on the iOS device and in willActivate

2022-01-17 09:43:05    分类:问答    swift   lifecycle   watchos-2   wcsession

关闭/停用 WCSession(Close/Deactivate WCSession)

问题 我正在开发一个带有手表扩展(watchOS 2)的 iPhone 应用程序(iOS 9 beta),并将数据从手表传递到手机,我正在使用 WCSession。 我有 2 个使用 WCSessions 的不同视图控制器,因此对于每个控制器,我都在实例化新的 WCSession 对象。 对于第一个视图控制器,它工作正常,但是当我想在第二个视图控制器中接收消息时,仍然很少有初始消息被发送到第一个控制器。 有什么方法可以在转到第二个控制器之前停用/禁用第一个视图控制器的会话? 或者我还有其他选择吗? 谢谢! 回答1 当您来回传递数据时,您正在发送字典。 如果您指定好的键,您可以获得每个 ViewController 的适当数据。 例子: 视图控制器1: [session updateApplicationContext:@{@"viewController1": @"item1"} error:&error]; 视图控制器2: [session updateApplicationContext:@{@"viewController2": @"item2"} error:&error]; 当您接收数据时: - (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull

2022-01-16 15:18:48    分类:技术分享    ios   session   apple-watch   watchos-2

Close/Deactivate WCSession

I am developing an iPhone app (iOS 9 beta) with watch extension (watchOS 2), and to pass the data from watch to phone I am using WCSession. I have 2 different view controllers using WCSessions, so for each of the controller I am instantiating new WCSession object. For the first view controller it works fine, but when I want to receive messages in second view controller, few initial messages are still being sent to first controller. Is there any way I can deactivate / disable session of first view controller before going to second controller? Or are there any other options I should look into

2022-01-16 08:09:37    分类:问答    ios   session   apple-watch   watchos-2

secTaskDiagnoseEntitlements 缺少钥匙串权利:未找到存储的 taskRef(secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found)

问题 在具有WatchKit应用程序扩展的两个应用程序中,我在启动时在设备日志中收到以下error超过十次。 secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found Apple Developer forums的人们也报道了这一点。 线程在这里... https://forums.developer.apple.com/thread/20193 但是,没有人找到任何解决方案。 有人有想法么? 该应用程序确实启动并运行良好,但我担心这些消息/错误可能会减慢启动速度和/或表明我没有正确配置项目。

2022-01-15 00:25:36    分类:技术分享    ios   xcode   swift   watchos-2

使用 updateApplicationContext 发送钥匙串值是否安全(Is it safe to use updateApplicationContext to send keychain value)

问题 在 watchOS 2 中,不再有共享钥匙串。 如果我想将钥匙串值从 iOS 应用程序发送到 Watch 应用程序,通过 WCSession updateApplicationContext 发送它是否安全? 回答1 是的。 如果您的钥匙串值没有改变,并且您反复更新您的应用程序上下文,您可能希望安排只发送一次值(以便手表添加到其钥匙串中),而不是反复重新发送钥匙串值。 一位 Apple 工程师在开发者论坛上讨论使用 Watch Connectivity 发送钥匙串项目: 如果您想在手表上访问手机上的数据,您的应用可以使用 WatchConnectivity 传输所需的特定数据和钥匙串项目。 Apple Watch 上的钥匙串包含与配对 iPhone 上的钥匙串不同的一组条目,因此如果您在两个地方都需要某些东西,您可以为每台设备生成一次,或者使用 WatchConnectivity 在它们之间传输。 更新: 在 watchOS 2 中,Watch Connectivity 是在配对手机和手表之间传输数据的机制。 根据 iOS 安全指南,设备之间的通信是加密的。 至于字典是否可以在内存中访问,或者在您的扩展程序收到它之前它如何被持久化,我认为您必须依靠 Apple 来解决任何可能的漏洞。 可以合理地说,信息不像钥匙串那样安全,直到您的扩展程序唤醒,接收更新,然后将值存储在钥匙串中

2022-01-15 00:25:23    分类:技术分享    ios   watchkit   watchos-2   watchconnectivity

Is it safe to use updateApplicationContext to send keychain value

In watchOS 2, there are no more shared keychains. If I want to send a keychain value from the iOS app to the Watch app, is it safe to send it via WCSession updateApplicationContext?

2022-01-15 00:07:44    分类:问答    ios   watchkit   watchos-2   watchconnectivity

secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found

In two applications which have WatchKit app extensions, I receive the following error in the device log more than ten times on startup. secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found Folks over at the Apple Developer forums have also reported this. Thread here... https://forums.developer.apple.com/thread/20193 But, no one has found any solution. Anyone have any ideas? The app does start and run fine, but I'm concerned that these messages / errors might be slowing launch and / or indicating I con't have the project configured correctly.

2022-01-14 23:34:06    分类:问答    ios   xcode   swift   watchos-2

在 watchOS 2.0 中实现核心数据(Implementing Core Data to watchOS 2.0)

问题 我对 WatchKit 很陌生,我正在尝试将核心数据添加到我的 WatchKit 扩展中。 到目前为止,我已经在我的 WatchKit 扩展中创建了一个数据模型,但我一直坚持实现核心数据堆栈的其余部分。 创建 Core Data 模型和初始化 Core Data 堆栈的过程是否与 iOS 相同,或者我应该注意哪些差异? 另外,我是在ExtensionDelgate.swift中初始化核心数据堆栈还是应该在其他地方初始化它? 回答1 设置 watchOS Core Data 堆栈的过程与 iOS 相同。 事实上,您可以在 iOS 和 watchOS 目标之间共享该通用代码(甚至是通用数据模型)。 您可以在应用程序启动时初始化堆栈,或者将该代码从(应用程序或)扩展委托中移出到共享管理器中,该管理器在您第一次需要从模型中获取数据时被初始化。 我实际上等到我的接口控制器的awakeWithContext加载我的数据(它懒惰地初始化我的经理的堆栈)。 如果您正在寻找一个工作示例,Jesse Squires 有一个出色的 Swift Core Data 堆栈,您可能会发现它很有帮助。

2022-01-14 09:39:44    分类:技术分享    ios   swift   core-data   watchkit   watchos-2

Implementing Core Data to watchOS 2.0

I am pretty new to WatchKit, and I am trying to add Core Data to my WatchKit extension. So far I have created a Data Model in my WatchKit extension, but I am stuck on implementing the rest of the Core Data stack. Is the process of creating Core Data models and initializing the Core Data stack identical to iOS or are there any differences I should be aware of? Also, do I initialize the Core Data stack in the ExtensionDelgate.swift or should I initialize it somewhere else?

2022-01-14 06:39:51    分类:问答    ios   swift   core-data   watchkit   watchos-2

WCSession - PayloadTooLarge(WCSession - PayloadTooLarge)

问题 苹果文档显示: PayloadTooLarge - 指示正在发送的项目超出最大大小限制的错误。 数据字典和文件都可能发生这种类型的错误。 在 watchOS 2.0 及更高版本中可用。 有谁知道这两种方法用于将数据从手表传输到手机的最大大小限制是多少?: func transferUserInfo(_ userInfo: [String : AnyObject]) -> WCSessionUserInfoTransfer 和 func transferFile(_ file: NSURL, metadata metadata: [String : AnyObject]?) -> WCSessionFileTransfer 我在任何地方都找不到它的记录。 谢谢! 回答1 关于用户信息 转移用户信息: 甚至对于并发症信息: transferCurrentComplication用户信息: 大小限制 (iOS 9) 为65.5 kB ,您可以使用的消息也是如此 发信息: 尺寸限制为 更新应用上下文: 是262 KB 。 关于 传输文件: ccjensen 的回答是正确的,因为我的经验没有实际限制,即使是 WCSession 错误代码部分中提到的 Apple 文档,文件可能太大: WCErrorCodePayloadTooLarge 指示正在发送的项目超过最大大小限制的错误。

2022-01-13 13:56:28    分类:技术分享    ios   watchkit   apple-watch   watchos-2