问题标签 [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.

0 投票
2 回答
4721 浏览

ios9 - WCSession's transferUserInfo no longer reliably working in watchOS 2.2 with iOS 9.3

I have an existing iOS 9.2 and watchOS 2.1 app that uses sendMessage and transferUserInfo to send data from the iPhone to the Apple Watch. If sendMessage fails, I am using transferUserInfo to queue the data for later delivery:

Without changing any code and running the app on iOS 9.3 with watchOS 2.2 on a real device (simulator does not have the same problem), sendMessage delivers data to the Apple Watch as long as the watch is within range and the screen is on. This is as expected and how it previously worked. However, if the screen is off and sendMessage fails, transferUserInfo no longer delivers data to the Apple Watch when the screen turns back on.

In an attempt to find where this was erroring out, I added the following WCSessionDelegate method to see if the iOS app was failing to send the data:

This method does get invoked after transferUserInfo is called, but there is no error returned and the iOS app seems to indicate that the transfer occurred successfully.

At first I thought that perhaps the time it takes to transfer the data has been increased, but after leaving the device alone for a day the data still had not transferred. I am now somewhat suspicious it has something to do with the new multi-watch API, and perhaps the iOS app needs to know a specific watch to send it to, though I only have ever had a single watch paired. Does anyone have any ideas on what might have changed and how to correctly use transferUserInfo?

0 投票
1 回答
697 浏览

ios - watchOS 2.2 应用程序如何确定其配对的 iPhone 是否已切换到另一台 Apple Watch?

我正在尝试在我的 iOS 9.3/watchOS 2.2 应用程序中支持与多个手表配对的新功能。它似乎运行良好,只是我无法弄清楚 watchOS 应用程序如何确定配对的 iPhone 是否已切换到另一台 Apple Watch。

文档说,从 WatchKit 扩展的角度来看,在整个切换生命周期中保持WCSession激活状态,并且从我在 Xcode 中的测试来看,似乎手表会话报告即使手机已切换到另一只手表,iPhone 也可以访问。

我目前没有多个手表来检查实际设备上的行为是否相同。

0 投票
1 回答
1348 浏览

ios - 如何支持 iOS 9.3 和 watchOS 2.2 的多个手表

无法弄清楚如何为 watchOS 2.2 更新我的手表和 iOS 应用程序以支持多个手表。

我知道有一些新功能必须主要在 iOS 应用程序端实现,但根据开发人员库,还必须在手表扩展上实现:

我不确定该怎么做以及这些函数应该运行什么代码。

0 投票
2 回答
2465 浏览

ios - iOS WatchOS2 WatchConnectivity [WCSession defaultSession] activateSession] 失败

我有 XCode 7.3、带有 iOS 9.3 的 iPhone5、带有 WatchOS 2.2 的 Apple Watch

我有一个想要支持 Watch App 的公司项目。首先,我构建了一个空项目,以确保 watchkit 和 watchkit 扩展工作正常,并且确实工作。我可以看到会话已建立并且手表已配对。

但是在我将相同的代码放入公司项目后,它只能工作一次:我第一次直接从 Xcode 运行应用程序。当我从后台杀死应用程序并再次打开它时,应用程序显示没有配对手表。在这种情况下,我得到以下日志:在 iOS 应用程序中

在 watchKit 扩展中

我关于 wcsession 的代码:

iOS 应用程序

在 AppDelegate+GC_WCSession

在 AppDelegate

watchKit 扩展

在 ExtensionDelegate

这是我到目前为止所尝试的:

  • 重置所有模拟器的内容和设置

  • 从手表和 iPhone 中删除了手表应用

  • 通过手机手表应用程序中的设置:删除手机应用程序的手表扩展并重新安装

  • 尝试在 AppDelegate INIT 方法中设置 iPhone WCSession

我不认为代码有问题,因为它在一个空项目中工作。我想知道环境配置是否有问题。我现在在这个问题上挣扎了很多天。因此,每一个提示都受到高度赞赏。

0 投票
1 回答
59 浏览

ios - 创建与 Apple Watch OS2 共享照片的架构

我正在尝试找出使用 watchOS 2 将 10 多张照片从 iOS 应用程序共享到 Apple Watch 应用程序的正确方法。

我想在后台传输这些图像,这样用户就不必打开 iOS 应用程序来查看照片。

我尝试从 Facebook 查询照片并将它们发送到手表,transferUserInfo()但有效负载太大:

有什么想法我应该怎么做?

0 投票
1 回答
400 浏览

ios - 通过 sendMessage 发送一个巨大的字典 - WatchKit

我的目标是从 iOS 应用程序向 watchKit 应用程序发送一个巨大的字典(包含大约 10 个数组),但我在 watchKit 端没有得到任何输出。

如果我发送一个字符串,以下示例可以正常工作:

但是当我尝试发送字典时,我根本没有得到任何输出:

这就是我在 watchKit 端打印输出的方式:

0 投票
2 回答
123 浏览

swift - WatchKit InterfaceController 有条件地在 sendMessage:replyHandler 中播放触觉:

我想让接口控制器检查以确保当我收到电话回复时它仍在前台。如果是,请执行触觉以让用户知道它已完成工作。

sendMessage:replyHandler:是我用来与手机通信的东西,但它可能需要很长时间才能返回。InterfaceController设置为WCSessionDelegate. 用户可以在完成之前降低手腕可能需要足够长的时间。在这种情况下,我想捕获不触发的触觉。到目前为止,触觉可以排队,然后在未来的随机时间播放,这没有帮助。

我已配置要发送的通知,但仅在手表未显示应用程序时才会显示。因此,为什么我需要在尝试播放触觉之前弄清楚界面控制器是否在屏幕上。

0 投票
1 回答
1040 浏览

swift - 结合 WatchConnectivity 和并发症

我希望我的复杂功能通过 Watch Connectivity 从 iPhone 获取数据。我正在使用sendMessage即时通讯技术。

当我尝试获取数据时,我不希望我的 iPhone 应用程序打开,因此这需要在后台运行。

在我 iPhone 上的 ViewController 中:

在我的 ComplicationController

我在手表上唯一能看到的是“不是”。为什么并发症不显示接收到的数据?

0 投票
0 回答
57 浏览

synchronization - WatchOS 没有在从 iPhone 到 Watch 的 didReceiveUserInfo 中获得回调

首先让我明确一点,一切都运行良好。但是从最近两天开始,我面临着非常奇怪的情况,我可以将用户信息从 WatchOS 发送到 iOS,但没有发生反向操作。

即使我在任何地方都没有收到任何错误。我尝试重新启动,重新安装和修复,但仍然存在同样的问题。有没有人有想法处理这个?

0 投票
0 回答
83 浏览

swift - iOS 和对应的 Complication 无法相互通信

我的应用程序的基本概念是,Complication 向 iPhone 请求数据,然后 iPhone 将数据发回。我从我的 iPhone 应用程序中激活了我的 WCSession didFinishLaunchingWithOptions。同样在我的 Watch 应用程序中,我已经覆盖init()了 ExtensionDelegate 中的。

这是我在 iPhone 上的单身人士:

这是我手表上的单身人士:

在我的 ExtensionDelegate 的 init 中,当我激活我的 Complication 时应该调用它,我调用startSessionrequestData

还有我 iPhone 上的 AppDelegate:

输出很简单:

没有didReceiveUserInfo当我在 XCode 中的模拟器上调试复杂功能时。