问题标签 [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 回答
141 浏览

ios - 当 AppleWatch 处于后台状态或睡眠模式时,我们如何从 iphone 向 AppleWatch 发送消息?

我正在开发示例手表套件应用程序(Apple Watch + iPhone)。在这里,我的应用程序同步正常。我还使用数据传输(iPhone 到 Apple Watch)在 WCSession 上工作。当两者都处于活动状态时,它工作正常。但是如果 Applewatch 处于非活动状态(后台状态、睡眠模式或前台状态),我无法将数据传输到它。委托方法未调用。

这是我的委托方法。

请帮我。

0 投票
0 回答
196 浏览

ios - WCSession 在没有发送消息几秒钟后变得无响应

我正在尝试在 Swift 3 中使用 WCSession 将消息从 WatchKit 扩展发送到 iPhone 应用程序并回复一些数据。

我第一次发送消息时,我会在大约 2 秒内收到回复。如果我直接发送消息或最多发送消息。在最后一条消息后 3-5 秒后,我仍然在 2 秒内收到回复。但是,如果我在最后一条消息之后等待的时间比这更长(例如 10 秒),我将要么根本没有回复,要么会在 30 多秒后得到回复。

我在我的代码中做错了什么还是一个错误?

应用委托:

观察接口控制器:

0 投票
2 回答
3807 浏览

ios - WCErrorCodeDeliveryFailed:无法交付有效负载

我正在开发一个在 iPhone 和 Apple Watch 之间共享数据的应用程序,使用WCSession方法 sendMessage:replyHandler:errorHandler:

实施该方法后,我收到如下错误:

WCSession _onqueue_notifyOfMessageError:withErrorHandler: errorHandler: YES with WCErrorCodeDeliveryFailed。

错误 = 无法交付有效负载。

任何帮助表示赞赏。

0 投票
1 回答
206 浏览

ios - 如何在 iOS 中识别不同的连接手表

watchOS >= 2.2sessionDidDeactivate: , iOS >= 9.3 iOS 设备可以通过,连接多个手表设备sessionDidBecomeInactive:

但是,这些委托调用中没有提供身份。

是否有任何系统方法来识别不同的连接手表。

我必须手动操作它吗?例如,检查新连接的手表是否有身份,如果没有,则给它新的id。收到 id 后,手表还需要将其保存在某个地方。NSUserDefaults在这种情况下听起来是个好地方。

0 投票
1 回答
850 浏览

ios - WCSession sendMessageData 在 watchOS 3 中不起作用

我正在尝试将图像从 iOS 发送到 watchOS,但出现以下错误。

sendMessageData 出现错误:错误域 = WCErrorDomain 代码 = 7014 “无法传递有效负载。” UserInfo={NSLocalizedDescription=无法传送有效负载。

我在 ViewController 类中的代码

在 InterfaceController 类中

谢谢,

0 投票
0 回答
714 浏览

ios - 在 iOS 和 watchOS 之间同步身份验证数据的最佳方式是什么?

我在 iOS 和 watchOS 之间同步用户凭据时遇到问题。

我的基本设置是我的 iOS 应用程序和 watchOS 应用程序都需要与后端服务器通信,并且它们都需要访问令牌才能这样做。但是,用户只能在 iOS 应用上登录(因为需要输入用户名和密码)。

现在,当用户登录 iOS(或之后打开应用程序)时,我使用 updateApplicationContext() 将用户的凭据发送到 watchOS。用户注销时也会做类似的事情,如下:

然后我接收数据并更新手表端的界面如下:

当用户登录和用户注销时,这一切都很好。

但是,在登录后使用该应用程序时,手表偶尔会将根控制器切换到已注销的控制器(可能是因为它收到一条消息,告诉它从用户默认值中删除登录标志,因此告诉它注销)。

使用 Xcode 没有很好的方法来捕捉这种情况,但它偶尔会发生。更糟糕的是,当我在 iOS 上打开应用程序(从标签栏控制器的 viewDidAppear 调用 logInOnWatch())时,手表没有更新。然后更新手表的唯一方法是注销并重新登录 iOS。只有这样,手表才会收到凭据和登录标志。

在应用程序的整个生命周期中还有其他实例,在这些实例中,一旦用户登录,我就会将用户数据从 iOS 发送到 watchOS,并且这些都可以正常工作。我想知道Apple如何处理手表上的用户默认设置是否存在问题,或者可能是WatchConnectivity的问题。

有没有更好的方法来更一致地保持这些数据同步?

0 投票
1 回答
1209 浏览

ios - WCSession sendMessage 何时无法在后台唤醒 iOS 应用程序?

我正在使用 WCSession 对象将数据从手表应用程序(watchOS 3.3 beta 4)通过sendMessage(_:replyHandler:errorHandler:). 根据Apple 的文档

在 WatchKit 扩展程序处于活动状态并运行时调用此方法会在后台唤醒相应的 iOS 应用程序并使其可访问。

但是,我发现如果对象的isReachable属性在调用之前,则消息无法发送,并出现以下错误: WCSessionfalsesendMessageError Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}

会话被激活,所以我相信这个sendMessage调用应该使 iOS 应用程序可以访问然后被发送,但这并没有发生。

在什么情况下会发生这种情况,是否有任何解决方法?

0 投票
1 回答
99 浏览

ios - 设备处于睡眠状态时调用 didReceiveApplicationContext?

当我单击 Apple Watch 应用程序中的按钮时,我想取消 iPhone 应用程序安排的本地通知。

现在,我正在使用 updateApplicationContext 方法发送信息以在手表和手机之间传输信息,并通过 didReceiveApplicationContext 方法取消本地通知。

目前,didReceiveApplicationContext 仅在应用打开时被调用。这意味着如果我在此期间没有打开应用程序,通知仍然会出现。我需要确保即使我不打开应用程序也不会出现通知。

当设备处于睡眠状态或应用程序不在前台时,有什么方法可以在后台调用 didReceiveApplicationContext 吗?

0 投票
1 回答
106 浏览

ios - watchOS 3 在设备和手表之间共享的类中使用 WCSession

我的应用程序依赖于手表和设备之间的持续通信。我想使用单例来管理所有消息传递和会话状态。我想使用继承在手表和设备上分别进一步自定义此行为。我希望父类是 WCSessionDelegate,但是 WCSession 库适用于 iOS 和 watchOS,并且每个都有单独的委托函数。有没有办法在超类中包含两组函数?现在编译器将文件视为一个或另一个,即使它是应用程序和监视目标的一部分。

功能被标记为不可用

0 投票
1 回答
59 浏览

ios - WatchOS 唤醒 iOS 应用程序以使用配对的蓝牙耳机开始录制

我有一个 iPhone 应用程序,它使用配对的蓝牙麦克风来创建录音。我想从配对的 Apple Watch 启动录制过程。我面临的问题是手表似乎无法开始录制,除非应用程序位于 iOS 应用程序的前台。我已经调查过在后台线程上启动它,但是从该线程内部调用记录函数似乎失败了。

任何人都可以提供任何上下文或指针来解决这个问题吗?