标签: gamekit

使用GameKit在iPhone之间传输CoreData数据

我有一个应用程序,我希望在两个iPhone之间交换通过Core Data管理的信息.

有没有人尝试过这个,如果有的话,这被认为是最好的方法(即人们在文件中使用某些中间格式,如XML或JSON,或者可以直接传输对象).

如果问题在范围内显得过于夸张,我表示道歉,但我正处于需要决定转移方法的阶段,而且我没有使用此API的经验.

对于使用GameKit在设备之间传输对象的任何代码示例或任何此类示例的链接,我将非常感激.

iphone core-data objective-c transfer gamekit

3
推荐指数
1
解决办法
2246
查看次数

GKSession sendData的实际数据大小限制是什么:toPeers:withDataMode:error:?

我应该在什么时候将NSData对象分解为多个对象,或者使用第三方数据源在GKSession蓝牙对等体之间发送数据?

iphone gamekit ios4

3
推荐指数
1
解决办法
661
查看次数

iOS 蓝牙数据传输、Gamekit 或 Bonjour

我正在四处寻找合适的技术来实现我想要的应用程序。基本上我使用蓝牙通过 2 个 iOS 设备建立连接。在通信的第一部分中,我只发送消息,一切正常。在第二部分中,我想允许用户共享视频文件;例如,假设视频文件为 20 MB。现在,通过两台设备传输如此大数据的最佳选择是什么?我可以使用 GameKit 并将数据拆分为小数据包吗?需要合理的时间吗?或者最好使用 Bonjour 并等待,直到用户位于同一 wifi 网络下或通过 2 台设备创建 wifi 网络?

提前致谢

iphone bonjour bluetooth gamekit

3
推荐指数
1
解决办法
1588
查看次数

在没有BluetoothManager的iOS 5上检查蓝牙是否已禁用

我已经看到,在iOS 5中,CoreBluetooth提供了检查蓝牙是否被禁用的功能.从我所看到的文档来看,它显然是针对蓝牙外设使用的.但是,我正在尝试检查蓝牙是否已打开,因为我正在使用GameKit(GKPeerPickerController),如果未启用蓝牙连接,将无休止地搜索,这是一个问题.

我尝试这样做:

CBCentralManager * manager = [[CBCentralManager alloc] init];

if (manager.state == CBCentralManagerStatePoweredOn ) {

      //go ahead with GameKit
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,并且manager.state始终等于null.我在这做错了什么?或者,有没有更好的方法来检查iPhone上的蓝牙状态?

编辑:我不想调用任何私有API,因为我将这个应用程序提交到应用程序商店.我已经编辑了我的问题标题以澄清这一点.

iphone cocoa-touch gamekit ios core-bluetooth

3
推荐指数
1
解决办法
3602
查看次数

游戏中心回合制自动匹配不起作用

我正在使用标准配对用户界面和两个 iPad 的 iOS6。问题是当我在第一个设备中创建新匹配时,第二个设备应该在我查看匹配用户界面时看到现有匹配,但事实并非如此。我确定我的代码是正确的。这是方法:

-(void)findMatchWithMinPlayers:(int)minPlayers maxPlayers:(int)maxPlayers viewController:(UIViewController*)viewController {

    // the view that will present Matchmaker View Controller
    self.viewCaller = viewController;

    GKMatchRequest *request = [[GKMatchRequest alloc] init];
    request.minPlayers = minPlayers;
    request.maxPlayers = maxPlayers;

    GKTurnBasedMatchmakerViewController *viewMatchmaker = [[GKTurnBasedMatchmakerViewController alloc] initWithMatchRequest:request];
    viewMatchmaker.turnBasedMatchmakerDelegate = self;
    viewMatchmaker.showExistingMatches = YES;
    [self.viewCaller presentViewController:viewMatchmaker animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

我什至尝试了两个不同的示例游戏,但都出现了同样的问题,那么我该如何解决呢?

gamekit game-center

3
推荐指数
1
解决办法
443
查看次数

GameKit/Peer-to-peer over Internet

对于我正在开发的iOS应用程序,我希望多个手机相互连接,并能够在这些设备之间进行语音聊天.

当两个设备都在同一个网络上时,我就可以使用它.这很简单,我想做的大部分事情都是可能的.

但现在我正在增加互联网支持,这是一件非常麻烦的事情.我将首先尝试使用我设置的小型Web服务来解释我希望如何匹配设备.

服务器

  1. 使用会话模式GKSessionModePeer启动新的GameKit会话
  2. 在我刚刚创建的会话中找到服务器的"对等ID"
  3. 在空闲端口上创建一个新的CFSocketRef,并准备接受连接
  4. 将对等ID和端口号发送到我的Web服务,在外部服务器上运行.

网络服务

  1. Webservice接收信息并将其与ID和客户端的IP地址一起存储在数据库中.
  2. 将ID发送回Server,显示ID

客户

  1. 当用户选择使用GameKit的"在线"功能搜索游戏时,我向用户询问ID(用户应该输入服务器接收的ID).
  2. 客户端连接到提供ID的Web服务.webservice返回有关服务器的会话(IP,PORT,对等ID)的信息.
  3. 用户尝试使用端口信息连接到IP地址,并与服务器建立输入和输出流.

这不起作用,因为我的网络不允许传入连接和随机端口(来自外部网络).

但现在的问题是,我该如何解决这个问题呢?我希望能够在2个设备之间建立对等连接,这些设备可以在同一网络上,也可以在不同的网络上.

是否有框架,示例或任何显示如何执行此操作的内容?我希望能够将数据从设备发送到设备,而不是先将其发送到服务器.

p2p objective-c gamekit ios

3
推荐指数
1
解决办法
1278
查看次数

GKMatchMaker邀请处理程序已弃用

我有以下代码,我以前用来处理邀请:

[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {
    // Insert game-specific code here to clean up any game in progress.
    if (acceptedInvite) {
        GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite];
        mmvc.matchmakerDelegate = self;
        [self presentViewController:mmvc animated:YES completion:nil];
    }
};
Run Code Online (Sandbox Code Playgroud)

但是,现在它已被弃用了iOS 7.我在哪里以及如何在项目中注册GameKit邀请处理程序?

objective-c gamekit ios game-center

3
推荐指数
1
解决办法
2486
查看次数

如何显示所有可用的游戏中心排行榜,而不是自动显示默认排行榜?

要加载Game Center排行榜,我目前致电:

-(void) showLeaderboard:(NSString*)leaderboardId
{
    GKLeaderboardViewController *viewController = [GKLeaderboardViewController new];
    viewController.leaderboardDelegate = self;
    if (leaderboardId)
    {
        viewController.category = leaderboardId;
    }

    [[self topViewController] presentViewController:viewController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

然而,这总是加载默认排行榜,然后用户多按下后退按钮以查看所有可用的排行榜.

由于我的方法是从我的游戏的主菜单中调用的,因此将我的玩家带到1级排行榜并不合适.

如何加载视图控制器以便只显示所有可用的排行榜,而不是让我的播放器点击后退按钮...

期望的结果...... 期望的结果......

怎么了... 在此输入图像描述

leaderboard gamekit ios game-center

3
推荐指数
1
解决办法
828
查看次数

将GameKit键添加到info plist文件中(错误)

我在"功能"选项卡上有一个"为您的信息plist文件添加GameKit键"错误.那是什么意思?

这是一个截图:

xcode objective-c cocos2d-iphone gamekit ios

3
推荐指数
1
解决办法
4137
查看次数

3
推荐指数
1
解决办法
1121
查看次数