SwiftUI GKLeaderboard loadEntries
Posted
技术标签:
【中文标题】SwiftUI GKLeaderboard loadEntries【英文标题】: 【发布时间】:2020-11-15 23:21:00 【问题描述】:我想在我的 SwiftUI 应用中添加排行榜。 我找不到任何使用 loadEntries 加载排行榜值的示例。 我尝试了以下...
let leaderBoard: GKLeaderboard = GKLeaderboard()
leaderBoard.identifier = "YOUR_LEADERBOARD_ID_HERE"
leaderBoard.timeScope = .allTime
leaderBoard.loadScores (scores, error) in ...
这会导致以下警告:
“标识符”在 ios 14.0 中已弃用:使用 loadEntriesForPlayerScope:timeScope:range:completionHandler: 代替。 'timeScope' 在 iOS 14.0 中已弃用:使用 loadEntriesForPlayerScope:timeScope:range:completionHandler: 代替。 'loadScores(completionHandler:)' 在 iOS 14.0 中已弃用:使用 loadEntriesForPlayerScope:timeScope:range:completionHandler:.使用 loadEntriesForPlayerScope 会导致以下警告:
'loadEntriesForPlayerScope(_:timeScope:range:completionHandler:)' 有 已重命名为 'loadEntries(for:timeScope:range:completionHandler:)'使用 loadEntries 我不知道如何指定排行榜标识符。
【问题讨论】:
【参考方案1】:这里是可能的方法的简单演示 - 将所有内容放入视图模型并显示视图上的负载分数。
import GameKit
class BoardModel: ObservableObject
private var board: GKLeaderboard?
@Published var localPlayerScore: GKLeaderboard.Entry?
@Published var topScores: [GKLeaderboard.Entry]?
func load()
if nil == board
GKLeaderboard.loadLeaderboards(IDs: ["YOUR_LEADERBOARD_ID_HERE"]) [weak self] (boards, error) in
self?.board = boards?.first
self?.updateScores()
else
self.updateScores()
func updateScores()
board?.loadEntries(for: .global, timeScope: .allTime, range: NSRange(location: 1, length: 10),
completionHandler: [weak self] (local, entries, count, error) in
DispatchQueue.main.async
self?.localPlayerScore = local
self?.topScores = entries
)
struct DemoGameboardview: View
@StateObject var vm = BoardModel()
var body: some View
List
ForEach(vm.topScores ?? [], id: \.self) item in
HStack
Text(item.player.displayName)
Spacer()
Text(item.formattedScore)
.onAppear
vm.load()
【讨论】:
我花了一些时间来测试这个,因为我必须先弄清楚如何验证用户。谢谢!【参考方案2】:我可能说的很明显,但您看过 WWDC20 视频吗? 通常当有这样的大变化时,他们会在当年的 WWDC 期间进行报道。
Tap into Game Center: Leaderboards, Achievements, and Multiplayer
Tap into Game Center: Dashboard, Access Point, and Profile
我还没有看过这些视频,但documentation 认为identifier
可能会被var baseLeaderboardID: String
取代
【讨论】:
谢谢。我会看那些。我无法设置 baseLeaderboardID。这是一个只能获取的属性。以上是关于SwiftUI GKLeaderboard loadEntries的主要内容,如果未能解决你的问题,请参考以下文章
什么叫LOA认证 应急灯申请SANS1464-22测试 法规解读
什么叫LOA认证 应急灯申请SANS1464-22测试 法规解读
什么叫LOA认证 应急灯申请SANS1464-22测试 法规解读
关于ImportError: libssl.so.10: cannot open shared object file: No such file or directory unable to loa