Tag: multipeer连接

Swift 3 – 在视图控制器之间传递variables和函数

我目前正在制作一个testing应用程序,您可以使用多路连接来绘制和发送图片。 有一个主机的连接视图控制器和一个单独的其他同行。 当同伴连接时,主机将玩游戏,并且所有同行的视图控制器将会去图纸VCcertificate他们已经连接。 但是,当我想要在graphicsVC中发送数据时,控制台说,即使有连接的对等体,连接的对等体的会话也是0。 我可以testing,因为当断开我在控制台中得到更改状态通知。 那么有人可以告诉我我的代码有什么问题吗? 谢谢。 Ps我相当新的iOS开发,所以我的代码可能有一些主要问题。 连接pipe理器文件: import UIKit import MultipeerConnectivity class ConnectionManager: NSObject { var localPeerId = MCPeerID(displayName: UIDevice.current.name) var service = "PI-Connect" var session: MCSession var browser: MCNearbyServiceBrowser var advertiser: MCAdvertiserAssistant var connectionDelegate: ConnectionManagerDelegate? var serviceDelegate: ServiceManagerDelegate? var gameStarted : Bool override init() { self.session = MCSession(peer: self.localPeerId) self.browser = MCNearbyServiceBrowser(peer: […]

如何从当前设备的MCSession中检测到非程序化的断开连接?

为了避免出现XY问题,我会先解释一下情况。 我正在开发一个游戏,其中多个设备可以连接到一个多人游戏。 我正在使用Multipeer连接。 游戏支持2-4名玩家。 现在我需要处理一名玩家与所有其他玩家断开的情况。 除非只有一个玩家离开,否则当游戏者断开连接时游戏仍然应该继续。 但是,我希望向所有仍然连接的玩家显示一条提示,告知“XXX已断开连接”并“杀死”断开连接的玩家,另一个提醒断开连接的玩家说“断开连接”并解散游戏视图控制器。 玩家可以通过以下方式断开连接: 按下退出button closures屏幕(这使得应用程序进入显然停止所有Mutipeer连接的背景) 打开飞行模式 离别人太远了 除了第一种方式之外的任何东西都不能通过编程来控制。 我目前可以执行这样的第一个: 当用户按下“退出”button时,在调用session.disconnect()之后,我可以显示消息“您已断开连接”。 在sessionPeerDidChangeState委托方法中,我可以检测到一个玩家已经断开连接,我可以在那里显示“XXX已断开连接”警报。 但是,我不知道如何处理其他情况。 在我自己的testing过程中,我发现如果用户closures屏幕, sessionPeerDidChangeState委托方法甚至不会被调用。 即使被调用,我该如何判断设备是否被断开? 我需要知道这一点,以显示适当的信息,并决定是否“杀死”断开的玩家。 我明白,这是不可能的,由两个同行组成的会议,因为不可能确定“谁与谁断开”。 游戏无法继续只有一个球员,所以我只是要显示“所有其他球员已经离开”警惕,并解雇游戏视图控制器,如果我看到self.session.connectedPeers是空的。 我只关心有3名选手和1名选手离开的情况。 我应该能够知道哪个玩家是断开连接的,但我不知道如何。

当我们使用MCSessionState时,didChangeState响应非常慢,我们无法find原因

我们正在使用以下代码通知用户关于对等连接状态。 但有一个问题“ labelState.text = state.displayName ”在“ println ("State Changed to \(state.displayName) “)显示状态后将近10秒钟更改标签文本。是否有人面临同样的问题。 func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) { println("State Changed to \(peerID.displayName)") labelState.text = peerID.displayName }

蓝牙Multipeer连接?

我开始做广告,开始浏览。 当在同一个WiFi,它的工作 。 但是,当我closuresWiFi, 只留下蓝牙 ,甚至-(void)browser:(MCNearbyServiceBrowser*) browser foundPeer:(MCPeerID*) peerID withDiscoveryInfo:(NSDictionary*) info被调用。 我是否必须表明以某种方式明确地在蓝牙上做广告 ? 还是应该这样无缝地工作? 与GameKit有一个这样的设置。 我在MC找不到任何类似的东西。

Swift MultipeerConnectivity崩溃DateComponents unconditionallyBridgeFromObjectiveC

我有一个可重复的崩溃,以EXC_BREAKPOINT结尾,如下图所示: 重现崩溃的步骤: 连接两个设备 使用func sendResource(at resourceURL:URL,withName resourceName:String,toPeer peerID:MCPeerID,withCompletionHandler completionHandler:((Error?) – > Void)?= nil) – > Progress? 通过调用func disconnect()来断开启动传输的设备 编辑:通过调用Progress.cancel()重现崩溃的另一种方法步骤: 连接两个设备 开始传输并存储Progress对象, 让进度:Progress = session.sendResource(…) 调用取消进度对象,导致其他设备上的崩溃progress.cancel() 我在代码行didFinishReceivingResourceWithName: func session(_ session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, at localURL: URL, withError error: Error?) { // transfer to local URL MusicDownloadRequestor.sharedInstance.finishReceivingSongUploadAtLocalURL(tempUrl: localURL) } 看起来不像我的代码被称为堆栈跟踪… * thread #25: […]

iOS:如何在一个iPad中像App一样开发iPad应用程序成为pipe理员和同一个App的其他iPad成为Listner

我需要创build一个以下要求的iPad应用程序: 假设有4个iPad安装了这个应用程序。 现在,iPad应用程序之一成为演讲者,所以其他3个具有相同应用程序的iPad自动成为监听器。 现在,Presenter iPad的用户将从应用程序的照片库中滑动图片。 所以同样的图片应该会自动从听众所有3个iPad的应用程序照片库中滑出。 我search了很多,但我什至不知道如何实现这个function。 我可以使用点对点networking来实现这个function吗? 请帮助我下面的主题: 有没有我可以用来实现这个function的任何外部框架。 我应该使用哪个框架来启动这个应用程序。 点对点框架能够实现这一function。 我只想提示如何启动这个应用程序? 提前致谢……

应用程序在后台运行的多设备连接

我想连接2个设备使用multipeer连接框架,其中一个设备是在后台运行的应用程序,就像Firechat一样(我不能确认这是工作,我已经安装在iPhone 5S和4,但他们只是找不到对方 – 但我已经读过这个作品)。 什么是达到这个目的的最好方法? 我从示例代码中使用以下两个方法: -(void)setupPeerAndSessionWithDisplayName:(NSString *)displayName{ _peerID = [[MCPeerID alloc] initWithDisplayName:displayName]; _session = [[MCSession alloc] initWithPeer:_peerID]; _session.delegate = self; } -(void)setupMCBrowser{ _browser = [[MCBrowserViewController alloc] initWithServiceType:@"chat-files" session:_session]; } -(void)advertiseSelf:(BOOL)shouldAdvertise{ if (shouldAdvertise) { _advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"chat-files" discoveryInfo:nil session:_session]; [_advertiser start]; } else{ [_advertiser stop]; _advertiser = nil; } } 当我在前台运行应用程序时,会发现其他设备完美无缺,并且连接。 但是,如果我将其中一个应用程序置于后台,background-app-device将不再可见。 我已经阅读了这个: […]

iOS:同时使用WiFi和移动数据

build立: 我的项目涉及到摄像头,它创buildWiFi热点,为了stream媒体上的video预览/浏览用户需要连接到摄像头的热点。 问题: 用户不能同时使用3G / 4G上的蜂窝数据,因为iOS设备已经通过WiFi连接到相机。 我试过了什么? /调查 通过设置静态IP,子网掩码和所有其他字段为空来定制WiFi热点。 如预期的那样,iOS通过显示3G连接的移动数据连接到互联网,也无声地连接到WiFi。 该解决scheme需要向用户显示如何configurationWiFinetworking连接的细节,这不方便用户。 MultiPeer连接 只能用于苹果设备 我想要什么? 有没有办法做到这一点编程? (我想提交到App Store – 没有私人API) 有没有其他的select呢? 任何其他的方向来解决这个问题?

iOS多对等连接显示两次相同的设备名称

我正在使用iOS 7多对等技术来连接我的iPad和iPod touch。 但是,每当iPod touch或iPad进入hibernate状态,它将被断开连接,这是很好的,因为多对端不工作在后台模式,但是当我再次发现它显示在MCBrowserViewController列表中的iPod名称两次。 试了每个示例代码,每个代码都有同样的问题,任何人都知道如何解决这个错误。 也有一个奇怪的问题与MCBrowserViewController如果我连接设备和其他设备接受它,即使它被连接MCBrowserViewController仍然会显示为连接和"Done"button被禁用。 我使用MCBrowserViewController并没有自定义代码,所以我想这是苹果的问题。 当应用程序从睡眠模式回到活动状态时,任何人都知道如何直接连接到设备?

适用于多达45个设备的Multipeer连接性框架

我希望能够使用Multipeer连接框架,并希望有关如何最好地继续进行的任何经验的声音。 我需要“教练”设备和最多45个“播放器”设备之间的连接。 他们都将在同一个空间,但没有办法预测WiFi的可用性或连接。 教练装置需要每秒向所有玩家装置发送指令(小数据包)。 每个“玩家”需要每隔一秒钟将蓝牙心率监测器(非常小的数据包)的读数发送回教练。 由于每个会话的最大对等点数是8,这些想法中的任何一个都适用于我需要的数字吗? a)与教练build立连接的前7名球员设备宣告不同的会话types,并允许7个(或者这是6个?)更多的玩家join他们。 前7名球员通过传递教练的指示,将所收集的数据传回给教练,作为其他49人(或42人)的中间人。 指导与心读之间有几秒钟的滞后不是首选,但可以。 b)教练装置创build并通告一​​个会话。 在7个播放器设备已经连接之后,教练装置创build另一个会话并重复7次。 重复,直到所有的球员设备连接到教练。 这似乎不太可能奏效,但是如果不了解Multipeer Connectivity的魔力,那么这个想法就是一种select。 c)教练与玩家设备1build立会话,玩家设备1以菊花链forms连接到设备2 …。 当每个设备接收到指令时,它将自己的读取添加到数据包并发送。 最后一个设备将整个数据包返回给教练。 我无法预测一轮数据需要多长时间,而且如果有一个设备离开了这个组,那也似乎很麻烦。 任何build议或使用Multipeer连接框架45个左右的设备经验的声音,将不胜感激。