跳到主要内容

问题汇总

登录对接

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 脚本需要尽可能早的引入,且不建议添加 deferasync 属性,也不建议使用动态插入的方式。
  • 如游戏同时接入了 小川科技 的小游戏平台,且使用了他们提供的 storage-proxy.1.0.0.js 脚本 解决相同问题,请勿将这个脚本和此处提供的脚本同时引入。
  • 虽然上述方法能尽量解决 iOS 端进度丢失问题,但仍然建议有条件的游戏方将游戏进度保存在服务器。

其它

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

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

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

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