文档版本:v1.0 最后更新:2026-04-02 08:28:05
本文档提供一份 截至当前开发状态,客户端已实现或已正式消费的较完整配置模板。
目标:
说明:
{
"schemaVersion": "1",
"version": "2026.03.30",
"app": {
"id": "sample-full-001",
"title": "完整配置示例",
"locale": "zh-CN"
},
"settings": {
"autoRotateEnabled": {
"value": true,
"isLocked": false
},
"trackDisplayMode": {
"value": "tail",
"isLocked": false
},
"gpsMarkerStyle": {
"value": "beacon",
"isLocked": true
},
"showCenterScaleRuler": {
"value": false,
"isLocked": false
}
},
"map": {
"tiles": "../map/lxcb-001/tiles/",
"mapmeta": "../map/lxcb-001/tiles/meta.json",
"declination": 6.91,
"initialView": {
"zoom": 17
}
},
"playfield": {
"kind": "course",
"source": {
"type": "kml",
"url": "../kml/lxcb-001/10/c01.kml"
},
"CPRadius": 6,
"controlDefaults": {
"score": 10,
"template": "story",
"autoPopup": false,
"pointStyle": "classic-ring",
"pointColorHex": "#cc006b"
},
"metadata": {
"title": "完整路线示例",
"code": "full-001"
},
"controlOverrides": {
"start-1": {
"template": "focus",
"title": "比赛开始",
"body": "从这里触发,先熟悉地图方向。",
"clickTitle": "起点说明",
"clickBody": "点击起点可再次查看起跑说明。",
"autoPopup": true,
"once": true,
"priority": 1,
"contentExperience": {
"type": "h5",
"url": "https://example.com/content/start-1",
"bridge": "content-v1",
"presentation": "fullscreen"
},
"clickExperience": {
"type": "h5",
"url": "https://example.com/content/start-1-click",
"bridge": "content-v1",
"presentation": "fullscreen"
}
},
"control-1": {
"template": "story",
"score": 10,
"title": "第一检查点",
"body": "完成该点后继续推进。",
"clickTitle": "第一检查点",
"clickBody": "点击查看该点的补充说明。",
"autoPopup": true,
"once": false,
"priority": 1,
"contentExperience": {
"type": "h5",
"url": "https://example.com/content/control-1",
"bridge": "content-v1",
"presentation": "fullscreen"
},
"clickExperience": {
"type": "h5",
"url": "https://example.com/content/control-1-click",
"bridge": "content-v1",
"presentation": "fullscreen"
}
},
"control-2": {
"template": "minimal",
"title": "第二检查点",
"body": "这个点配置成手动查看内容。",
"clickTitle": "第二检查点",
"clickBody": "点击查看手动内容。",
"autoPopup": false,
"once": true,
"priority": 1
},
"finish-1": {
"template": "focus",
"title": "比赛结束",
"body": "恭喜完成本次路线。",
"clickTitle": "终点说明",
"clickBody": "点击终点可再次查看结束说明。",
"autoPopup": false,
"once": true,
"priority": 2,
"clickExperience": {
"type": "h5",
"url": "https://example.com/content/finish-1-click",
"bridge": "content-v1",
"presentation": "fullscreen"
}
}
},
"legDefaults": {
"style": "classic-leg",
"colorHex": "#cc006b",
"widthScale": 1
}
},
"game": {
"mode": "classic-sequential",
"rulesVersion": "1",
"session": {
"startManually": false,
"requiresStartPunch": true,
"requiresFinishPunch": true,
"autoFinishOnLastControl": false,
"minCompletedControlsBeforeFinish": 1,
"maxDurationSec": 5400
},
"punch": {
"policy": "enter-confirm",
"radiusMeters": 5,
"requiresFocusSelection": false
},
"sequence": {
"skip": {
"enabled": true,
"radiusMeters": 10,
"requiresConfirm": false
}
},
"guidance": {
"showLegs": true,
"legAnimation": true,
"allowFocusSelection": false
},
"visibility": {
"revealFullPlayfieldAfterStartPunch": true
},
"finish": {
"finishControlAlwaysSelectable": false
},
"telemetry": {
"heartRate": {
"age": 30,
"restingHeartRateBpm": 62,
"userWeightKg": 65
}
},
"audio": {
"distantDistanceMeters": 80,
"approachDistanceMeters": 20,
"readyDistanceMeters": 5,
"cues": {
"guidance:distant": {
"loopGapMs": 4800,
"volume": 0.34
},
"guidance:approaching": {
"loopGapMs": 950,
"volume": 0.58
},
"guidance:ready": {
"loopGapMs": 650,
"volume": 0.68
}
}
},
"feedback": {
"audioProfile": "default",
"hapticsProfile": "default",
"uiEffectsProfile": "default"
}
},
"resources": {
"audioProfile": "default",
"contentProfile": "default",
"themeProfile": "default-race"
},
"debug": {
"allowModeSwitch": false,
"allowMockInput": false,
"allowSimulator": false
}
}
schemaVersionstring"1"versionstringappobjectmapobjectplayfieldobjectgameobjectresourcesobjectdebugobjectapp 字段说明app.idstringapp.titlestringapp.localestringzh-CNmap 字段说明map.tilesstringmap.mapmetastringmap.declinationnumbermap.initialView.zoomnumber17playfield 字段说明playfield.kindstringcoursecontrol-setplayfield.source.typestringkmlplayfield.source.urlstringplayfield.CPRadiusnumber6playfield.metadata.titlestringplayfield.metadata.codestringplayfield.controlDefaults / playfield.controlOverrides 字段说明推荐优先级:
系统默认值 -> 玩法默认值 -> playfield.controlDefaults -> playfield.controlOverrides
playfield.controlDefaultsobjectplayfield.controlOverridesobjectstart-1control-1、control-2、control-3finish-1templatestringminimalstoryfocusscorenumbertitlestringbodystringclickTitlestringclickBodystringautoPopupbooleanfalsegame.punch.policy = "enter" 时不自动弹原生内容autoPopup = true 才会在打点后先弹白卡oncebooleanfalseprioritynumber12contentExperienceobjectcontentExperience.typestringnativeh5contentExperience.urlstringcontentExperience.bridgestringcontent-v1contentExperience.presentationstringfullscreendialogsheetweb-view 不再承担局部弹窗职责;当前应按“原生内容卡 + H5 全屏详情页/任务页”理解。clickExperienceobjectcontentExperiencegame 字段说明game.modestringclassic-sequentialscore-ogame.rulesVersionstringgame.session.startManuallybooleanfalsegame.session.requiresStartPunchbooleangame.session.requiresFinishPunchbooleangame.session.autoFinishOnLastControlbooleangame.session.minCompletedControlsBeforeFinishnumber01game.session.maxDurationSecnumbergame.punch.policystringenter-confirmentergame.punch.radiusMetersnumbergame.punch.requiresFocusSelectionbooleanfalsefalsegame.sequence.skip.enabledbooleangame.sequence.skip.radiusMetersnumber2 倍game.sequence.skip.requiresConfirmbooleanfalsegame.guidance.showLegsbooleangame.guidance.legAnimationbooleangame.guidance.allowFocusSelectionbooleangame.visibility.revealFullPlayfieldAfterStartPunchbooleangame.finish.finishControlAlwaysSelectablebooleangame.telemetry.heartRate.agenumbergame.telemetry.heartRate.restingHeartRateBpmnumbergame.telemetry.heartRate.userWeightKgnumbergame.feedback.audioProfilestringgame.feedback.hapticsProfilestringgame.feedback.uiEffectsProfilestringgame.audioobjectgame.audio.distantDistanceMetersnumber80game.audio.approachDistanceMetersnumber20game.audio.readyDistanceMetersnumber5game.punch.radiusMetersgame.audio.cues["guidance:distant" | "guidance:approaching" | "guidance:ready"]objectsrcvolumelooploopGapMsresources 字段说明resources.audioProfilestringresources.contentProfilestringresources.themeProfilestringdebug 字段说明debug.allowModeSwitchbooleandebug.allowMockInputbooleandebug.allowSimulatorboolean如果使用积分赛,通常要修改这几项:
{
"playfield": {
"kind": "control-set"
},
"game": {
"mode": "score-o",
"session": {
"startManually": false
},
"punch": {
"requiresFocusSelection": true
},
"guidance": {
"showLegs": false,
"legAnimation": false,
"allowFocusSelection": true
},
"finish": {
"finishControlAlwaysSelectable": true
}
}
}
并在 playfield.controlDefaults 中先写普通点统一默认,必要时再在 playfield.controlOverrides 中为少量特殊点补:
score