问题标签 [mcsession]
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.
multipeer-connectivity - 邀请同行参加 MCSEssion
这是我第一次在 stackoverflow 上发帖,我知道严格的发帖要求。如果我没有遵循任何准则,请告诉我。
我目前正在使用 Objective-C 在 Xcode 中编写一个 IOS (8.4) 应用程序。目标是使用 MCSessions 在 IOS 设备之间传输数据。尽管在此处和其他地方阅读了许多试图阐明该主题的帖子,但我目前仍在为会话的概念而苦苦挣扎。以下是我已经知道的资源:
https://developer.apple.com/videos/play/wwdc2013-708/
https://medium.com/@phoenixy/using-multipeer-connectivity-120abacb9db
这是我目前的理解:在最基本的层面上,你有一个广告商和一个浏览器。广告商有一个本地会话,允许他们“做广告”。当浏览器看到广告商时,浏览器会向广告商发送到他(浏览器的)本地 MCSession 的邀请。假设这一切都是正确的,这就是我感到困惑的地方。广告商可以接受邀请,并在此过程中将他的本地会话传递给invitationHandler。
我在代码中实现了如下逻辑,如下图。但是,在跟踪广告商和浏览器的 MCSession 状态更改时,会尝试连接,但最终状态始终是 didNotNonnect。
发送邀请码(浏览器):
接受邀请代码(广告商):
任何帮助是极大的赞赏!
奥斯汀
swift - MCSessionState 从连接状态变为未连接状态
每当我尝试使用Multipeer Connectivity Framework连接对等点时,对等点的状态会从MCSessionState.Connecting
变为MCSessionState.NotConnected
。
以下是我运行的事件顺序:
- 模拟器通过MCNearbyServiceAdvertiser宣传该服务。
- iPhone 通过MCNearbyServiceBrowser浏览服务。
- iPhone 找到模拟器并立即通过invitePeer(_:toSession:withContext:timeout:)将其邀请到会话中。
- 最后,模拟器使用 ads(_:didReceiveInvitationFromPeer:withContext:invitationHandler:)接受邀请。
笔记:
- 即使我不需要安全性,我也会接受客户发送的任何证书,以防出现错误。
这是我正在使用的代码:
这里有一个类似的问题,但是,链接的代码很旧,无法再访问。此外,问题在于使用了相同的会话对象。
ios - MCSessions 中的连接和中继如何工作?
Multipeer Connectivity Framework文档有点缺乏。下面我有几个关于连接和中继的问题。
为了让事情变得更容易,我为每个问题创建了一个图像。传说如下:
对于每个问题,请记住以下几点:
- 如果我禁用蓝牙,答案会改变吗?
- 如果我禁用 wi-fi,答案会改变吗?
- 如果我从同一个 wi-fi 网络断开连接,答案会改变吗?
1. 如果你连接到一个对等点,你会连接到其他所有对等点吗?
假设 1 和 2 连接到一个会话。
如果 1 和 3 连接,那么 2 和 3 是否连接?
2. 如果您已经与同行进行了自己的会话怎么办?
假设 1 和 2 连接到一个会话,而 3 和 4 连接到不同的会话。
如果 1 和 3 连接,是否所有对等点都相互连接?(例如 2 和 4 是否连接?)
3. 如果两个连接的设备不再在范围内会怎样?
假设 1、2 和 3 都已连接并且在彼此的范围内。
如果 3 超出 1 的范围(但仍在 2 的范围内),那么 1 和 3 会断开连接吗?
注意:对于这个问题,假设他们使用的是设备到设备通信,而不是集中式 wi-fi。
3b。如果不是,这是否意味着 1 发送给 3 的每条消息都会通过 2 中继,或者 3 根本不会收到任何消息?
4. 如果连接已启动并且某些设备不在彼此的范围内怎么办?
假设 1 和 2 在彼此的范围内,2 和 3 在彼此的范围内,但 1 和 3 在彼此的范围之外。假设 1 和 2 连接到一个会话,但 3 没有。
如果 3 连接到 2,它也会连接到 1 吗?
5. 广告是否也通过对等点进行中继?
同样,1 和 2 在范围内,2 和 3 在范围内,但 1 和 3 超出范围。
如果 1 发布它的服务,3 会看到它吗(例如通过它通过对等点 2 中继)?
5b。如果 2 也是广告,这会改变上述问题的答案吗?即 3 会看到 1 的广告吗?
6. 浏览器呢,它们是否曾经通过对等点进行中继?
同样,1 和 2 在范围内,2 和 3 在范围内,但 1 和 3 超出范围。
如果 3 发布它的服务,那么 1 会看到它吗(例如通过它通过对等点 2 进行中继)?
6b。如果 2 也在浏览,这会改变上述问题的答案吗?即1会看到3的广告吗?
multipeer-connectivity - MCSession 的距离范围是多少?
我正在开发使用 MCSession 来获取附近用户列表的移动应用程序。所以我想知道 MCSession 的范围是多少?
ios - 需要使用多点连接与不同设备共享歌曲。
要求: 我们能够从主机设备连接到多个从设备。例如,如果设备 A 向设备 B 和 C 发起连接,则贡献者设备可以接受对等连接并连接到设备 A。这里 A 是主设备,B 和 C 是贡献者设备。现在如果 B 将他们的歌曲分享给 A,A 就可以播放歌曲并查看歌曲信息。与此同时,C 将处于空闲状态,但应该连接。当 B 播放完歌曲后, C 也可以将自己的歌曲分享到设备 A。
以下是我们在完成上述任务时遇到的问题: 1. B 开始向 A 分享歌曲时,C 就崩溃了。但是 A 仍然可以播放 B 共享的歌曲。
- 为了克服这个问题,直接在这里传递没有索引的数组
toPeers:array
。它正在工作,我们能够与设备 A 共享和播放歌曲,但设备 A 无法接收歌曲信息。
以下是我们正在使用的完整代码:贡献者控制器:
主机视图控制器:
如果我在这里遗漏了什么或实现上述要求的更好方法,请告诉我们。任何帮助都非常感谢。
bluetooth - Swift:会话 sendData ,类型()不确认协议 BooleanType
我正在尝试根据本教程创建一个蓝牙聊天系统:http: //www.appcoda.com/chat-app-swift-tutorial/
我收到的错误如下:类型()不符合协议 BooleanType。
有谁知道如何解决这个问题?
ios - 多路连接中的断开连接问题
我们能够从主机设备连接到多个从设备。但首先设备会在共享数据时连接,它们会自动断开连接。我们已经使用了所有委托方法。
任何帮助都非常感谢,在此先感谢。
swift - Swift:MCSession 连接,但从未完全连接
我在 swift 中有一个对象来管理 MCSessions 并连接到它找到的任何对象。但是,似乎总是存在一些问题,因此当它连接到会话时,它会断开连接。
看看人们遇到的其他问题,它几乎总是由广告商、浏览器和会话之间的不同 MCPeerID 引起的。但是,我明确地为整个班级设置了一个常量 peerID。
我正在 iPhone 5S 和模拟器之间进行测试。
swift - 通过点对点同时发送字符串和 NSData?
我将类型为 (String) 的文本字段和类型为 (NSData) 的图像添加到将其发送给对等方的字典中,另一方面,它将字典解码为具有键值对的字符串。
字典中的图像数据不再是 NSData 而是一个字符串。如何同时发送字符串和数据并将其作为字符串和数据检索?
swift - 无法在 iOS 11 上使用 MultipeerConnectivity 发送轻量级图像
在iOS 11上,我无法使用 Multipeer Connectivity发送轻量级文件。
但是,在iOS 10上,无论大小如何,它都可以发送。
如果无法发送,则“MCSession.sendResource (at: withName: toPeer: withCompletionHandler :)”的“completionHandler”中的块没有被调用。
(在接收方,“MCSessionDelegate”的“session(_:didFinishReceivingResourceWithName:fromPeer:at:withError:)”没有被调用。)
可能,当大小较轻时,传输状态的处理似乎无法正常工作。
即使是 iOS 11,它也能接收到一个轻量级的文件。
在 iOS 11 上发送轻量级文件需要什么?