我想在没有GKPeerPickerController的情况下在2个带有GKSession的iPhone之间建立蓝牙连接,而不需要在任何一侧推送任何“连接按钮”。
我正在使用以下代码:
currentSessionAuto = [[GKSession alloc] initWithSessionID: @"instant-friend-auto"
currentSessionAuto.delegate = self;
currentSessionAuto.available = YES;
currentSessionAuto.disconnectTimeout = 5;
[currentSessionAuto setDataReceiveHandler: self withContext:nil];
当应用程序在双方启动时, - (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)状态在双方都被调用,状态为“GKPeerStateAvailable”。
使用“经典”应用程序时,会在两侧显示弹出窗口以询问连接,大多数情况下,“用户”都不会同时点击连接按钮。
如果我想要“自动连接”,我需要一种机制只在一侧启动会话,因为如果没有这种机制,将启动两个会话并发生错误。
任何想法/帮助?
答案 0 :(得分:4)
查看GKSessionP2P,一个演示应用程序,演示GKSession
的ad-hoc网络功能。该应用程序都在本地网络上进行通告,并自动连接到可用的对等方,建立对等网络。
答案 1 :(得分:1)
这里有一个想法:让具有最低peerID连接的对等体。您必须将PeerID字符串转换为int并进行比较,但它应该是一个很好的平局。