跳到主要内容

问题汇总

登录对接​

1. 无法搜索到当前接入的游戏​

参考调试说明,或联系平台人员,告知需要调试的迅雷平台用户 ID。

2. 如何查看迅雷平台用户 ID ?​

  1. 登录迅雷个人中心。
  2. 页面中显示的数字账号就是迅雷平台用户 ID。

3. 无法进入游戏,启动游戏报错?​

  1. 前往开放平台的游戏列表,查看对应游戏的配置项,检查 游戏启动链接 服务端回调地址 是否正确配置。
  2. 检查后端的登录功能是否已经正确接入。

支付对接​

1. 无法调起内购支付?​

检查后端的内购支付功能是否已经正确接入。

iOS 特性​

1. localStorage 无法持久化导致游戏进度丢失​

一些游戏会将游戏进度保存在本地的 localStorage ,这在许多浏览器场景(包括未开启“阻止跨站跟踪”的 Safari 浏览器)没有问题。

然而,iOS 迅雷客户端使用的 WKWebView 默认开启“阻止跨站跟踪”。这导致端内的浏览器在 iframe 内页面的 localStorage 数据会随浏览器进程的关闭而丢失,从而导致用户进度丢失,引发负反馈。

解决方案

我们提供了一个 storage-proxy SDK 来尽量规避此问题,这需要游戏方在 html 顶部引入一个脚本。

<!-- 此脚本用于代理iOS环境下的localStorage方法,src中type=child的参数必须保留 -->
<!-- 此脚本需要在游戏涉及localStorage的操作之前引入 -->
<script src="https://xlgamebox-youxi.xunlei.com/xl-libs/storage-proxy/1.0.0.js?type=child"></script>

<!-- ……任意代码…… -->

<!-- 非强制要求,但建议引入上面的storage-proxy脚本后,再引入迅雷游戏的JS-SDK -->
<script src="https://xlgamebox-youxi.xunlei.com/xl-libs/xl-game-sdk/latest-v2.js"></script>

SDK 核心原理是在 iOS 端通过代理用户的 localStorage,在 setItem removeItem clear 的同时持久化一份数据到父 window ;同时在页面每次启动时,会将父 window 持久化的数据写入到 localStorage,进而模拟 localStorage 的持久化能力

注意
  • storage-proxy 脚本链接存在 type=child 参数,这个参数目前是必需的。因此,如果游戏方不采用链接引用脚本,而是直接将此脚本打包进游戏中,会因为链接参数缺失而导致脚本失效。
  • 由于 SDK 的机制问题(存在异步操作),storage-proxy 脚本需要尽可能早的引入,且不建议添加 defer 或 async 属性,也不建议使用动态插入的方式。
  • 如游戏同时接入了 小川科技 的小游戏平台,且使用了他们提供的 storage-proxy.1.0.0.js 脚本 解决相同问题,请勿将这个脚本和此处提供的脚本同时引入。
  • 虽然上述方法能尽量解决 iOS 端进度丢失问题,但仍然建议有条件的游戏方将游戏进度保存在服务器。

其它​

1. 游戏接入方需要提供几个回调地址?​

一个游戏仅需要提供一个回调地址,平台 POST 请求这个回调地址时会携带 notify_type 字段表示需要执行的接口功能。

2. 游戏横屏(全屏)表现异常?​

请阅读文档前端横竖屏指引,文档对可能的游戏情况提供了不同的解决方案。如未能解决问题,请联系平台技术人员。

3. 调用 SDK 接口报错?​

如果遇到 SDK 接口调用时报错的问题,请检查项目的构建配置:

  1. 确认是否在编译配置中启用了 vconsole 调试工具
  2. 在生产环境部署前,建议移除 vconsole 相关配置项
  3. 重新编译打包后再次测试 SDK 功能

vconsole 工具可能会与游戏 SDK 产生冲突,导致接口调用失败。