AppId和Package Id是否相同?

时间:2016-03-10 15:10:57

标签: uwp windows-store-apps win-universal-app windows-10-universal

我想打开当前应用程序的Windows应用商店(因此用户可以对应用进行评分/评论)。在这样做时,我需要获取App ID。但是,我遇到this article in SO表示CurrentApp.AppId需要花费大量时间,并提供包ID作为替代。我之前从未在Windows应用商店发布应用,如果没有在Windows应用商店发布/发布的应用,则无法立即测试。

任何人都可以帮我确认以下两行代码吗?

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

2 个答案:

答案 0 :(得分:4)

不,AppIdPackageId不相同。

正如您所看到的,AppIdGuid结构,而PackageId是一个类。当您的应用已经过认证可以在Windows应用商店中列出时,Windows应用商店会生成AppId,而PackageId会提供包裹识别信息,例如您的应用中可以找到的名称,版本和发布商表现。

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

但是,如果要启动产品的产品详细信息页面(PDP)。建议Windows 10上的客户使用产品ID。产品ID不是AppId

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

  

可以在每个应用程序的“应用程序管理”部分的App identity页面的Windows开发人员中心仪表板中找到这些值。

要以编程方式获取它,我们可以尝试使用CurrentApp.LinkUri属性,此属性返回Windows应用商店列表页面的URI,如:

  

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

产品ID也是不变的,因此我认为您可以在Windows开发人员中心仪表板中找到它并在您的应用中对其进行硬编码。

答案 1 :(得分:1)

这可以让你得到你想要的东西:

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

商店将处理ms-windows-store:协议,参数会将其指向您应用的“评分和评论”部分。