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

ios - 将 Core Data 文件同步到 Apple watch for Swift 2.0

我有由 Core Data 创建的 SQLite 文件,并且想将文件从 iPhone 传输到 Apple Watch。我选择WCSession这样做。我可以在 Apple Watch 上接收文件,但我没有找到保存在 iPhone 文件中的任何数据。有什么技巧或方法可以解决我的问题吗?

我使用以下代码传输文件:

有没有其他方法可以在后台随时准确同步数据?我可以在 watchOS 2.0 中使用应用组吗?

0 投票
1 回答
777 浏览

ios - 在 AppDelegate 中调用 func session didReceiveMessage

如果特定的 vc 在 iPhone 上处于活动状态,用户已经可以在前台发推文(在手表上口述的文本)。

但现在我想更进一步,在后台发送这条推文。因此,用户在手表应用程序中口述文本,即使 iPhone 上的应用程序关闭,文本也会发送推文。

我已将此代码用于定义:

而对于方法:

但它在后台和后台都不起作用。

如何解决?

0 投票
2 回答
323 浏览

ios - WCSession activateSession exc_bad_access 崩溃

我有麻烦WCSession activateSession。我在我的方法中添加了这段代码,它在调用viewDidLoad时崩溃了。activateSessionsendMessage 也崩溃了。

我虽然这个问题与线程有关,但我在主线程上调试它和这些调用。

知道可能是什么问题吗?

这是崩溃日志:

thread #1: tid = 0x10aa81, 0x0000000110917817 libobjc.A.dylib objc_msgSend + 23, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x408f59958d3) frame #0: 0x0000000110917817 libobjc.A.dylibobjc_msgSend + 23 frame #1: 0x000000010be8fd1c myApp +[CRWCSessionDelegateProxy performSwizzledWCSessionActivateSession:] + 62 frame #2: 0x000000010be8f869 myApp+[CRWCSessionDelegateProxy activateSessionForWCSession:dispatch:] + 72 frame #3: 0x000000010be8ec64 myApp __72+[CRWCSessionDelegateProxy swizzleWCSessionActivateSessionWithDispatch:]_block_invoke + 37 * frame #4: 0x000000010bd6c4e4 myApp-[FPMAppDelegate application:didFinishLaunchingWithOptions:](self= 0x00007ff588d06800, _cmd="application:didFinishLaunchingWithOptions:", application=0x00007ff588c00850, launchOptions=0x0000000000000000) + 5236 at FPMAppDelegate.m:188 frame #5: 0x000000010e50d1f1 UIKit -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 272 frame #6: 0x000000010e50e397 UIKit-[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3415 frame #7: 0x000000010e514cc6 UIKit -[UIApplication _runWithMainScene:transitionContext:completion:] + 1760 frame #8: 0x000000010e511e7b UIKit- [UIApplication workspaceDidEndTransaction:] + 188 帧 #9: 0x0000000113203754 FrontBoardServices-[FBSSerialQueue _performNext] + 192 frame #10: 0x0000000113203ac2 FrontBoardServices-[FBSSerialQueue _performNextFromRunLoopSource] + 45 frame #11: 0x0000000110db4a31 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 frame #12: 0x0000000110daa95c CoreFoundation__CFRunLoopDoSources0 + 556 frame #13: 0x0000000110da9e13 CoreFoundation __CFRunLoopRun + 867 frame #14: 0x0000000110da9828 CoreFoundationCFRunLoopRunSpecific + 488 frame #15: 0x000000010e5117cd UIKit -[UIApplication _run] + 402 frame #16: 0x000000010e516610 UIKitUIApplicationMain + 171 frame #17: 0x000000010bcdc8cf myApp main(argc=1, argv=0x00007fff540ca3c0) + 111 at main.m:16 frame #18: 0x0000000111ab292d libdyld.dylibstart + 1

0 投票
1 回答
870 浏览

ios - WCSession 文件传输问题

我在从父设备向 Apple Watch 发送文件时遇到问题。有时文件会通过并被完全解析。其他时候它开始文件传输,但它失败了,甚至从不session:(WCSession *)session didReceiveFile:(WCSessionFile *)file使用 Apple Watch 上的方法。

这是父设备代码:

这是 Apple Watch 代码:

我什至不确定它与代码本身有什么关系。我认为文件传输有时会失败,但我找不到任何地方可以打印出错误以进行调试。

谁能在这里给我一些见解?

iOS 9.2 && WatchOS 2.1

这是 [FileSystem_Helper removeFile: (NSString *)filePath] 中的代码:

这里是 [FileSystem_Helper writeAudioToAppGroupsWithData]:

0 投票
2 回答
481 浏览

watchkit - didFinishUserInfoTransfer 成功完成 - 但仍然有优秀的UserInfoTransfers 对象

首先,我使用“transferUserInfo”方法将字典从 iPhone 发送到 Apple Watch:

然后我使用以下委托回调方法“didFinishUserInfoTransfer”来检查传输状态:

