问题标签 [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.
ios - MCSession 需要很长时间才能解除分配
我正在使用多点连接。
会话结束时,应用程序进入主菜单,所有网络内容都被释放,然后被释放。
但是我的 dealloc 方法是在主线程中调用的,MCSession
对象需要很长时间才能释放自己,我不知道为什么,因此主菜单屏幕冻结。
如果有人知道为什么MCSession
会这么长,我很感兴趣。但是如果它来自 MCSession 本身,这样做是一个好的解决方案吗?
编辑:不,这绝对不是一个好的解决方案,因为它使我的应用程序崩溃。无论如何,其他想法?
multipeer-connectivity - MCNearbyServiceAdvertiser 委托方法从未被调用
使用多点连接框架和附近服务(浏览器和广告商)在设备之间实现具有自动连接以交换少量数据的应用程序。
我建立了一个处理所有连接细节的会话管理器。它的委托是一个视图控制器,以便在接收到数据时处理 UI 的更新。
会话管理器构建:
- 服务广告商,代表是会话管理器
- 服务浏览器,代理也是会话管理器
在两台设备上启动应用程序(一台在 Xcode 下获取日志,另一台独立),我通过服务浏览器委托相应的方法收到一条 Found Peer 消息。
正如另一条消息中所述,我比较了 MCPeerID 的 displayName 属性(本地和来自接收的 Peer)来决定两者中的哪一个将发送邀请,从而避免交叉邀请。
正如这里的另一条消息所述,我还添加了“可选”MCSession 委托方法- (void)session:didReceiveCertificate:fromPeer:certificateHandler:
但是,(void)advertiser:didReceiveInvitationFromPeer:withContext:invitationHandler:
从不调用 MCNearbyServiceAdvertiser 的委托方法。(void)session:peer:didChangeState:
在方法中设置超时后,MCSession 委托方法只收到一条 NotConnected 消息invitePeer:toSession:withContext:timeout:
。
在提出的各种选择中:
- Session 初始化为 security nil 和 MCEncryptionNone;
- 发现信息为零;
- 邀请中发送的上下文只是一个归档为 NSData 的短字符串。
要进行故障排除:
- 我检查了所有项目是否存在(会话及其委托、广告商及其委托)。
- 只要应用程序处于活动状态,服务浏览器和广告商就永远不会停止。
我现在不知道在哪里看!
ios - 子类化委托问题
我用这个在父类中创建一个 MCSession:
我有两个子类,它们都是父类的子类。我尝试记录每个子类中连接的对等点的数量,都返回 0。此外,在记录时self.mySession
我得到这个:
我从未将代表设置为孩子,但似乎认为 MCSession 代表已更改为孩子,而不是与父母呆在一起。每个子视图控制器都说它是委托,我认为为此每个子 VC 都应该说父是委托。我错过了什么?
另外:我正在使用情节提要。两个子 VC 都是嵌入在 NavigationController 中的控制拖动推送序列。导航控制器 > 父级 > 孩子 1 和孩子 2
ios - 将传入的 NSStream 转换为 View
我成功地发送了一个 NSData 流。下面的委托方法是获取该流并附加到 NSMutableData self.data。如何获取这些数据并将其转换为 UIView/AVCaptureVideoPreviewLayer(应该显示视频)?我觉得我错过了另一个转换, AVCaptureSession > NSStream > MCSession > NSStream > ?
我用这个发送流:
ios - 为 MCSession 授权证书
我在钥匙串中创建了一个自签名证书,并且正在使用 MultipeerConnectivity 框架在设备之间传输数据。
当我们创建会话时,我们可以在 MCSession 中邀请对等方时传递 securityIdentity。
但是 securityIdentity 是 NSArray,我们如何在 NSArray 中传递证书以及如何在其中进行身份验证
ios - iOS McSEssion 中的证书
在 iOS MCSession 中,您可以使用以下方法 initWithPeer:securityIdentity:encryptionPreference 初始化该部分:
大多数在线教程作者都将 securityIdentity 设为 nil。但是,我想知道如果将 nil 留给真正的应用程序是否会造成任何损害(被黑客入侵)。如果是这样,如何为此生成一个 SecIdentityRef?
我发现了以下关于 iOS 中的安全性的文章/讨论,但仍然无法将 SecIdentityRef 与 MCSession 连接起来。
感谢您在我的问题上花费宝贵的时间,任何评论都会有所帮助。
在 iOS 上保护和加密数据:http: //code.tutsplus.com/tutorials/securing-and-encrypting-data-on-ios--mobile-21263
如何在 iPhone 钥匙串中建立 SecIdentityRef?(没有 .p12): 如何在 iPhone 钥匙串中建立 SecIdentityRef ?(没有 .p12)
Generate key pair on iphone and print to log as NSString: Generate key pair on iphone and print to log as NSString
ios - 一次具有多个会话的多人框架?
我正在尝试构建一个多对等网络应用程序,并且我已经为两个用户之间的单个对话做好了一切工作,但是目的是构建一个主-> 详细应用程序,例如 whatsapp,其中您有一个对话列表并点击一个带你进入对话。我遇到的问题是维护多个会话的所有家务。
我的结构是我有一个“对话管理器”,它有一个“对话”数组,它们是具有一系列消息的 MCSession 的包装器。当对话开始时(通过邀请收件人或接受邀请),对话对象(会话)被添加到数组中,该数组是主表视图的数据源。当从列表中选择对话时,在准备转场时,我将对话对象传递给详细视图控制器,并且它的消息数组成为详细屏幕的数据源。
我在尝试使其正常工作时遇到了许多问题,例如消息未在当前不在屏幕上的对话中传递,保持所有会话处于活动状态,不允许同一两个人之间进行多个单独的对话等。
我的具体问题是,大多数示例和教程,包括 Apple 示例应用程序,都集中在一次对话、一个活动会话上。我是在浪费时间试图让这个工作。IE。该框架是否仅设计为一次容纳一个活动会话?
ios - 多点连接中的会话
有A、B、C、D四个设备,A接B,C接D,A接C,但B和C距离太远,无法连接。
- A 和 C 在同一个会话中吗?
- B 和 D 在同一个会话中吗?
- 他们在会话中如何沟通?
- 根据 MCSession 的参考,会话目前最多支持 8 个 peer,但是有 8 个以上的 peer,它是如何工作的?
ios - 在 iOS 模拟器和设备之间使用 MCSession 发送文件
我有一个 iPad 应用程序,它需要使用对等 Apple 的 Multipeer Connectivity 库将文件从一台设备发送到另一台设备。该文件是一个 zip 文件(我正在使用适用于 iOS 的 ZipArchive:https ://github.com/mattconnolly/ZipArchive ),我正在使用 iOS 模拟器和一台 iPad 设备对其进行测试。当我将文件从 iPad 发送到模拟器时,它总是可以完美运行,但是当我尝试将它从模拟器发送到设备时,它 90% 的时间都失败了。zip 文件通过,但最后缺少几千字节,因此无法解压缩。我正在使用 MCSession 类,它是用于传输的 sendResourceAtURL 函数:
- 我在 didFinishReceivingResourceWithName 委托方法(在后台线程上运行)中提取文件。
- 所有 NSError 变量都为零(发送和接收时),没有任何迹象表明有任何问题。
- 文件的大小并不重要,它在 20 Kb 和超过 1 MB 时的行为方式相同。
- 两个对等方在传输期间(或之后)永远不会断开连接。
我记录了发送和接收文件的文件大小 3 次:
我目前只有一台 iPad,想弄清楚为什么它只能在一个方向上工作。有任何想法吗?
xcode - 尝试在 Swift 的多点连接测试应用程序中使用 NSNotification
一直在关注本教程:
http://www.appcoda.com/intro-multipeer-connectivity-framework-ios-programming/
但一直在将其转换为在 Swift 中工作。但是,在以下问题上遇到了问题:
这是造成麻烦的最后一行,我已经做到了这一点:
但无法将“状态”条目转换为 MCSessionState 类型,出现错误:
任何人都可以帮助...?对 Swift 来说很新,如果这是一个明显的问题,很抱歉......
非常感谢,佛朗哥。
9 月 9 日更新:
首先设置 userInfo 对象的代码如下,据我所知,调用 toRaw() 方法应该只是意味着它把它当作存储一个 Int ...?在这种情况下,我不知道为什么您的原始答案不起作用...
更新 2 9sep:
知道了 !如果其他人遵循相同的教程,则转换函数的完整工作版本如下。非常感谢您的帮助 Edwin Vermeer: