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

Posted

技术标签:

【中文标题】游戏中心对接会自定义邀请【英文标题】:Game Center Matchmaking Custom Invites 【发布时间】:2020-05-13 13:48:00 【问题描述】:

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

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

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

我正在快速完成我的项目,我觉得我正在处理已弃用的项目和旧文档?

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

我坚持的是,试图按照苹果的指导方针实施“RecipientResponseHandler”代码:

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

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

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

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

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

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

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

问题 5:我觉得我错过了什么明显的东西?

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

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

不幸的是,我对 GameKit 了解不多,所以我无法回答您的问题 4,但也许这将是一个新的单独问题的好候选人(因为您只是真的应该无论如何,在 *** 上的每个帖子都问一个问题)。【参考方案2】:

对于第4题,一定要注册GKLocalPlayerListener,并且只注册一次,例如:

GKLocalPlayer.local.register(self)

【讨论】:

以上是关于游戏中心对接会自定义邀请的主要内容,如果未能解决你的问题,请参考以下文章

安卓回合制多人自定义邀请画面

多人连接自定义邀请

IOS7 多点连接使用发现信息创建自定义邀请

.NET自定义认证虽然简单,但好用

如何将自定义字段添加到 devise_invitable 邀请表单

Flutter - 如何在应用邀请功能的 Firebase 动态链接中传递自定义参数?