编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China 头条阅读 学淘股 China Travel
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> WinRT-Metro -> UWP: 体验应用内购新接口——StoreContext类 -> 正文阅读

[WinRT-Metro]UWP: 体验应用内购新接口——StoreContext类

Windows 1607 版本(内部版本 14393)之后,微软在 SDK 添加了一些与应用商店相关的新接口,像应用试用与购买、应用内购等。这些接口相对于原来的接口要方便很多。就拿应用内购来说,以前的方式是:开发时,为了方便测试,在项目中添加一个 xml 文件,此文件描述了应用内的产品信息,然后使用 CurrentAppSimulator 来完成相关的操作;当应用要发布到商店时,再将所有的 CurrentAppSimulator 替换成 CurrentApp;而使用新接口,则可以直接在开发环境中,就可以访问我们在开发人员中心(dev.windows.com/dashboard)中添加的产品,这样就和实际的购买操作完全一样,所以新接口更方便,更直观。
新接口的信息如下:

命名空间:Windows.Services.Store
类:StoreContext

以下通过一个 Demo 来体验一下:
1. 首先,在 Windows 开发人员中心,创建一个新的应用作为本次测试的应用,并在它里面创建若干个加载项,并设置好对应的标题、价格等;另外,本例中创建的加载项类型为 Durable 类型,即耐用型。
2. 接下来,新建一个 UWP Project,注意 TargetVersion 和 MinVersion,都应该选 Windows Aniversary Edtion (10.0, Build 14393)。新建完成后,右击项目,选择 Store (商店) -> Associate app with the Store(将 App 与商店关联),在打开的窗口中,将这个项目与刚才在开发人员中心中创建的应用相关联。
3. 将以下 XAML 内容放到 MainPage.xaml 中:

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView x:Name="listProducts" IsItemClickEnabled="True" SelectionMode="Single" ItemClick="listProducts_ItemClick">
            <ListView.ItemTemplate>
                <DataTemplate >
                    <TextBlock Text="{Binding Title}" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>

4. 在 MainPage.xaml.cs 中,添加对命名空间 Windows.Services.Store 的引用,并将以下代码放进去:

        private readonly StoreContext storeContext = StoreContext.GetDefault();

        public MainPage()
        {
            this.InitializeComponent();
            Loaded += MainPage_Loaded;
        }

        private async void MainPage_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            var result = await storeContext.GetAssociatedStoreProductsAsync(new string[] { "Durable" });
            if (result.ExtendedError != null)
            {
                // 出错了
            }
            else
            {
                // 列出所有耐用的(Durable)内购项,并显示
                StringBuilder sb = new StringBuilder();
                var products = result.Products.Values;
                foreach (var item in products)
                {
                    sb.AppendLine($"{item.Title} - {item.StoreId} - {item.InAppOfferToken} - {item.ProductKind} - {item.Price.FormattedPrice}");
                }
                await new MessageDialog(sb.ToString(), string.Empty).ShowAsync();

                this.listProducts.ItemsSource = products;
            }
        }

        private async void listProducts_ItemClick(object sender, ItemClickEventArgs e)
        {
            StoreContext context = StoreContext.GetDefault();
            var product = e.ClickedItem as StoreProduct;
            var result = await context.RequestPurchaseAsync(product.StoreId);
            if (result.Status == StorePurchaseStatus.Succeeded)
            {
                // 成功购买
            }
            else if (result.Status == StorePurchaseStatus.AlreadyPurchased)
            {
                // 已经购买过了
            }
            else if (result.Status == StorePurchaseStatus.NotPurchased)
            {
                // 用户没购买,即用户中途取消了操作
            }
            else if (result.Status == StorePurchaseStatus.ServerError || result.Status == StorePurchaseStatus.NetworkError)
            {
                // 发生错误
            }
        }

编译运行,当从商店获取内购产品完成后,应用将弹出一个对话框显示这些内购产品项的信息。在页面的列表中,点击某一项,即可对该产品进行购买,这个过程和真正的购买操作是完成一样的,并且,它就是真正的购买过程。所以,使用新 API 就是这样简单。
由于上述代码中已经有详细的注释,所以对代码不再解释,如果想要过多了解关于 StoreContext 类以及相关信息,可以参考:
StoreContext Class
ProductKind
应用内购买和试用
  WinRT-Metro 最新文章
背水一战 Windows 10 (76)
背水一战 Windows 10 (75)
uwp ListView列表滑动特效
背水一战 Windows 10 (74)
背水一战 Windows 10 (73)
背水一战 Windows 10 (72)
背水一战 Windows 10 (21)
背水一战 Windows 10 (18)
Win10 UWP 开发系列:使用SplitView实现汉堡
UWP中新加的数据绑定方式x:Bind分析总结
上一篇文章      下一篇文章      查看所有文章
加:2017-02-27 15:06:14  更:2017-05-14 23:00:05 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 头条阅读 学淘股 China Travel 日历 万年历 2020年2日历
2020-2-22 18:22:41
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识