协议激活

游戏可以注册自定义 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