无缝网页至游戏集成

运行机制

通过无缝网页至游戏集成,您可以配置在URL参数中将数据从网站发送到游戏。您可以传输用户的授权令牌、营销活动数据或其他信息。

用户流程

实现无缝网页至游戏集成时有以下用户场景:

  • 从网站点击链接下载启动器安装程序。
  • 从网站点击启动器的链接。
  • 从启动器启动游戏。

用户从网站点击下载启动器安装程序的链接:

  1. 用户打开网站。
  2. 用户点击启动器安装程序链接。
  3. 用户通过包含一次性密码的链接下载启动器安装程序。
  4. 用户安装启动器。
  5. 启动器通过该一次性密码收到common_payload参数的值。
  6. 用户点击启动器中的开始游戏
  7. 启动器检查common_payload参数的存在和过期情况:
    • 如检查成功,启动器使用从common_payload参数中获得的实参启动游戏。
    • 如检查失败:
      • 如发布商帐户的可执行文件名称中配置了网站URL,则启动器将用户重定向到该地址。
      • 如发布商帐户的可执行文件名称中未配置网站URL — 启动器在不使用common_payload参数的情况下启动游戏。

用户从网站点击启动器链接且已安装了启动器时,发生以下流程:

  1. 用户打开网站。
  2. 用户点击启动器链接。
  3. 启动器保存URL中的payloadcommon_payloadexpires_jn参数值。
  4. 用户在启动器中点击开始游戏
  5. 启动器检查payloadcommon_payload参数的存在和过期情况:
    • 如检查成功,启动器使用从payloadcommon_payload参数中获得的实参启动游戏。
    • 如检查失败:
      • 如发布商帐户的可执行文件名称中配置了网站URL,则启动器将用户重定向到该地址。
      • 如发布商帐户的可执行文件名称中未配置网站URL — 启动器在不使用payloadcommon_payload参数的情况下启动游戏。

用户从启动器启动游戏时,发生以下流程:

  1. 用户打开启动器。
  2. 用户在启动器中点击开始游戏
  3. 启动器检查payloadcommon_payload参数的存在和过期情况:
    • 如检查成功,启动器使用从payloadcommon_payload参数中获得的实参启动游戏。
    • 如检查失败:
      • 如发布商帐户设置中指定了URL,则启动器将用户重定向到该URL。
      • 如发布商帐户的可执行文件名称中未配置网站URL,则启动器将用户重定向到该地址 — 启动器在不使用payloadcommon_payload参数的情况下启动游戏。

如何获取

要设置无缝网页至游戏集成:

  1. 在发布商帐户中配置设置
  2. 在网站上添加链接
  3. 在游戏侧实现对payload参数中所收到数据的处理

在发布商帐户中配置设置

  1. 发布商帐户中打开您的项目。
  2. 在侧边栏中单击启动器
  3. 在仪表板中找到所需启动器,然后单击编辑启动器
  4. 游戏部分,单击游戏右边的设置
  5. 前往编译版本部分。
  6. 前往可执行文件选项卡。
  7. 可执行文件名称字段中为各操作系统添加--x_payload_url参数。在参数值之中传入链接或按钮所在的网站URL。该值应使用Base64加密。

例如,如果可执行文件名称是game.exe,游戏网站URL是http://example.com/start_play,则在可执行文件名称字段中输入game.exe –x_payload_url aHR0cDovL2V4YW1wbGUuY29tL3N0YXJ0X3BsYXk=

注:
完成该设置后,用户将无法在未收到游戏网站发送的数据的情况下启动游戏。如缺少该数据,用户将被重定向到游戏网站获取该数据。

在网站上添加将打开xl-<launcher-id>://game/<game-id>?payload=<payload>&common_payload=<common_payload>&expires_in=<expires_in>格式URL的链接或按钮,其中:

  • <launcher-id><game-id> — 可在发布商帐户的URL中找到的启动器和游戏的ID:https://publisher.xsolla.com/<merchant-id>/projects/<project-id>/new-launcher/<launcher-id>/game/<game-id>
  • <payload> — 需传给游戏的数据。
  • <common_payload> — 需传给启动器的用户数据,该数据通用于所有游戏。
  • <expires_in>payloadcommon_payload参数中传入的数据过期时间,格式为Unix时间,单位为毫秒。
注:
建议使用Base64urlencoder.org加密数据以安全通过URL参数进行传输。
Copy
Full screen
Small screen


function getAuthToken() {
    return 'YOUR DATA HERE';
}

function getDeeplink(launcherID, gameID) {
    const encodedPayload = btoa(getAuthToken());
    const expiresIn = new Date();
    expiresIn.setHours(expiresIn.getHours() + 1); // Payload data will be fresh for 1 hour
 return `xl-${launcherID}://game/${gameID}?payload=${encodedPayload}&expires_in=${expiresIn.getTime()}`;
}

// Put that `href` to button or link address
const href = getDeeplink(123, 4567);

游戏侧集成

启动器将payload参数中收到的数据作为–xsolla-payload命令行参数的值传入,如下例所示。它还会检查common_payload参数中是否存在数据及其有效期,并将这些数据作为–xsolla-common-payload命令行参数的值传入,如下例所示。

使用Base64加密数据时启动游戏的示例:

Copy
Full screen
Small screen
    game.exe ---xsolla-payload <payload> --xsolla-common-payload <common_payload> WU9VUiBEQVRBIEhFUkU=
    
    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    上次更新时间: 2024年1月22日

    发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

    报告问题
    我们非常重视内容质量。您的反馈将帮助我们做得更好。
    请留下邮箱以便我们后续跟进
    感谢您的反馈!