问题标签 [wcsession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - sessionReachabilityDidChange 未在手表上调用
我想让我的手表应用程序响应手机上的父应用程序被杀死。当手表应用程序正在运行并且电话应用程序被终止时,我没有收到来自sessionReachabilityDidChange
或的回调sessionWatchStateDidChange
。基于苹果文档:
调用此方法是为了让当前进程知道其对应会话的可达性发生了变化。
所以,看来我应该得到一个回调。我已经在手表上将 WCSession 代表设置为我的班级。手表上的会话接收应用程序上下文的回调。为什么我没有收到可达性回调?
下面的代码..
apple-watch - 在 Apple Watch 上使用 NSNotifications 传递 WCSession 消息
我有使用 Kugel 的 NSNotifications,它们在手表模拟器和 iPhone 和 iPhone 模拟器上运行良好,可以传递消息以更新 UI/状态,但是在设备上进行测试时,这些消息无法在手表端传递。
我认为的问题是 NSNotifications 是基于来自 iPhone 的 WCSession 消息触发的。在模拟器和 iPhone 端一切正常,可能是因为连接和通知总是传递,因为 sim 始终保持手表应用程序处于活动状态并且 iPhone 具有完整的会话支持。在手表上,会话和可能基于手表状态的通知都可能失败。
手表上的调试非常缓慢。启动调试过程需要 5-10 分钟!
有人可以指点我阅读有关如何最好地确保在手表上收到电话消息以及手表应用程序根据消息通知需要更新的内容吗?或者也许有一些很好的调试代码可以记录 WCSession 和 NSNotification 信息,我可以稍后查看?
我的代码相当简单,但仍在进行中....
在双方我创建一个单例来管理会话,这里是电话端代码:
这是手表方面:
我在 iPhone 端的 AppDelegate 和手表端的 ExtensionDelegate 中创建了单例,这是电话端:
发送消息时的基本逻辑是查看对方是否可达,如果是则使用 sendMessage,如果不可达则使用 sendApplicationContext。
当在手机端收到消息时,有一些额外的逻辑来查看应用程序是在前台还是后台,如果在前台,它会将通知推送到主线程,如果在后台,则只更新信息。在手表方面,它总是推送到主线程,因为我的理解是消息不会在后台接收。
watchos-2 - 调用了错误的 WCSessionDelegate 回调函数
我使用 WCSession.defaultSession().sendMessage 函数将消息从手表发送到 iphone,非 nil replyHandler 闭包
在 iPhone 上,
被调用而不是应该被调用的回调:
因此我不能调用replyHandler :-(
知道为什么吗?多谢!
编辑:用于拨打电话的代码:
ios - 在 watchOS 2 上使用 transferUserInfo 方法失败和数据丢失
当 Apple Watch 和 iPhone 不在范围内时,我通过发送 5-10 个数据字典transferUserInfo
并观察到当设备在 10 分钟内到达范围内时,所有字典都已成功交付。但是,如果我在 15-30 分钟后将 Apple Watch 带入范围内,我观察到很少有记录失败。
我在 Apple Watch 上获得认可为成功 ( ) 的记录很少didFinishUserInfoTransfer
,但没有到达 iPhone。是否与WCSession
不活动有关?
我已经在applicationDidFinishLaunching
我的 watchOS 2 应用程序中激活了会话。
size - 我可以通过 watchconnectivity 发送的字典的最大大小是多少
我正在通过 iPhone 发送 0.5 mb 大小的字典来观看 os2,但是每次它给出的消息回复都失败了。它在 watchos1 中正常工作。该词典中有 700 个对象。请帮忙。
ios - WatchKit 应用程序的行为不一致 - Swift
我正在尝试让 iOS 应用程序与手表进行通信,但我一直得到不一致的行为 - 要么通信太慢,要么根本没有数据传输。
此外,当 watchKit 运行时,我没有看到任何“电话已禁用”屏幕(这会导致崩溃,因为我需要先从电话中获取数据)。
这就是我在 iPhone 应用程序中建立 WCSession 时所拥有的
应用代理
主视图控制器 (viewDidLoad)
MainViewController(将一堆数据从 iOS 应用程序传输到 watchKit 应用程序的方法)
这适用于 watchKit 应用程序
应用代理
接口控制器 (awakeWithContext)
接收ApplicationContext数据的方法
非常欢迎任何有关清除情况的建议!
谢谢你。
ios - 是否可以在关闭时让 iOS 应用程序处理 WatchKit 连接请求?
我一直在阅读有关 WatchKit 连接框架的文档,试图弄清楚我是否可以将所有密集处理需求委托给我的父 iOS 应用程序。所有代码都已经存在于父应用程序中,用于执行所需的处理,这样做似乎效率更高,而不是 Apple Watch 应用程序复制代码并自行尝试。
我的问题是,如果 iOS 设备上的应用程序在手表套件应用程序发出请求时未激活,这是否可能?它会只是排队请求直到它下一次打开,还是可以配置为立即处理它?我希望手表总能得到某种形式的响应或请求超时。
更新:
我发现我的特定问题与在执行单独的请求后从后台线程调用回复处理程序有关。当我这样做时,我没有得到 iOS 设备对 Apple Watch 的回复。这最初让我认为 iOS 设备在激活之前会忽略这些请求。
我的解决方案是执行以下操作,以便始终从主线程调用回复处理程序。这似乎是我必须在文档中遗漏的沟通的关键部分(或者它可能遗漏了:o)。长话短说,在进行如下所示的更新后,我每次都成功地得到了回复。
swift - watchOS WCSession 'paired' 和 'watchAppAvailable' 不可用
我正在尝试使用单例来管理 WCSession 消息,我在这里找到了。
我理解它想要做什么,但我不明白为什么我会出错......这是我正在努力解决的问题:
错误:“watchAppInstalled”不可用
错误:“配对”不可用
问题:如何使这些属性可用?watchOS 和 ios 一般都是新手。谢谢!
完整代码:
watchkit - 如何使用 WCSession didReceiveMessage 接收不同的消息?
我需要从不同的按钮发送不同的消息。我如何使用didReceiveMessage
来接收它们?
ios - Xcode 7.3 的 WCSession 问题
直升机
在将 Xcode 更新到 7.3 版本之前,我有一个带有 WatchOS 2 应用程序的应用程序,手表应用程序会调用func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
并且 iOS 应用程序会选择调用并插入传递的值。一切都很好。
但是自从更新到 Xcode 7.3 后,我注意到一个问题,仅当 iOS 应用程序第一次启动时才func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
被调用两次,如果应用程序正在运行或在后台,则该函数只被调用一次。
如果我传递值 1、5 和 10 并且 iOS 应用程序未运行,则添加值 1、5、10、1、5 和 10。但是,如果应用程序以任何形式运行,则会添加值 1、5 和 10。
知道为什么吗?
这是来自 WatchOS 方面的代码,我自己确实想到了这一点,但根据我的测试,它们只被调用一次。我做了很多测试,这只会在 iOS 应用程序启动时发生,而不是在后台运行时发生。
这是来自应用委托的 iOS 应用代码
…………