标签: gamekit

使用iOS GameKit的"Bluetooth Bonjour"与其他平台

我有兴趣通过蓝牙连接到基于iOS的设备.我可以看到"本地网络"服务已公开,但我找不到任何有关它的额外信息.存储在密钥0x0204下的属性看起来像Bonjour密钥.

使用哪种协议?如何使用Linux,Mac或配备蓝牙芯片的自带嵌入式设备与iOS设备通信?

这是在OS X下使用蓝牙资源管理器提取的SDP数据,而iOS设备运行Gameloft的Star Battalion.

    {
        0x0000 = uint32(1330188565),
        0x0200 = uint32(2),
        0x0202 = string(004wD7l1A..0|0|0|ivucic-À'),
        0x030a = uint32(0),
        0x0009 = { { uuid16(11 15), uint16(256) } },
        0x0201 = string(_657o30a6rmst07À),
        0x0005 = { uuid16(10 02) },
        0x0100 = string(Local Network),
        0x0001 = { uuid16(11 15) },
        0x0203 = string(004wd7l1a..0|0|0|ivucic-_657o30a6rmst07À
        0xf000 = uint8(2),
        0x0204 = string(    txtvers=1state=A),
        0x0008 = uint8(255),
        0x0006 = { uint16(25966), uint16(106), uint16(256), uint16(26226), uint16(106), uint16(272), uint16(25701), uint16(106), uint16(288), uint16(27233), uint16(106), uint16(304) },
        0x0004 = { { uuid16(01 …
Run Code Online (Sandbox Code Playgroud)

networking bonjour bluetooth gamekit ios

68
推荐指数
1
解决办法
8073
查看次数

通过蓝牙在iOS和Android之间传输数据?

我一直在阅读如何使用GameKit通过蓝牙在iOS设备之间传输数据.我本身并不是在编写游戏,但确实需要在两个设备之间传输少量二进制数据.在两个iOS设备之间,这很容易.但是,我想知道是否可以通过相同的机制在iOS设备和Android设备之间传输数据.

有没有人遇到过可以解释如何执行此操作的文档/教程?它在技术上是否可行?或者苹果公司是否提出了某种限制措施来防止这种情况发生?

我发现的另一个选择是Bonjour通过蓝牙.对于这种类型的操作,这是一个更合适的选择吗?

android bonjour bluetooth gamekit ios

59
推荐指数
1
解决办法
31万
查看次数

GameKit配对无法实现3G连接

我正在为iOS制作多人游戏,我在Apple开发者中心阅读了这个材料,特别是这个.这是我的自定义配对代码,非常简单:

- (void)findProgrammaticMatch {

    GKMatchRequest *request = [[GKMatchRequest alloc] init];
    request.minPlayers = 2;
    request.maxPlayers = 2;
    request.defaultNumberOfPlayers = 2;
    request.playersToInvite = nil;
    request.playerAttributes = 0;
    request.playerGroup = 0;

    UILabel *loading = (UILabel *)[aiw viewWithTag:792];

    [[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch *match, NSError *error) {
        if (error){

            //error handling
            [loaderLayer stopAnimating];
            UIButton *cancelButton = (UIButton *)[loaderLayer viewWithTag:442];
            [cancelButton setTitle:@"Go Back" forState:UIControlStateNormal];
            loading.text = @"Cannot find any players. Please try again later.";

        } else if (match != nil) {

            //save match
            self.match …
Run Code Online (Sandbox Code Playgroud)

objective-c gamekit ios

35
推荐指数
1
解决办法
431
查看次数

原则上,Android设备是否可以通过蓝牙/ GameKit与iPhone连接?

(我对纯理论不感兴趣,但作为实际的近期或中期可能性,比如在12-24个月内.)

作为一个熟悉(但不专注于)两个主要智能手机平台的开发人员,我是否应该期待一个可以将自己欺骗到iPhone应用程序基于GameKit的网络上的Android库.平台之间的蓝牙接口可能会为制作有用的应用程序提供机会,这与调制解调器通过Metcalfe定律使PC/Mac平台受益的方式相似.

我正在寻找两个答案之一:

  1. 这显然不太可能(例如因为加密)?如果是这样,原因是什么?原则上是否可行,但需要多年的逆向工程(如SMB/CIFS/Samba)?或者这是一个不用脑子,只是时间问题?请提供证据支持您的理由.

  2. 除了GameKit之外,还有另一种方法可以拥有直接的点对点网络吗?例如,使用蓝牙或ad-hoc WiFi的手动网络?将Android设备欺骗到现有的iPhone应用程序会很不错,但我的主要问题是,这些设备可以互相说话吗!

iphone android bluetooth gamekit

25
推荐指数
1
解决办法
9183
查看次数

使用NSCoder对NSArray或NSDictionary进行编码

我想知道是否可以使用NSCoder方法:

- (void)encodeObject:(id)objv forKey:(NSString *)key
Run Code Online (Sandbox Code Playgroud)

编码NSArray或NSDictionary的实例.如果不是,你怎么去编码呢?我正在尝试使用NSKeyedArchived/NSKeyedUnarchiver使用GameKit在手机之间发送数据.我试过它,似乎无法检索我存储在我的数组中的字符串.我创建的数据包类与数据包类型整数一起出现,但不是数组中的数据.

提前致谢!

iphone nskeyedarchiver nsarray gamekit

18
推荐指数
3
解决办法
3万
查看次数

如何将NSNumber转换为NSData?

我需要通过GameKit传输一个整数,sendDataToAllPeers:withDataMode:error:但我不知道如何将我的NSNumber转换为NSData以便发送.我目前有:

NSNumber *indexNum = [NSNumber numberWithInt:index];
[gkSession sendDataToAllPeers:indexNum withDataMode:GKSendDataReliable error:nil];
Run Code Online (Sandbox Code Playgroud)

但很明显,在我发送之前,indexNum需要转换为NSData.有人知道怎么做吗?

谢谢!

iphone objective-c nsdata gamekit ios

18
推荐指数
2
解决办法
2万
查看次数

在Game Center中重新连接播放器

我正在使用GKMatch类为游戏中心搞清楚如何以一种好的方式重新启动断开连接的玩家.该游戏是1对1游戏.

当我检测到一个断开连接的玩家时,我尝试将该特定玩家重新用于此次调用的匹配:

[[GKMatchmaker sharedMatchmaker] addPlayersToMatch:theMatch matchRequest:request completionHandler:^(NSError *error)
Run Code Online (Sandbox Code Playgroud)

这可以按照预期的方式工作.当其他玩家建立了连接时,他会重新获得并且匹配可以继续.但这留下了一个我无法解决的问题.场景如下:

  • 播放器1断开连接.
  • 当玩家1断开连接时,玩家2离开比赛.
  • 播放器1重新连接并检测到他失去了与播放器2的连接并尝试重新连接到播放器2.
  • 玩家2正在寻找新匹配,他正在使用matchmakerViewController.
  • 玩家2突然加入了与他离开的玩家1的旧比赛.

所以我的问题是matchmakerViewController允许玩家加入旧比赛,如果他们被重新激活.有没有更好的方法来处理这种重新连接方案,这样人们就不会被邀请回旧的比赛?

iphone objective-c gamekit ios game-center

18
推荐指数
1
解决办法
1494
查看次数

"您输入的应用程序名称已被使用",即使我刚刚创建了应用程序

我正在尝试在iTunes Connect上创建我的应用程序,因此我可以添加我的游戏中心功能.当我到达我填写默认语言,应用程序名称,sku编号和包ID的屏幕时,我收到一条错误消息:

The App Name you entered has already been used.
Run Code Online (Sandbox Code Playgroud)

这是否意味着其他人使用过此应用ID?我无法在iTunes Store的任何地方找到具有此名称的应用程序.

我刚开始在iTunes Connect上创建应用程序,所以我绝对没有使用它.

有没有办法验证这不是一个错误,而其他人选择了这个名字?

itunesconnect app-store gamekit game-center

17
推荐指数
3
解决办法
2万
查看次数

为回合制多人iPhone游戏构建自己的游戏服务器

游戏套件编程指南 ...

多人游戏允许有兴趣玩在线多人游戏的玩家互相发现并连接到比赛中.根据您的需要,您的应用程序可以使用Game Kit将所有参与者连接在一起,或让Game Kit为您提供一系列玩家.在后一种情况下,您将提供自己的网络实现,将播放器连接到您提供的服务器

我想为游戏中心构建一个基于回合制的多人游戏iPhone游戏,并且需要编写我自己的游戏服务器.我计划使用Game Center API进行玩家身份验证,记分牌和配对玩家,但我仍然需要构建自己的回合制游戏服务器来控制多人游戏通信.这是一个基于时间的游戏,因此服务器将处理诸如同步游戏开始和在游戏完成时通知玩家以及匹配结果之类的事情.在这一点上,我只想弄清楚从哪里开始构建游戏服务器,我真的很难找到任何覆盖的好资源......

  1. 如何构建和实施基于回合制的游戏服务器.理想情况下,我想找一本书或在线文章,其中包含一些代码,但我读过的每本书都讨论了iPhone上的多人游戏,同样的事情,"开发Web服务器超出了本书的范围,但我们我将专注于连接到这样一台服务器所需的客户端代码." .我在哪里可以找到有关开发Web服务器的信息?!

  2. 要使用的好库/ API

  3. 安全问题和常见解决方案
  4. 现有的开源软件包
  5. 我一直想为其他即将开展的项目学习Ruby on Rails,我想一举两得,这个框架能否很好地实现回合制游戏服务器?

任何人都可以帮我引导一些涵盖这个主题的好书或在线资源吗?或直接回答我的问题?我不得不认为开发游戏服务器对于任何为iOS游戏中心构建游戏的人来说都是一个非常普遍的问题,因为大多数都是多人游戏,但我无法弄清楚为什么没有资源可以解决它的工作原理.

非常感谢您的帮助!

iphone ruby-on-rails gamekit ios

16
推荐指数
1
解决办法
5064
查看次数

iOS开发:验证Game Center用户的奇怪问题

我正在构建一款支持Game Center(GC)的iPhone游戏.当应用程序启动时,我尝试验证本地播放器...

 if([GKLocalPlayer localPlayer].authenticated == NO)
    {
        [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) 
         {
             [self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error];
         }];
    }
Run Code Online (Sandbox Code Playgroud)

一切似乎都运作良好.如果用户在应用程序启动时未登录GC,应用程序将显示一个对话框,为其提供三个选项...

  1. 登录现有帐户
  2. 创建一个帐户
  3. 取消

这是所需的行为,但在我测试时,我点击了"取消"选项,现在每次都出现身份验证过程错误,出现以下错误"请求的操作已被取消".即使我删除了应用程序并重新安装它,它仍然会出错,并且该对话框现在永远不会弹出.

有谁知道为什么会发生这种情况或我如何解决它?

提前感谢您的智慧!

iphone gamekit ipad ios game-center

16
推荐指数
1
解决办法
7029
查看次数