协议激活
游戏可以注册自定义 URI 协议,如果游戏未运行,则可以使用该协议启动游戏;如果游戏已在运行,则会将游戏置于前景。
注册协议
为了注册自定义协议,游戏必须首先修改其 MicrosoftGame.Config。游戏可以通过将协议添加到 ProtocolList> 来<注册多个协议,如下例所示。
<Game configVersion="1">
<Identity Name="ExampleGame" Publisher="CN=NoPub" Version="1.6.0.0"/>
<ProtocolList>
<Protocol Name="awesome-custom-debug-protocol"
Executable="SubDirectory\Test\MyExecutable_profile.exe"/>
<Protocol Name="awesome-custom-protocol2"
Executable="MyExecutable.exe"/>
</ProtocolList>
<!-- Lots of stuff excluded -->
</Game>
上面的此示例注册两个自定义协议。 然后,可以使用 URI 启动游戏,如下所示:
awesome-custom-debug-protocol://Parameter1=xyz&Parameter2=abc
然后,游戏可以注册 XGameProtocolActivationCallback 回调,该回调将在使用 XGameProtocolRegisterForActivation激活协议时调用。 然后,游戏可以分析 URI 以读取传递给游戏的任何其他参数。
注意
虽然游戏确实可以使用 GetCommandLine 获取相同参数,但这仅适用于游戏的初始启动。 如果游戏已在运行,则传递给游戏的命令行参数将不会更新。 想要利用自定义协议激活的所有游戏都应使用 XGameProtocolRegisterForActivation 注册回调,并依赖该回调来响应激活。
注意
具有游戏 ID 的所有游戏都将始终注册一个默认协议,格式为 ms-xbl-XXXXXXXXX://,其中 XXXXXXXX 是游戏 ID 的十六进制形式,不带前导“0x”。 此协议是为游戏邀请保留的。 使用此协议激活的游戏将触发 XGameInviteEventCallback,但不会触发 XGameProtocolActivationCallback。
另请参阅
XGameProtocolRegisterForActivationXGameProtocolUnregisterForEventXGameProtocolActivationCallback