问题标签 [gkgamesession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
458 浏览

ios - GKGameSession 中的 createSession 只返回 nil

我正在尝试启动一个新的 GKGameSession,当我使用 createSession 时,到目前为止我所能得到的只是零。这是我的代码:

它唯一打印的是“nil”。任何帮助表示赞赏。

0 投票
1 回答
385 浏览

game-center - 从 GKCloudPlayer.playerID 获取 GKPlayer.playerID

我想在我的 iOS 10 多人游戏中使用新类 GKGameSession。我需要playerID从 Game Center 获取所有用户的权限,以检查与我的游戏以前版本的兼容性。但GKPlayer.playerID != GKCloudPlayer.playerID

我怎样才能GKPlayer.playerID得到GKCloudPlayer.playerID

0 投票
1 回答
361 浏览

ios - 如何以编程方式检索 icloud 容器名称?

要创建一个GKGameSession我需要传入 iCloud 容器名称。

虽然我知道通过导航到 Capabilities 页面可以在 xCode 中的哪里找到容器名称,尽管我知道默认格式是iCloud.$(CFBundleIdentifier)我对如何以编程方式查找容器名称感到困惑。

我不认为它是info.plist文件中的条目。虽然我可以使用默认格式重建它,但如果我不使用默认容器名称怎么办?我真的必须要#define字符串吗?

0 投票
2 回答
158 浏览

ios - GKGameSession- saveData 在 getShareURLWithCompletionHandler 之后总是失败并出现 malloc 错误

我正在尝试将其整合GKGameSession到我的 Game Center 游戏中。我尝试了以下代码的几种组合:异步运行命令,将它们链接到完成处理程序中,等等。每次我看到相同的结果时:我可以saveData正常使用,直到我调用getShareURLWithCompletionHandler. 之后,任何尝试都会saveData引发错误。

这是显示问题的最简单的代码版本:

在大多数情况下,saveData调用只是崩溃:

但有时它会抛出一个错误:

我尝试过保存不同类型的数据。我尝试通过链接完成处理程序中的所有调用来使调用按顺序进行。我尝试在 creationSession 完成处理程序内部和外部进行 URL 获取和数据保存。

我在这里做错了吗?

0 投票
0 回答
99 浏览

ios - 如何自定义 GKGameSession 消息通知?

如果可能的话,我不知道如何自定义 GKGameSession 消息通知。默认通知确实包含我在发送消息时提供的一段文本,但结果措辞笨拙,使用游戏中心图标而不是我的应用程序图标,并播放令人讨厌的小叮当声。

理想情况下,我想用通知内容扩展来修改 GKGameSession 消息通知,但是当我在我的应用程序中创建一个时,它没有被调用。

有任何想法吗?谢谢。

0 投票
2 回答
477 浏览

ios - 适用于 iOS 10 的 GameCenter 基于 iMessaged 的​​邀请

我正在尝试更新我的应用程序以与 iOS10 中 GameCenter 的新功能正常工作。

我在 device1 上创建了一个新的 GKGameSession,获取了一个共享 URL,一切正常。我通过共享表将共享 URL 发送到设备 2。

Device2 单击链接,设备会短暂显示“正在检索...”,然后启动我的应用程序。伟大的!但是,现在呢?我可以通过某种方式访问​​此 URL 是否有可用的上下文信息?否则我无法在应用程序启动时做出响应。

以前,您会收到对遵循 GKLocalPlayerListener 协议的内容的回调,对方法 player:didAcceptInvite: 的回调,您可以通过这种方式加入比赛。但是有了这些基于 iCloud 的消息,玩家甚至可能没有登录到 GameCenter,对吧?这部分似乎在 WWDC 演示文稿中被掩盖了。

此外,截至今天(2016 年 12 月 28 日),没有关于这些新方法的 Apple 文档。

0 投票
0 回答
147 浏览

xcode - GKGameSession 不适用于特定帐户

我正在尝试使用GKGameSession随 iOS 10 发布的 GameKit 制作一个简单的应用程序。在大多数情况下,一切正常,但是使用我的一个测试帐户,我可以使用创建会话GKGameSession.createSessionInContainer:,但是获取会话会导致在完成时返回错误处理程序说“无法与帮助应用程序通信”。

该代码适用于我的开发人员帐户,以及我朋友手机上的非开发人员帐户,但是在我的普通 iCloud 帐户(过去也用于开发)上,每当我打电话时,它都会不断收到此错误:

-GKGameSession.loadSessionWithIdentifier

-GKGameSession.loadSessionInContainer

我检查了设备日志,gamed框架中似乎出现了崩溃(据我了解,GameKit)。堆栈跟踪中没有应用程序功能,都是 Apple 代码,因此看起来后台 GameKit 服务正在崩溃。导致崩溃的行是NSPropertyListSerialization.propertyListWithData:options:format:error:,它抛出异常并调用abort().

回溯如下:

我尝试在不同的设备上使用相同的帐户,注销,硬重置,擦除设备不同的 iCloud 容器,重置 iCloud 容器并发布到 live 并尝试实时构建,但问题似乎出在这个特定的 iCloud 帐户上.

我也做了一个新的项目,刚刚打了GKGameSession.loadSessionWithIdentifier:电话,viewDidLoad()但每次的结果都是一样的。

如果是文件被序列化的错误,.plist我猜想与此帐户关联的某些数据已损坏或什么?

我一直在把头发拉出来,所以任何帮助都会很棒。

谢谢

0 投票
1 回答
190 浏览

ios - 使用 GKGameSession 进行自动匹配

我想切换到 GKGameSession(而不是传统的 GameCenter),但我的应用程序做了很多自动匹配。我如何使用 Sessions 做到这一点?是否可以使用传统的 MatchMaker 视图控制器创建游戏,然后传递足够的信息让每个人都连接到会话?

例如,我可以只传递会话标识符或 URL 吗?

0 投票
1 回答
271 浏览

ios - GameKit、GKGameSession 如何将玩家添加到会话并发送数据?

我创建了一个会话,将其分享给另一个玩家,现在我想开始游戏。我可以在两台设备上看到两个玩家的会话。所以,看起来我们已经准备好进行游戏了,但我需要在游戏前更改连接状态,我可以在两台设备上执行此操作。

但是......当我在设备 A 上执行此操作时,我看到用户 A 已连接,而用户 B 未连接。之后,当我在设备 B 上重复该过程时,我看到反之亦然的情况。B 已连接,A 未连接。

这是我连接播放器并发送数据的代码:

我收到错误:

The requested operation could not be completed because there are no recipients connected to the session

顺便说一句,我无法更改模拟器上的连接状态(iCloud 已登录)。

我忘了说,我正在开发一款回合制游戏。

编辑

再次尝试,现在经过几次迭代,我得到了这个:

我让两个玩家都连接到会话。但是发送数据仍然不起作用。

这是控制台输出:

在两个真实设备上得到了这个。