问题标签 [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.
swift - 使用 MCSession Swift3 时,scheduledTimer 不会被触发
我为我的在线游戏制作了 GKMatch 和 MCSession 包装器。它在 Swift2 上运行良好,但在 Swift3 上我遇到了一个奇怪的问题。
当我使用 GKMatch 运行游戏时,它运行良好,没有问题。当我切换到 Nearby 播放器模式并启动 MCSession 时,我的游戏一直在运行,直到我到达 scheduleTimer。
在 GKMatch 上完美地调用了相同的计时器函数,但现在它没有被触发。
所有调用都与包装器使用相同的委托与软件的其余部分进行交互相同。
我看不出代码有任何明显的问题。
真正奇怪的是程序根本没有崩溃,只是因为计时器功能没有被触发,它停在游戏逻辑没有进一步运行的点上。
swift - 类型“类”不符合协议“MCSessionDelegate”
我正在将我的代码从 Swift 2.X 迁移到 3.X,并且已经解决了我的大部分运行时错误,除了一个不断出现的错误。我拥有所有必需的功能,并且已经清理并删除了派生数据,但它仍然说我的类不符合“MCSessionDelegate”。`
这是协议的代码`
swift - 无法在 AR 多用户中使用 NSKeyedUnarchiver 取消归档自定义对象
我正在使用在 multiuserMultipeerConnectivity
中共享位置。
当我归档(使用)
和取消归档(使用)
时
,一切正常,但现在我正在尝试发送这样的自定义对象:SCNNodes
AR session
NSKeyedArchiver.archivedData(withRootObject: someARNode, requiringSecureCoding: true)
if let node = try NSKeyedUnarchiver.unarchivedObject(ofClass:SCNNode.self, from: data) {
当我尝试取消归档收到的对象时,NSKeyedUnarchiver.unarchivedObject
它让我出错。
我收到语法错误:Incorrect argument label in call (have 'ofClass:from:', expected 'ofClasses:from:')
但是如果我按照编译器的建议更改函数:
我得到下一个语法错误:Cannot convert value of type 'ARUser.Type' to expected element type 'AnyObject.Type'
所以,这里的问题是,取消归档自定义对象的正确方法是什么?
ios - MultipeerConnectivity 拒绝连接
我正在尝试在两个设备之间建立蓝牙连接,这是我的代码:
和扩展:
由于某种原因,设备陷入“连接”状态,最终解决为“拒绝”状态。我不喜欢使用MCNearbyServiceAdvertiserDelegate
and MCNearbyServiceBrowser
。我在这里想念什么?
swift - Multipeer Connectivity - 在 Swift 5 中获取文件传输(互联网)速度和文件大小
我正在点对点传输照片。一切正常,但我无法获得照片(文件)传输速度以及互联网速度。像 MB 一样,文件被传输。其次,我想获取该文件的大小。
我们正在使用数据格式传递照片MCSession
由于隐私问题,我无法在此处添加项目代码,但我将分享我关注的参考 github 项目。在项目中,我正在传递字符串,在我的情况下是它的照片。一切都是一样的。
我检查了 Stackoverflow,但没有找到任何准确的答案!
参考项目链接: https ://github.com/YogeshPateliOS/MultipeerConnectivity-.git
谢谢你!
ios - Bonjour 在使用 iOS 15 时遇到问题,检测到“本地网络”设置
从 iOS 15(可能还有 iOS 14)开始,我一直无法让 Bonjour 正常工作(现在可以正常工作了)。我正在使用MCSession
,MCAdvertiserAssistant
和MCNearbyServiceBrowser
. 我的委托方法都没有被触发。那是无线电静默。(之前的 iOS 版本一切正常。)
最终,我发现我必须Local Network
在设备设置中打开我的应用程序的开关。没有关于此的文档,Apple 也没有为应用程序提供检测开关是否关闭的简单方法。
我找到了一篇关于 Bonjour 的论坛帖子,Local Network Privacy FAQ,
由 Quinn “The Eskimo!”撰写。(Apple 开发人员技术支持)。 https://developer.apple.com/forums/thread/663858。常见问题解答 #9,标题为How do I tell whether I’ve been granted local network access?,
提供了解本地网络开关是否关闭的间接方法。该常见问题解答说:
如果您使用的是 Bonjour,如果您的 Bonjour 操作因您没有本地网络访问权限而失败,您将收到 kDNSServiceErr_PolicyDenied (-65570) 错误。
我能找到的所有返回错误的方法(例如 MCSession's sendData:toPeers:withMode:error:
)都取决于我传递本地对等 ID,但我没有任何对等 ID(除了我自己的),因为我的委托方法都没有返回任何信息(这就是我了解附近同行的方式)。如果我没有提供 peerID,那么我从该方法得到的错误是关于没有提供有效的附近对等 ID,而不是kDNSServiceErr_PolicyDenied
我正在寻找的错误。
FAQ线程被锁定,所以我不能在那里问这个问题。
我使用什么方法来获取kDNSServiceErr_PolicyDenied
错误?
我正在使用 Objective-C 和 Xcode 13.2.1。
仅供参考,我的 Info.Plist 包括以下键:(NSBonjourServices
带有 _MyServiceType._tcp 和 _MyServiceType._udp 的数组)NSBluetoothAlwaysUsageDescription
、、、NSBluetoothPeripheralUsageDescription
和NSLocalNetworkUsageDescription
。