我有一个多人游戏,它只是通过MPC处理程序连接。连接窗口显示附近的人和连接的玩家。有一个旋转活动图标,即使同伴已成功连接,它仍继续搜索旋转。它不是按钮或活动指示器视图。它只是作为处理程序的一部分存在,所以我不知道如何在玩家连接后停止它。有任何想法吗?谢谢。截图。 http://i.imgur.com/aTnCfwx.png
import UIKit
import MultipeerConnectivity
class MPCHandler: NSObject, MCSessionDelegate {
var peerID:MCPeerID!
var session:MCSession!
var browser:MCBrowserViewController!
var advertiser:MCAdvertiserAssistant? = nil
func setupPeerWithDisplayName (displayName:String){
peerID = MCPeerID(displayName: displayName)
}
func setupSession(){
session = MCSession(peer: peerID)
session.delegate = self
}
func setupBrowser(){
browser = MCBrowserViewController(serviceType: "my-game", session: session)
}
func advertiseSelf(advertise:Bool){
if advertise{
advertiser = MCAdvertiserAssistant(serviceType: "my-game", discoveryInfo: nil, session: session)
advertiser!.start()
}else{
advertiser?.stop()
advertiser = nil
}
}
func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) {
let userInfo = ["peerID":peerID, "state":state.rawValue]
dispatch_async(dispatch_get_main_queue(), { () -> Void in
NSNotificationCenter.defaultCenter().postNotificationName("MPC_DidChangeStateNotification", object: nil, userInfo: userInfo)
})
}
func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) {
let userInfo = ["data":data, "peerID":peerID]
dispatch_async(dispatch_get_main_queue(), { () -> Void in
NSNotificationCenter.defaultCenter().postNotificationName("MPC_DidReceiveDataNotification", object: nil, userInfo: userInfo)
})
}
func session(session: MCSession!, didFinishReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, atURL localURL: NSURL!, withError error: NSError!) {
}
func session(session: MCSession!, didStartReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, withProgress progress: NSProgress!) {
}
func session(session: MCSession!, didReceiveStream stream: NSInputStream!, withName streamName: String!, fromPeer peerID: MCPeerID!) {
}
}
答案 0 :(得分:0)
似乎你无法做到。该连接浏览器GUI由MPC框架提供,并且API中没有调用来压制它。
但是,如果您的应用只允许会话中的两个对等方,当您获得连接的对方的didChangeState时,您可以通过编程方式隐藏浏览器(而不是等待用户单击取消或完成。)并且您应该stopAdvertiser(因为在两个同伴加入后你不会支持更多的连接。)
我认为纺车意味着"寻找更多同行进入范围"并不意味着"用户无法点击任何按钮。"我同意你的意见,这有点奇怪。该框架允许您实现自己的连接浏览器。