- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 GKSession 连接两台设备,其中一台作为服务器,另一台作为客户端。使用此配置我无法使用 GKPeerPickerController。
我在连接两个设备时遇到问题:
在接口(interface)文件中我有
GKSessionDelegate
GKSession *session;
在实现中,我使用以下代码启动服务器:
session = [[GKSession alloc] initWithSessionID:@"iFood" displayName:nil sessionMode:GKSessionModeClient];
session.delegate = self;
session.available = YES;
客户端开始使用此代码:
session = [[GKSession alloc] initWithSessionID:@"iFood" displayName:nil sessionMode:GKSessionModeServer];
session.delegate = self;
session.available = YES;
如何强制使用蓝牙而不是 WiFi?
我还实现了这些调用:
-(void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
NSLog(@"Someone is trying to connect");
}
- (BOOL)acceptConnectionFromPeer:(NSString *)peerID error:(NSError **)error {
NSLog(@"acceptConnectionFromPeer");
}
当我开始时,我将其输入调试器:
Listening on port 50775
2010-02-19 14:55:02.547 iFood[3009:5103] handleEvents started (2)
当其他设备开始查找时,我得到以下信息:
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 name=00eGs1R1A..Only by Audi regtype=_2c3mugr67ej6j7._udp. domain=local.
~ DNSServiceQueryRecord callback: Ref=17bd40, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 fullname=00eGs1R1A\.\.Only\032by\032Audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=4500
** peer 1527211048: oldbusy=0, newbusy=0
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 name=00eGs1R1A..Only by Audi regtype=_2c3mugr67ej6j7._udp. domain=local.
GKPeer[186960] 1527211048 service count old=1 new=2
~ DNSServiceQueryRecord callback: Ref=17bd40, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 fullname=00egs1r1a\.\.only\032by\032audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=7200
** peer 1527211048: oldbusy=0, newbusy=0
~ DNSServiceBrowse callback: Ref=187f70, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 name=00TF5kc1A..Only by Audi regtype=_2c3mugr67ej6j7._udp. domain=local.
~ DNSServiceQueryRecord callback: Ref=188320, Flags=2, IFIndex=-3 (name=[]), ErrorType=0 fullname=00tf5kc1a\.\.only\032by\032audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=7200
** peer 1723356125: oldbusy=0, newbusy=0
~ DNSServiceQueryRecord callback: Ref=188320, Flags=2, IFIndex=2 (name=[en0]), ErrorType=0 fullname=00TF5kc1A\.\.Only\032by\032Audi._2c3mugr67ej6j7._udp.local. rrtype=16 rrclass=1 rdlen=18 ttl=4500
** peer 1723356125: oldbusy=0, newbusy=0
我在这里缺少什么?
我确信两台设备都启用了蓝牙并连接到同一个 WiFi。
谢谢
r。
最佳答案
我认为您错过了接受与客户端的连接。收到“didReceiveConnectionRequestFromPeer”回调后,您需要接受与客户端的连接,如下所示:
-(void)session:(GKSession *)session didReceiveConnectionRequestFromPeer:(NSString *)peerID {
NSLog(@"Someone is trying to connect");
NSError *error;
[gkSession acceptConnectionFromPeer:peerID error:&error];
if(error)
NSLog(@"Error on accept connection with peer: ", error);
}
此后,您将在此处收到“GKPeerStateConnected”:
- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state{}
希望这对您有帮助。
关于iphone - GameKit:GKSession 手册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2296856/
如果我有两个 iOS 设备,都在同一个 WiFi 网络上并且都打开了蓝牙,并且我使用 GameKit(特别是 GKSession)手动设置它们之间的通信 channel (不使用 GKPeerPick
我希望 session 中的一个对等方将字符串数组发送给另一个已连接的对等方。有没有一种方法可以将这样的数组转换为NSData或我需要一个接一个地发送字符串? 非常感谢。 最佳答案 NSArray对象
我在 GameKit 上工作了一段时间。几乎一切正常。我对 session:peer:didChangeState: 有一个大问题恢复后未调用方法。 在 Apple 示例 GKRocket 中,如果应
我阅读了技术说明 TN2277当应用程序进入后台时,关闭各种网络套接字非常重要。这很可能还包括 GKSession。 他们说进入后台时需要一个过期处理程序,并且如果必须异步调用网络代码(如果必须向其他
我有许多使用 GameKit 通过 wifi 连接的设备。当对等方(客户端)接收数据时,我会弹出一个简单的 UIAlertView 。除了发送者(服务器)之外的所有其他人在发送数据时都会显示此警报 V
我当前的sessionMode是GKSessionModeServer。如果我在客户端,我会执行以下操作: [mySession sendDataToAllPeers:packet withDat
大家好,我正在使用以下代码来识别蓝牙上的可用设备。 _session = [[GKSession alloc]initWithSessionID:sessionid displayName:sessi
我们可以使用 GKSession 和 GKPeerPickerController 仅通过蓝牙连接 iPodtouch 或 iPhone,对吗? ,或者我们可以连接其他蓝牙设备吗? 最佳答案 使用 G
我想使用 GKSession 连接两台设备,其中一台作为服务器,另一台作为客户端。使用此配置我无法使用 GKPeerPickerController。 我在连接两个设备时遇到问题: 仅使用蓝牙:不可能
为了读取对等方的新显示名称,我需要终止并更新GKSession。将其设置为nil并重新启动它不起作用。在下面的代码中,未调用for循环中的NSLog来显示可用的对等节点(没有错误消息): -(IBAc
我在通过 GKSession 发送整数数组时遇到问题。 我是这样做的: 发送。 -(void)sendData { NSMutableArray *myArray = [[NSMutableA
我有一个典型的 GKSessionModeServer/GKSessionModeClient 设置。 当服务器使用 denyConnectionFromPeer: 拒绝客户端连接尝试时,客户端的 s
我可以同时实现两个GKSession,一个作为客户端,另一个作为服务器吗?使用 WiFi 和蓝牙实现此连接是否存在问题或任何限制?谢谢! 最佳答案 您可以使用 GKSessionModePeer 来执
GKPeerPickerController 是否会显示蓝牙设备的对等 ID,该设备属于暂停模式下的某个特定应用程序的一部分 场景 我有一个具有特定 session ID 的 iOS 蓝牙应用程序 X
我在两个应用程序之间有一个 GKSession。一个是服务器,另一个是客户端。服务器使客户端应用程序使用 urlscheme 命令启动另一个应用程序。 我希望发生的是,当客户端应用程序关闭时, ses
我制作了一个简单的游戏,它使用 GameKit 中的 GKSession 连接到其他点。设置起来很容易,但我发现了一些问题: 延迟变化很大。有时消息会立即到达其他设备。有时,向其他对等方发送数据的延迟
如何在GKSession开始搜索时停止下面的代码? BTM: posting notification BluetoothAvailabilityChangedNotification 2011-0
我有一个应用程序,如果用户选择设备作为服务器,它会在服务器模式下创建一个 GKSession,如果它选择 cient,它会在客户端模式下创建一个 GKSession。 目前发生的事情是服务器正在发送数
我正在开发一个 iOS 应用程序,该应用程序允许用户在本地与其他设备共享 PDF。当应用程序启动时,设备主动成为搜索正在广播文件的服务器的客户端。当客户端看到服务器时,它会在其选项卡中添加一个角标(B
我知道系统可以在应用程序挂起时关闭 Bonjour 套接字。但是,当我的应用程序在后台运行时,系统会允许我只发现其他设备而不为它们创建套接字,并可能将这些设备存储在列表或类似的东西中吗? 最佳答案 使
我是一名优秀的程序员,十分优秀!