feat: H5扫雷游戏WebView对接优化

- 动态拼接游戏URL(client_url/nakama_server)
- 传递nickname参数给H5
- 添加游戏URL调试日志
This commit is contained in:
Zuncle 2026-03-14 22:49:38 +08:00
parent 16076f2eb8
commit 499ac1514e
2 changed files with 16 additions and 29 deletions

View File

@ -121,12 +121,15 @@ export default {
} }
}) })
const gameToken = encodeURIComponent(res.game_token) // const clientUrl = res.client_url || 'https://kdy.1024tool.vip'
const nakamaServer = encodeURIComponent(res.nakama_server) const clientUrl = 'http://localhost:8081/'
const nakamaKey = encodeURIComponent(res.nakama_key) const nakamaServer = res.nakama_server || 'wss://kdy.1024tool.vip/ws'
const userInfo = uni.getStorageSync('user_info') || {}
const nickname = userInfo.nickname || userInfo.name || '玩家'
const gameUrl = `${clientUrl}?game_token=${encodeURIComponent(res.game_token)}&nakama_server=${encodeURIComponent(nakamaServer)}&nakama_key=${encodeURIComponent(res.nakama_key)}&game_type=${encodeURIComponent(targetCode)}&nickname=${encodeURIComponent(nickname)}`
console.log('=== 游戏URL(复制到Chrome打开) ===', gameUrl)
uni.navigateTo({ uni.navigateTo({
url: `/pages-game/game/minesweeper/play?game_token=${gameToken}&nakama_server=${nakamaServer}&nakama_key=${nakamaKey}` url: `/pages-game/game/webview?url=${encodeURIComponent(gameUrl)}`
}) })
} catch (e) { } catch (e) {
uni.showToast({ uni.showToast({
@ -139,7 +142,6 @@ export default {
} }
}, },
async goRoomList() { async goRoomList() {
// nakama room-list URL
try { try {
const res = await authRequest({ const res = await authRequest({
url: '/api/app/games/enter', url: '/api/app/games/enter',
@ -148,13 +150,13 @@ export default {
game_code: this.gameCode game_code: this.gameCode
} }
}) })
const gameToken = encodeURIComponent(res.game_token) // const clientUrl = res.client_url || 'https://kdy.1024tool.vip'
const nakamaServer = encodeURIComponent(res.nakama_server) const clientUrl = 'http://localhost:8081/'
const nakamaKey = encodeURIComponent(res.nakama_key) const nakamaServer = res.nakama_server || 'wss://kdy.1024tool.vip/ws'
const gameUrl = `${clientUrl}?game_token=${encodeURIComponent(res.game_token)}&nakama_server=${encodeURIComponent(nakamaServer)}&nakama_key=${encodeURIComponent(res.nakama_key)}&mode=spectate`
uni.navigateTo({ uni.navigateTo({
url: `/pages-game/game/minesweeper/room-list?game_token=${gameToken}&nakama_server=${nakamaServer}&nakama_key=${nakamaKey}` url: `/pages-game/game/webview?url=${encodeURIComponent(gameUrl)}`
}) })
} catch (e) { } catch (e) {
uni.showToast({ title: '无法获取对战列表', icon: 'none' }) uni.showToast({ title: '无法获取对战列表', icon: 'none' })

View File

@ -12,23 +12,8 @@ const url = ref('')
onLoad((options) => { onLoad((options) => {
if (options.url) { if (options.url) {
let targetUrl = decodeURIComponent(options.url) url.value = decodeURIComponent(options.url)
console.log('Opening Game WebView:', url.value)
// Append auth info if not present
const token = uni.getStorageSync('token')
const uid = uni.getStorageSync('user_id')
const hasQuery = targetUrl.includes('?')
const separator = hasQuery ? '&' : '?'
// Append standard auth params for the game to consume
if (token) targetUrl += `${separator}token=${encodeURIComponent(token)}`
if (uid) targetUrl += `&uid=${encodeURIComponent(uid)}`
// Append ticket if provided
if (options.ticket) targetUrl += `&ticket=${encodeURIComponent(options.ticket)}`
console.log('Opening Game WebView:', targetUrl)
url.value = targetUrl
} else { } else {
uni.showToast({ title: '游戏地址无效', icon: 'none' }) uni.showToast({ title: '游戏地址无效', icon: 'none' })
setTimeout(() => uni.navigateBack(), 1500) setTimeout(() => uni.navigateBack(), 1500)