问题标签 [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 - 当 AppleWatch 处于后台状态或睡眠模式时,我们如何从 iphone 向 AppleWatch 发送消息?
我正在开发示例手表套件应用程序(Apple Watch + iPhone)。在这里,我的应用程序同步正常。我还使用数据传输(iPhone 到 Apple Watch)在 WCSession 上工作。当两者都处于活动状态时,它工作正常。但是如果 Applewatch 处于非活动状态(后台状态、睡眠模式或前台状态),我无法将数据传输到它。委托方法未调用。
这是我的委托方法。
请帮我。
ios - WCSession 在没有发送消息几秒钟后变得无响应
我正在尝试在 Swift 3 中使用 WCSession 将消息从 WatchKit 扩展发送到 iPhone 应用程序并回复一些数据。
我第一次发送消息时,我会在大约 2 秒内收到回复。如果我直接发送消息或最多发送消息。在最后一条消息后 3-5 秒后,我仍然在 2 秒内收到回复。但是,如果我在最后一条消息之后等待的时间比这更长(例如 10 秒),我将要么根本没有回复,要么会在 30 多秒后得到回复。
我在我的代码中做错了什么还是一个错误?
应用委托:
观察接口控制器:
ios - WCErrorCodeDeliveryFailed:无法交付有效负载
我正在开发一个在 iPhone 和 Apple Watch 之间共享数据的应用程序,使用WCSession
方法 sendMessage:replyHandler:errorHandler:
实施该方法后,我收到如下错误:
WCSession _onqueue_notifyOfMessageError:withErrorHandler: errorHandler: YES with WCErrorCodeDeliveryFailed。
错误 = 无法交付有效负载。
任何帮助表示赞赏。
ios - 如何在 iOS 中识别不同的连接手表
从watchOS >= 2.2sessionDidDeactivate:
, iOS >= 9.3 iOS 设备可以通过,连接多个手表设备sessionDidBecomeInactive:
。
但是,这些委托调用中没有提供身份。
是否有任何系统方法来识别不同的连接手表。
我必须手动操作它吗?例如,检查新连接的手表是否有身份,如果没有,则给它新的id。收到 id 后,手表还需要将其保存在某个地方。NSUserDefaults
在这种情况下听起来是个好地方。
ios - WCSession sendMessageData 在 watchOS 3 中不起作用
我正在尝试将图像从 iOS 发送到 watchOS,但出现以下错误。
sendMessageData 出现错误:错误域 = WCErrorDomain 代码 = 7014 “无法传递有效负载。” UserInfo={NSLocalizedDescription=无法传送有效负载。
我在 ViewController 类中的代码
在 InterfaceController 类中
谢谢,
ios - 在 iOS 和 watchOS 之间同步身份验证数据的最佳方式是什么?
我在 iOS 和 watchOS 之间同步用户凭据时遇到问题。
我的基本设置是我的 iOS 应用程序和 watchOS 应用程序都需要与后端服务器通信,并且它们都需要访问令牌才能这样做。但是,用户只能在 iOS 应用上登录(因为需要输入用户名和密码)。
现在,当用户登录 iOS(或之后打开应用程序)时,我使用 updateApplicationContext() 将用户的凭据发送到 watchOS。用户注销时也会做类似的事情,如下:
然后我接收数据并更新手表端的界面如下:
当用户登录和用户注销时,这一切都很好。
但是,在登录后使用该应用程序时,手表偶尔会将根控制器切换到已注销的控制器(可能是因为它收到一条消息,告诉它从用户默认值中删除登录标志,因此告诉它注销)。
使用 Xcode 没有很好的方法来捕捉这种情况,但它偶尔会发生。更糟糕的是,当我在 iOS 上打开应用程序(从标签栏控制器的 viewDidAppear 调用 logInOnWatch())时,手表没有更新。然后更新手表的唯一方法是注销并重新登录 iOS。只有这样,手表才会收到凭据和登录标志。
在应用程序的整个生命周期中还有其他实例,在这些实例中,一旦用户登录,我就会将用户数据从 iOS 发送到 watchOS,并且这些都可以正常工作。我想知道Apple如何处理手表上的用户默认设置是否存在问题,或者可能是WatchConnectivity的问题。
有没有更好的方法来更一致地保持这些数据同步?
ios - WCSession sendMessage 何时无法在后台唤醒 iOS 应用程序?
我正在使用 WCSession 对象将数据从手表应用程序(watchOS 3.3 beta 4)通过sendMessage(_:replyHandler:errorHandler:)
. 根据Apple 的文档:
在 WatchKit 扩展程序处于活动状态并运行时调用此方法会在后台唤醒相应的 iOS 应用程序并使其可访问。
但是,我发现如果对象的isReachable
属性在调用之前,则消息无法发送,并出现以下错误:
WCSession
false
sendMessage
Error Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}
会话被激活,所以我相信这个sendMessage
调用应该使 iOS 应用程序可以访问然后被发送,但这并没有发生。
在什么情况下会发生这种情况,是否有任何解决方法?
ios - 设备处于睡眠状态时调用 didReceiveApplicationContext?
当我单击 Apple Watch 应用程序中的按钮时,我想取消 iPhone 应用程序安排的本地通知。
现在,我正在使用 updateApplicationContext 方法发送信息以在手表和手机之间传输信息,并通过 didReceiveApplicationContext 方法取消本地通知。
目前,didReceiveApplicationContext 仅在应用打开时被调用。这意味着如果我在此期间没有打开应用程序,通知仍然会出现。我需要确保即使我不打开应用程序也不会出现通知。
当设备处于睡眠状态或应用程序不在前台时,有什么方法可以在后台调用 didReceiveApplicationContext 吗?
ios - watchOS 3 在设备和手表之间共享的类中使用 WCSession
我的应用程序依赖于手表和设备之间的持续通信。我想使用单例来管理所有消息传递和会话状态。我想使用继承在手表和设备上分别进一步自定义此行为。我希望父类是 WCSessionDelegate,但是 WCSession 库适用于 iOS 和 watchOS,并且每个都有单独的委托函数。有没有办法在超类中包含两组函数?现在编译器将文件视为一个或另一个,即使它是应用程序和监视目标的一部分。
ios - WatchOS 唤醒 iOS 应用程序以使用配对的蓝牙耳机开始录制
我有一个 iPhone 应用程序,它使用配对的蓝牙麦克风来创建录音。我想从配对的 Apple Watch 启动录制过程。我面临的问题是手表似乎无法开始录制,除非应用程序位于 iOS 应用程序的前台。我已经调查过在后台线程上启动它,但是从该线程内部调用记录函数似乎失败了。
任何人都可以提供任何上下文或指针来解决这个问题吗?