Tag: multipeer连接

iOS上的对等networking

我已经在这几天了,似乎无法find解决办法。 我想在iOS上通过wifi创build点对点networking。 所有开源代码似乎都支持运行一个服务器或作为一个客户端,但没有任何代码可以支持两者 – 一个同行。 有人知道我可以做到这一点吗?

Swift的计算属性不能在init中使用?

我正在尝试与Swift一起使用MultipeerConnectivity框架。 我有以下属性: var peerId: MCPeerID?; let advertiser: MCNearbyServiceAdvertiser; let browser: MCNearbyServiceBrowser; var session: MCSession? …. 在我的init方法中,我初始化所有存储的属性,如下所示: init() { let defaults = NSUserDefaults.standardUserDefaults(); let dataToShow = defaults.dataForKey("kPeerID"); peerId = NSKeyedUnarchiver.unarchiveObjectWithData(dataToShow) as? MCPeerID; if !peerId { peerId = MCPeerID(displayName: UIDevice.currentDevice().name); let data: NSData = NSKeyedArchiver.archivedDataWithRootObject(peerId); defaults.setObject(data, forKey: "kPeerID"); defaults.synchronize(); } advertiser = MCNearbyServiceAdvertiser(peer: peerId, discoveryInfo:nil, serviceType: "stc-classroom"); […]

iOS Multipeer连接框架invitationHandler似乎不接受?

我第一次使用mutlipeer连接框架,我想编程(而不是助理类)控制。 当我在两个单独的设备上运行我的代码,直到“广告客户”收到委托callback的时候,所有内容都按照上述说明进行操作: 浏览客户端的代理callback在发现广告商时被调用: -(void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info{ [[[UIAlertView alloc] initWithTitle:@"Peer Found" message:peerID.displayName delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] show]; _session = [[MCSession alloc] initWithPeer:_myPeerID]; _session.delegate = self; //connect to the discovered peer. [_browser invitePeer:peerID toSession:_session withContext:nil timeout:30.0]; [_browser stopBrowsingForPeers]; } 然后广告客户端的代表callback在接收到邀请时被调用: -(void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void (^)(BOOL, MCSession *))invitationHandler{ //when my code runs, […]

Multipeer连接框架 – 丢失的对端停留在Session中

我想知道这个Multipeer连接框架是否准备好在现实世界中使用,考虑到社区遇到的所有错误。 我想我正在设置它,但我尝试过的所有其他示例项目都遇到类似的问题。 我遇到的问题可能与Bonjour固有的一些问题有关,我无法弄清楚,但基本上问题如下: 我有一个活跃的MCSession与一些同龄人。 现在,如果一个设备正在一个会话中,然后强制退出 ,那么“对等”将保持无限期的连接状态。 即使browser:lostPeer:方法被该对等方调用,甚至不再在浏览器中显示为“Nearby”,我也无法强制该用户出去。 session:peer:didChangeState:方法不被该对等方调用。 当强制退出的对等方回到应用程序时, browser:foundPeer:withDiscoveryInfo:再次“find” browser:foundPeer:withDiscoveryInfo:但仍存在于session.connectedPeers NSArray中。 很明显,他们还没有收到有关会议的任何数据或更新,实际上并没有连接。 唯一似乎将原始对等体注册为MCSessionStateNotConnected到会话的工作是将该对等MCSessionStateNotConnected连接到原始会话。 然后session:peer:didChangeState:重复呼叫session:peer:didChangeState:其中peerID的新实例是MCSessionStateConnected并在peerID的旧实例调用MCSessionStateNotConnected 。 示例聊天应用程序很好地演示了这个问题: https : //developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html 由于似乎没有任何方法可以手动强制从会话中删除对等方,我该怎么办? 我应该尝试重build会议吗? 这个框架似乎有点混乱,但我试图保留判断!

接受邀请多对等连接

我希望我不会通过发布这个问题来违反NDA。 我正在使用新的多路连接,使用蓝牙发送一些文件到附近的设备。 我设法发送邀请,但我似乎并没有得到如何显示一个UIAlertView用户可以接受或拒绝邀请。 当用户发送时,文件自动保存并且没有接受/拒绝警​​报。 代码是: – (void) advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler{ … save the data context 但警报: – (void) advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler{ DevicePeer = [MCPeerID alloc]; DevicePeer = peerID; ArrayInvitationHandler = [NSArray arrayWithObject:[invitationHandler copy]]; // ask the user UIAlertView *alertView = [[UIAlertView […]

重新连接到断开的同伴

我在我的应用程序中使用iOS 7 Multipeer框架,但遇到设备断开连接的问题。 如果我在两个设备(设备A和设备B)中打开应用,则两个设备会自动相互连接。 然而,几秒钟后,设备A从设备B断开。即,首先,连接如下: A —> B A <— B 几秒钟后: A —> B AB 设备A维护它的连接,但设备B得到一个MCSessionStateNotConnected。 这意味着A可以向B发送数据,但是B不能应答。 我试图通过检查设备是否连接,如果不是,重新启动连接使用: [browser invitePeer:peerID toSession:_session withContext:Nil timeout:10]; 但是didChangeStatecallback只是用MCSessionStateNotConnected调用。 奇怪的是,如果我发送应用程序A的背景,然后重新打开它,B重新连接到它,并保持连接。 Multipeer API(和文档)似乎有点稀疏,所以我认为它会工作。 在这种情况下,我应该如何重新连接设备?