游戏中心对接会自定义邀请

问题描述 投票:0回答:1

我确定对此有一个“简单”的答案,但是我一直很难找到它。

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

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

我正在迅速完成我的项目,感觉好像在这里处理过时的项目和旧文档吗?

我设法获取了用户的朋友列表,然后我想我需要用该朋友列表实例化一个媒人。

我一直坚持要按照苹果的指导方针来实现“ RecipientResponseHandler”代码:

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

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

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

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

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

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

问题4:另外,要听邀请,我需要实现GKLocalPlayerListener协议...还有其他吗?

问题4:我觉得我缺少明显的东西吗?

我一直在独自学习,有时花一点时间来理解概念而没有任何方向,所以请在我的互联网上轻松一点。我刚刚开始了解完成处理程序和闭包...

提前感谢您的帮助。

ios swift gamekit completionhandler gkmatchmaker
1个回答
0
投票

^符号在快速的语言中代表什么?

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

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

我假设您正在查看发现的文档here。如果是这样的话,是的,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
}
© www.soinside.com 2019 - 2024. All rights reserved.