初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客

C#是我多年以来的业余爱好,新搞的东西能用C#的就用C#了。


        在尝试了改用WinUI3之后,仍然无法正常打开商店链接,所幸商店web链接是可以打开的,但是——商店的web链接只能用于应用而不能用于加载项,所以内购仍然是无法实现的。

        尝试了按照桌面桥来处理,竟然解决了内购问题。

目录

一、用HyperlinkButton打开商店链接(只能web商店)

二、代码打开商店链接(可以打开商店应用)

三、内购 加载项(按照桌面桥处理即可打开内购界面)


一、用HyperlinkButton打开商店链接(只能web商店)

        商店链接位于合作伙伴中心的应用下面的:

        有两个链接,一个是商店app的,一个是web版的商店的。

        在窗口上放两个超链接按钮:

			<StackPanel Orientation="Horizontal">
				<HyperlinkButton Content="WebStore" NavigateUri="https://apps.microsoft.com/detail/9P4DJBGG80XV"/>
				<HyperlinkButton Content="AppStore" NavigateUri="ms-windows-store://pdp/?productid=9P4DJBGG80XV"/>
			</StackPanel>

         得到两个按钮:

        点“WebStore”按钮就会打开浏览器跳转到指定的商店页面,点击“AppStore”什么也不会发生(沮丧,是吧?劝退劝退)。

         因为加载项是没有链接的,所以无法实现简单跳转。

二、代码打开商店链接(可以打开商店应用)

        前面用HyperlinkButton打开商店app是无效的,但是用代码却是可以的:

_= Windows.System.Launcher.LaunchUriAsync(new Uri("ms-windows-store://pdp/?productid="+ StoreID));

        这实在是有点摸不到头脑。

三、内购 加载项(按照桌面桥处理即可打开内购界面)

        内购之前用winforms是失败的,打不开商店,改用WinUI3也不行。

        状况就是检索应用信息没问题,获取用户订购状态没问题,走到RequestPurchaseAsync这一步就不会返回了,因为这是异步操作,程序继续,操作永远不会返回,也没有报错。

        内购非常重要,最好应用以免费加内购的方式提供,而不是试用版,一看需要购买用户就走了,根本不试用。

        尝试一下按照桌面桥处理看看效果。

        桌面桥处理:

			context = StoreContext.GetDefault();
			//Desktop Bridge
			{
				// Obtain window handle by passing in pointer to the window object
				var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(windowObject);
				if (hwnd == IntPtr.Zero) 
				{
					sbState.AppendLine("hwnd == IntPtr.Zero");
				}
				// Initialize the dialog using wrapper function for IInitializeWithWindow
				WinRT.Interop.InitializeWithWindow.Initialize(context, hwnd);
			}

        哭死,终于出现了:

        哪个文档说了WinUI3程序是桌面桥应用????


(这里是文档结束)

更多推荐