游戏中心匹配自定义邀请



我确信有一个'简单'的答案,但我很难找到它。

我创建了一个在游戏中心工作的iOS纸牌游戏。 目前,它会自动确定在线播放器并且工作正常。

我想做的是让用户邀请他们的游戏中心朋友来玩。文档并没有真正帮助我。

我正在用 swift 做我的项目,我觉得我正在处理这里不推荐使用的项目和旧文档?

我已经设法获取了朋友的用户列表,然后我认为我需要实例化具有该朋友列表的匹配器。

我所坚持的是,试图按照苹果的指导方针实现"RecipientResponseHandler"代码:

request.recipientResponseHandler = ^(GKPlayer *player, GKInviteeResponse response)
{
[self updateUIForPlayer: player accepted: (response == GKInviteeResponseAccepted)];
}; 

问题 1:首先,^ 符号在 swift 语言中代表什么?

问题2:XCode似乎不喜欢参数中的*符号...我试过做这样的事情...

request.recipientResponseHandler = (player: GKPlayer, response: GKInviteeResponse){
print("Do codeStuffHere")
};

但是,我找不到XCode允许的措辞方式......

问题 3:如何编写此响应处理程序以使其正常工作?

问题4:另外,要听取邀请,我需要实现GKLocalPlayerListener协议...别的东西?

问题5:我觉得我错过了一些刺眼的东西?

我一直在自学,有时在没有任何方向的情况下理解概念需要一段时间,所以请对我的互联网放轻松。我刚刚开始了解完成处理程序和闭包......

提前感谢任何帮助。

^ 符号在 swift 语言中代表什么?

XCode似乎不喜欢参数中的*符号。

这是因为代码是用 Objective-C 编写的,而不是 Swift。

我假设您正在查看 GKMatchRequest 的文档(截至 2023 年 1 月的更新:Apple 似乎已在某个时候从此页面中删除了代码列表(。

如果是这样,那么是的,苹果只是还没有开始更新他们所有的文档来使用Swift而不是Objective-C(即使在选择的语言是Swift的页面上,就像这个(。

下面是整个代码清单的 Swift 等效项:

func invite(friends: [GKPlayer]) {
let request = GKMatchRequest()
request.minPlayers = 2
request.maxPlayers = 4
request.recipients = friends
request.inviteMessage = "Your Custom Invitation Message Here"
request.recipientResponseHandler = { player, response in
self.updateUI(for: player, accepted: response == .accepted)
}
}
func updateUI(for player: GKPlayer, accepted: Bool) {
// update your UI here
}

对于问题 4,请务必注册 GKLocalPlayerListener 并且只注册一次,例如:

GKLocalPlayer.local.register(self)

最新更新