Microsoft 游戏开发工具包(GDK) API 提供了一种机制,使游戏能够通过调用 URI 来启动体验。
语法
HRESULT XLaunchUri(
XUserHandle requestingUser,
const char* uri
)
参数
requestingUser _In_opt_
类型:XUserHandle
定义一个句柄,标识提出请求的用户。
uri _In_z_
类型:char*
指示要启动的 URI 的字符串。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
如果成功,则返回 S_OK;否则返回错误代码。 有关错误代码的列表,请参阅错误代码。
返回代码 | 说明 |
---|---|
S_OK | 操作成功。 |
E_GAMEPACKAGE_NO_PACKAGE_IDENTIFIER | 传入此函数的 URI 尝试将应用启动到后台,但找不到合适的应用。 它可能未安装。 |
备注
注意
在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程。
这会通过 URI 启动另一个应用。 它还接受可选的用户上下文和必需的 URI。
如果成功,则启动目标 URI。 否则,将返回错误。 此方法不被视为时间关键的,在基础异步系统操作完成之前将阻塞,并且目标 URI 或者已启动,或者发生了错误。
如果不存在用于处理给定 URI 的协议方案的应用,则系统将向用户显示一个提示,询问其是否要搜索 Windows Store 以找到处理该方案的应用程序。
启动到后台
在主机上,在其 appxmanifest 文件中具有 backgroundMediaPlayback 功能的通用 Windows 应用可以启动到后台而不是前台。 为此,请在 URI 前面加上字符串“ms-bgm-”。 例如,如果后台媒体应用程序响应协议“companion-music-app://”,则可以使用 uri“ms-bgm-companion-music-app://”将其启动到后台。 当应用收到激活时,从 ProtocolActivatedEventArgs 获取的 URI 将不包括“ms-bgm-”前缀。
以这种方式调用时,XLaunchUri 在未安装合适的应用时不会向用户显示提示。 相反,如果你的游戏使用的是 2025 年 4 月版本的 GDK 或更高版本,它将返回E_GAMEPACKAGE_NO_PACKAGE_IDENTIFIER。 代码可以为此返回值检查,并根据需要使用它向用户显示修正 UI。
在电脑上,以这种方式调用 XLaunchUri 时,它只会在正常启动它之前从 URI 的开头删除“ms-bgm-”。 它对电脑上的系统行为没有其他影响。
下面是调用 XLaunchUri 以启动配套音乐应用程序的示例:
HRESULT BeginPlayingMusic(XUserHandle user)
{
// Launch a well-known companion music application.
// The game and app both need to agree on the URI scheme.
HRESULT hr = XLaunchUri(user, "ms-bgm-companion-music-app://launch?play=true");
if (hr == E_GAMEPACKAGE_NO_PACKAGE_IDENTIFIER)
{
// If the music app isn't installed, launch the store page so the user can download it.
return XLaunchUri(user, "ms-windows-store://pdp/?ProductId=9FAKESTOREID");
}
return hr;
}
要求
头文件:XLauncher.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机