在 Apple 文档中,它是关于 didFinishUserInfoTransfer 方法的:

到目前为止一切顺利 - 我明白了。但现在 - 有一些我不明白:

如果输入了 didFinishUserInfoTransfer 并且错误 == nil,那么究竟为什么 session.outstandingUserInfoTransfers COUNT 可以大于零??????

根据 Apple 文档,didFinishUserInfoTransfer 的唯一非错误状态应该是传输结束时!有点它似乎没有结束......为什么?

感谢您对此的任何澄清。

而且,我很高兴有任何关于如何正确使用这 3 种方法的示例代码!(IE

  • session.transferUserInfo(dicty)

  • didFinishUserInfoTransfer

  • session.outstandingUserInfoTransfers)

0 投票
1 回答
83 浏览

ios - 检查 WCSession 是否有数据

我正在使用 WCSession 在我的 iWatch 和 iPhone 应用程序之间传递数据。我需要一种方法来查看手表打开时手机是否已经发送数据。

我已经尝试过 didReceiveApplicationContext、didReceiveUserInfo 和 didReceiveMessage,但它们只有在有数据时才会被调用。计时器是唯一的方法吗?

0 投票
0 回答
211 浏览

ios - 有没有办法模拟 WatchConnectivity 可达性丢失?

我正在尝试测试我的应用程序的功能,以了解手表何时失去或恢复与手机的连接 (sessionReachabilityDidChange) 以及当我尝试发送消息但没有连接时(尝试模拟 sendMessage 错误。)

有没有办法通过代码或在 iPhone/Watch Simulator 上做到这一点?还有没有办法在手机本身上模拟这个?我知道我可以关闭蓝牙/Wifi,但我希望能够在不丢失与手表的调试连接的情况下做到这一点。

0 投票
2 回答
1823 浏览

ios - 错误:“消息回复时间过长” - WCSession Watch OS2

所以我正在使用 Watch Connectivity 从 iPhone 向 Watch 请求一个数组。

这个想法是sendMessage从手表开始,iPhone 会用didReceiveMessage方法中的数组进行回复。

但是 iPhone 似乎没有响应,我认为当我从 Watch 发送消息时 iPhone 会打开应用程序。我什至尝试过打开应用程序,sendMessage但仍然没有运气。当我等待足够长的时间时,我收到以下错误消息:

错误域 = WCErrorDomain 代码 = 7012 “消息回复时间过长。” UserInfo={NSLocalizedDescription=消息回复时间过长。,NSLocalizedFailureReason=回复超时。}

有人知道我哪里可能出错了吗?

苹果手表

控制台输出

WCSession 是可达数组 nil

iPhone 应用程序代表

iPhone 上的任何内容都没有被执行。即使我手动打开应用程序。

0 投票
2 回答
304 浏览

ios - 数据未从 iphone 传输到真实设备上的 iWatch (AppleWatch)

我有一个 iOS 应用程序,我在 appleWatch 上为它编写了一个扩展程序。我正在使用 transferUserInfo 方法将数据(NSDictionary)发送到 appleWatch 扩展。一切都在模拟器中运行,但是当我尝试在真实设备上运行应用程序时,尽管 iPhone 正在发送数据,但 iWatch 似乎没有收到任何内容(我发现这是因为我调试了发送方)。

我已经在两边配置了 WCSession。我已经在我应该接收数据的类中符合 WCSessionDelegate。我正在使用 session:didReceiveUserInfo: 方法在 ExtensionDelegate 中接收数据,但仍然像我说的那样在模拟器中一切正常,但在真实设备上没有传输任何内容。

有没有人知道问题出在哪里?

这是代码:在发送方:

在我的班级 MensaViewController.m

discDictionary 在 vi​​ewDidLoad 方法中声明,它包含数据。

在接收方(Watch Extension)我配置 WCSession 并在 ExtensionDelegate.m 中接收数据,如下所示:

我有这种方法来接收数据:

0 投票
1 回答
728 浏览

xcode7 - WCSession sendMessage 不起作用

我在我的 Watch 扩展中调用了这段代码(它确实运行,用断点检查):

在我的父应用程序中,我有:

上面的代码在应用程序启动时运行,我已经实现了:

但它永远不会被调用。我曾经让它工作,但现在,我无法正确调试我的 Watch 应用程序和 iOS 应用程序(它们不启动、超时等),我一个接一个地部署它们。当我调试 Watch 扩展时,我可以看到该sendMessage...方法被调用(几分钟后,我的错误处理程序被调用并出现超时错误),所以没有问题。当我启动我的主应用程序时,我还看到WCSession相关代码正在被命中。但是,当我启动我的 Watch 应用程序与之通信时,它didReceivedMessage...永远不会被调用。

我已经从 iPhone 和 Watch 中删除了我的应用程序,重新启动了这两个设备,然后重新启动了我的 Mac 并再次尝试,但无济于事。我究竟做错了什么?