问题标签 [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 投票
1 回答
39 浏览

swift - For Apple Watch OS in Swift, how can I have a function run after WCSession activation is complete?

I have a method in my main interface controller class that I wish to run when the WCSession between the phone and watch has finished activating. I know there is a didFinishActivation function in the WCSession class. However, how do I communicate the result of this function to my main interface controller class to run the function in there, after WCSession has finished activating?

0 投票
0 回答
217 浏览

ios - watchOS 4.0 应用 [[WCSession defaultSession] isReachable] 始终处于获取状态:已连接

我正在做一个与 Watch/iPhone 相关的项目,并且我的手机与手表配对。我的手表应用程序运行良好,然后我的移动设备 wifi 和蓝牙连接“打开”连接状态。

我正在我的移动设备上进行 wifi 和蓝牙连接“关闭” 。我的手表应用程序在 2 到 3 秒后处于断开状态,然后突然连接。

有谁知道他们如何能够做到这一点或其他选项来检查可达性?

我想要关闭 wifi 和蓝牙时的折扣状态。

我找不到任何在线资源,请帮助。这是我的代码:

此代码在 WatchOS3 上运行良好,仅在 WatchOS4 上发生。

任何帮助是极大的赞赏!

0 投票
1 回答
258 浏览

ios - 用于实时消息传递的 WKExtension 状态和 sendMessage

我正在开发一个需要与 iOS 应用程序通信的 WatchApp,我正在使用 Watch Connectivity fwk 来做到这一点。

每次用户显示我的 WatchApp 时,我都需要从 iOS 应用程序中获取一组必须在 Watch 上显示的新数据。

为了获取这些数据,我正在使用sendMessage(_:replyHandler:errorHandler:)但有时似乎这种通信不起作用,因为我的 WatchApp 没有更新。从 Xcode 启动 WatchApp 时我没有问题,只有在我在现实生活中使用它时才会出现问题。

每次我的 WatchApp 回调时,我都会触发 WatchApp 和 iOS App 之间的同步:

  • WKInterfaceController.willActivate()(我只有一个Controller)
  • WCSessionDelegate.session(WCSession, didReceiveApplicationContext:
    [String : Any])
    当activationState == .activated
  • WCSessionDelegate.sessionReachabilityDidChange(WCSession)
    会话可达时

在 2015 年 WWDC 的视频“Introducing Watch Connectivity”中,演讲者告诉 WatchKit Extension在向 iOS App 发送交互式消息时必须在前台运行。

这是否意味着除了WCSession.activationState == .activated之外,我还需要在调用sendMessage(_:replyHandler:errorHandler:)之前检查WKExtention.shared().applicationState == .active ?

当我的 WatchApp 在 Dock 中并且用户显示 Dock 时,我的 WatchApp 有一个 WKExtension.shared().applicationState == .inactiveWKExtension.shared().isApplicationRunningInDock == true,我可以使用 sendMessage(_:replyHandler: errorHandler:) 在这种状态下更新我的应用程序?

我只是想知道在使用 sendMessage(_:replyHandler:errorHandler:) 之前需要检查哪些条件。

谢谢,

0 投票
1 回答
70 浏览

ios - 无法读取 WatchConnectivity 框架的 WCSession 单例实例

我正在尝试处理 WCSession 默认实例。但它给出了以下编译器问题。 当我尝试阅读时

当我尝试作为方法阅读时

编译器建议作为方法

默认实例的定义 当我跳到定义

0 投票
1 回答
696 浏览

ios - Watch App:[WCSession defaultSession].isReachable 总是在后台应用程序上检索“FALSE”状态?

我正在开发苹果手表应用程序。当应用程序在前台时,它工作正常[WCSession defaultSession].isReachable并检索ON状态。现在我的手表应用程序进入后台模式,那么必须创建问题。

那么如何解决这个问题呢?并在后台模式下检索ON状态。

我的代码如下。

欣赏是否有任何建议或想法。

0 投票
2 回答
1883 浏览

ios - 如何在后台从伴侣手表应用程序启动主 iOS 应用程序?

情况:

由于我们的用户已将他们的 iOS 更新到 11 和/或 WatchOS 到 4,当我们的 WatchOS 应用启动应用时,我们的 iOS 应用似乎不会触发任何预定的计时器。从 WatchOS 应用程序启动我们的主应用程序时,我们可能做错了什么。

上下文和代码:

我们的 WatchOS 应用程序是一个配套应用程序,它允许用户通过按下按钮在后台启动/停止我们的 iPhone 应用程序。我们通过使用:

然后在我们的主应用程序中,我们收到消息并启动我们的基本控制器:

一切似乎都像以前一样工作,我们正确地获得了 GPS 位置,我们的所有进程都开始了,但是,Timer开始的对象不会触发。

这之前在 iOS 10 上运行良好,所以我怀疑这与 iOS 11 背景状态的工作方式不同有关。但是,我似乎找不到任何关于此的文档。

额外信息:

  • 在 iOS 10 上,当我们以这种方式启动我们的主应用程序时,该应用程序在 iPhone 的多任务视图中可见。现在在 iOS 11 上,它在多任务视图中不可见,但它确实在后台运行。我成功地看到了我在后台安排的本地通知,我可以通过活动代码进行调试,当点击应用程序图标时,应用程序立即可用。
  • 我们的 WatchOS 应用的部署目标是 2.0
  • 在连接设备的情况下通过 XCode 进行调试,使用 Debug-->Attach to PID or Name-->Entered app name。然后从 Apple Watch 启动我们的应用程序并进行调试。
  • 可在 iOS 11.0.3 和 iPhone 6 上的 WatchOS 4.0 上重现

问题: 从手表应用程序启动我们的主应用程序的最佳方式是什么?iOS 11/WatchOS 4 关于背景状态有什么变化吗?我能找到这方面的文件吗?这可能是iOS错误吗?

0 投票
1 回答
94 浏览

swift - watchkit sendmessage errorHandler 未调用

我试图将消息从手表发送到手机。如果电话未连接,请稍后发送消息。但是,在实际手表上进行测试时,似乎没有调用错误处理程序。我的 sentFlag 不是假的。

0 投票
1 回答
589 浏览

ios - WCSession:使用 transferUserInfo 或 sendMessage 的最佳方式?

我目前正在使用 transferUserInfo() 以字典数组的形式发送用户列表。

我开始认为我真的没有利用 UserInfo 传输提供给我的 FIFO 行为。

所以我开始考虑是否可以使用 sendMessage() 来发送我的数据。

每个后台传输方法可以包含多少数据,它会有什么不同吗?

或者使用 transferUserInfo() 而不使用其 FIFO 行为是否可以?

0 投票
1 回答
218 浏览

ios - 在后台将数据从 iWatch 发送到 iPhone

如果我的手表在后台并且 iPhone 应用程序在前台,我想将数据从 iWatch 发送到 iPhone。我通过计时器方法传输数据。它每一秒都在呼唤。WCSessionDelegate方法实现了文件 iPhone 应用程序文件和手表套件扩展文件。WCSessionDelegate方法didReceiveUserInfo,,didReceiveMessagereplyHandlerdidReceiveMessage实现。

0 投票
1 回答
61 浏览

ios - 在 watchOS4 中将实时数据从 Apple Watch 应用程序共享到 iPhone 应用程序的最佳方式是什么?

我一直在使用 WCSession 时遇到问题,它确实会收到一条消息,但它真的很慢,我可能需要长达 10 秒才能在 iPhone 应用程序上收到消息。所以我想知道这些天是否有更好的方法来做到这一点(顺便说一句,我对 Swift 很陌生)