问题标签 [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.

0 投票
1 回答
437 浏览

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。

发送邀请码(浏览器):

接受邀请代码(广告商):

任何帮助是极大的赞赏!

奥斯汀

0 投票
2 回答
1684 浏览

swift - MCSessionState 从连接状态变为未连接状态

每当我尝试使用Multipeer Connectivity Framework连接对等点时,对等点的状态会从MCSessionState.Connecting变为MCSessionState.NotConnected

以下是我运行的事件顺序:

  1. 模拟器通过MCNearbyServiceAdvertiser宣传该服务。
  2. iPhone 通过MCNearbyServiceBrowser浏览服务。
  3. iPhone 找到模拟器并立即通过invitePeer(_:toSession:withContext:timeout:)将其邀请到会话中。
  4. 最后,模拟器使用 ads(_:didReceiveInvitationFromPeer:withContext:invitationHandler:)接受邀请。

笔记:

这是我正在使用的代码:

这里有一个类似的问题,但是,链接的代码很旧,无法再访问。此外,问题在于使用了相同的会话对象。

0 投票
0 回答
177 浏览

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的广告吗?

在此处输入图像描述

0 投票
1 回答
1192 浏览

multipeer-connectivity - MCSession 的距离范围是多少?

我正在开发使用 MCSession 来获取附近用户列表的移动应用程序。所以我想知道 MCSession 的范围是多少?

0 投票
0 回答
125 浏览

ios - 需要使用多点连接与不同设备共享歌曲。

要求: 我们能够从主机设备连接到多个从设备。例如,如果设备 A 向设备 B 和 C 发起连接,则贡献者设备可以接受对等连接并连接到设备 A。这里 A 是主设备,B 和 C 是贡献者设备。现在如果 B 将他们的歌曲分享给 A,A 就可以播放歌曲并查看歌曲信息。与此同时,C 将处于空闲状态,但应该连接。当 B 播放完歌曲后, C 也可以将自己的歌曲分享到设备 A。

以下是我们在完成上述任务时遇到的问题: 1. B 开始向 A 分享歌曲时,C 就崩溃了。但是 A 仍然可以播放 B 共享的歌曲。

  1. 为了克服这个问题,直接在这里传递没有索引的数组toPeers:array。它正在工作,我们能够与设备 A 共享和播放歌曲,但设备 A 无法接收歌曲信息。

以下是我们正在使用的完整代码:贡献者控制器:

主机视图控制器:

如果我在这里遗漏了什么或实现上述要求的更好方法,请告诉我们。任何帮助都非常感谢。

0 投票
1 回答
87 浏览

bluetooth - Swift:会话 sendData ,类型()不确认协议 BooleanType

我正在尝试根据本教程创建一个蓝牙聊天系统:http: //www.appcoda.com/chat-app-swift-tutorial/

我收到的错误如下:类型()不符合协议 BooleanType。

有谁知道如何解决这个问题?

在此处输入图像描述

0 投票
0 回答
60 浏览

ios - 多路连接中的断开连接问题

我们能够从主机设备连接到多个从设备。但首先设备会在共享数据时连接,它们会自动断开连接。我们已经使用了所有委托方法。

任何帮助都非常感谢,在此先感谢。

0 投票
0 回答
224 浏览

swift - Swift:MCSession 连接,但从未完全连接

我在 swift 中有一个对象来管理 MCSessions 并连接到它找到的任何对象。但是,似乎总是存在一些问题,因此当它连接到会话时,它会断开连接。

看看人们遇到的其他问题,它几乎总是由广告商、浏览器和会话之间的不同 MCPeerID 引起的。但是,我明确地为整个班级设置了一个常量 peerID。

我正在 iPhone 5S 和模拟器之间进行测试。

0 投票
1 回答
523 浏览

swift - 通过点对点同时发送字符串和 NSData?

我将类型为 (String) 的文本字段和类型为 (NSData) 的图像添加到将其发送给对等方的字典中,另一方面,它将字典解码为具有键值对的字符串。

字典中的图像数据不再是 NSData 而是一个字符串。如何同时发送字符串和数据并将其作为字符串和数据检索?

0 投票
0 回答
541 浏览

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 上发送轻量级文件需要什么?

错误图像

MultipeerConnectivity 错误图像

编程

https://github.com/amarron1/MultipeerGroupChatSwift/blob/master/MultipeerGroupChatSwift/SessionContainer.swift

参考