AppId 和 Package Id 是否相同?

Are AppId and Package Id identical?

我想打开我当前应用程序的 Windows 商店(这样用户就可以 rate/review 出应用程序)。为此,我需要获取 App ID。但是,我遇到 this article in SOCurrentApp.AppId 需要很多时间,并提供包 ID 作为替代。我以前从未在 Windows Store 上发布过应用程序,现在如果没有 Windows Store 上的 released/published 应用程序就无法对其进行测试。

谁能帮我确认一下下面两行代码?

        //var appId = CurrentApp.AppId.ToString();
        var appId = Windows.ApplicationModel.Package.Current.Id;

这应该能满足您的需求:

await Launcher.LaunchUriAsync(new Uri($"ms-windows-store:REVIEW?PFN={Package.Current.Id.FamilyName}"));

商店将处理 ms-windows-store: 协议,参数会将其指向您应用的 "Rate and Review" 部分。

不,AppId and PackageId 不相同。

如您所见,AppId 是一个 Guid 结构,而 PackageId 是一个 class。 AppId 由 Windows 商店生成,当您的应用已通过认证可以在 Windows 商店中列出时,而 PackageId 提供包标识信息,例如名称、版本和可以在您的 appx 清单中找到的发布者。

由于AppId与Windows商店相关,所以第一次尝试获取时,可能需要一些时间。但这不会太长,在我的测试中大约是 1 秒。在此之后,当您再次尝试获取 AppId 时,它会非常快。 (我认为它已经存储在本地机器中,因为它的值是不变的。)

但是,如果您想要启动产品的产品详细信息页面 (PDP)。 Windows 10 的客户推荐产品 ID。并且产品 ID 不是 AppId

获取产品ID,如Launch the Windows Store app所说:

These values can be found in the Windows Dev Center dashboard on the App identity page in the App management section for each app.

要以编程方式获取它,我们可以尝试使用 CurrentApp.LinkUri 属性,此 属性 returns [=40= 中应用列表页面的 URI ] 像这样存储:

https://www.microsoft.com/store/apps/<your app's Product ID>.

产品 ID 也是不变的,所以我认为您可以在 Windows 开发中心仪表板中找到它并将其硬编码到您的应用程序中。