Marvin's Blog【程式人生】

Ability will never catch up with the demand for it

21 Jun 2020

UWP开发文档【二】:Monetization

Monetization, engagement, and Store services

Windows SDK, Microsoft Advertising SDK, Microsoft Store Services SDK以及Microsoft Store提供很多机会,让你能够变现你的App。

定价方面:

  • App可以定价销售,支持分层定价,还支持促销。
  • 可以提供免费试用期,试用期可以对app进行一些限制,试用期可以无限长
  • App可以提供内购,可以让用户从免费版升级成收费版,可以系统消费型扩展或者耐用型扩展

广告方面:

  • 提供横幅广告,间隙广告(interstitial),线性视频广告,可播放广告,以及原生广告。支持OpenRTB,VAST 2.X,MRAID2,以及VPAID 3标准。并且与MOAT和IAS兼容。
  • 提供广告媒介服务,可以提供适应性的广告内容
  • 提供广告分析报告,可以通过RESTful API查询

其他变现机会:

  • Microsoft Affiliate Program,微软广告联盟
  • A/B experimentation,小规模A/B测试
  • Engage customers with the Microsoft Store Services SDK, 客户支持以及反馈相关的一些API
  • Launch Feedback Hub from your app,通过Feedback Hub收集反馈
  • Configure your app to receive Partner Center push notifications,根据通知响应来分析App的使用率
  • Log custom events for Partner Center,提供自定义事件的分析报告
  • Request ratings and reviews,请求用户评价和打分
  • Microsoft Store services,通过RESTful接口访问分析数据
  • Add retail demo (RDX) features to your app,提供零售演示

分析类型:

  • Payout summary
  • Acquisitions report
  • Add-on acquisitions report
  • Advertising performance report
  • Get analytics data using our REST API
  • Create customer segments
  • Feedback report
  • Usage report

In-app purchases and trials

Windows SDK对下列功能提供API支持:

  • App内购,不管是收费还是免费应用,都支持内购
  • App试用,提供试用功能,可以打横幅或者水印

Choose which namespace to use

WinRT有新旧两套API集合,分散在不同的命名空间:

Basic concepts

Store提供的内容叫做一个产品(Product),常见的产品有两种:应用和扩展(Add-on)。

扩展的例子有这些:

  • 应用自定义的货币
  • 游戏中的武器或者地图
  • 去广告
  • 音乐或者视频内容

每个应用或扩展都有对应的授权,来判断用户是否有权使用。对于扩展的话,需要在Partner Center中国定义,然后在App中通过API来体现。

UWP的扩展可以分为下面这些类型:

  • Durable,耐用型扩展,长期有效
  • Developer-managed consumable,这种扩展能够被反复购买,开发者自己需要管理用户的购买情况
    • 应用必须告诉store用户是否消费完之前购买的扩展,如果消费完了,才能重复购买
    • 举例说明,如果用户购买了100个游戏币,那么应用需要向store报告说用户什么时候花完了这100个游戏币
  • Store-managed consumable,和前一个类似,不过余额是有Store管理的。但是不必等消费完再购买,用户可以重复购买。每次当用户消费了其中一份内容的时候,需要向Store汇报。这种扩展在Windows 10 Anniversary Edition (10.0; Build 14393) 以后的版本支持。
  • Subscription,长期订阅,用户会周期性收到账单,用户可以任意时候取消订阅,这种扩展在 Windows 10 Anniversary Edition (10.0; Build 14393)以后受到支持

In-app purchases and trials using the Windows.Services.Store namespace

有一个简单的视频介绍了如果使用Windows.Services.StoreAPI集。

Windows.Services.Store的核心是StoreContext,可以使用下面的方法获取一个实例:

对于单用户App,可以直接使用GetDefault()方法:

Windows.Services.Store.StoreContext context = StoreContext.GetDefault();

对于多用户App,可以使用静态的GetForUser()方法:

var users = await Windows.System.User.FindAllAsync();
Windows.Services.Store.StoreContext context = StoreContext.GetForUser(users[0]);

对于基于Desktop Bridge的应用,需要操作额外的步骤才能使用StoreContext

获取StoreContext的实例之后,可以调用相应的方法来:

Store sample提供了一个使用该API集合的示例

Implement in-app purchases

分几步走:

  1. 在Partner Center注册扩展’
  2. 获取产品和授权信息,并且判断授权是否生效
  3. 如果没有相应授权,提示购买

Implement trial functionality

  1. 在Partner Center创建试用信息
  2. 获取产品和授权信息,并且判断授权是否生效
  3. 如果是试用版,只允许用户试用试用功能

Test your in-app purchase or trial implementation

通过Windows.Services.Store提供的API需要上传APP之后再下载安装测试。

  1. 可以提交App,但是不公开。而且可以通过package flights测试
  2. 确定你在Partner Center和代码中完成了相应的操作
  3. 在Visual Studio中把应用和项目关联起来(否则StoreContext会将ExtendedError 部属设置成0x803F6107)
  4. 从商店安装应用,至少打开应用一次
  5. 在Visual Studio中运行并测试应用项目。更新代码也不需要重新打包以及上传App。

如果试用Windows.ApplicationModel.Store来进行注册管理,那么可以试用CurrentAppSimulator来模拟授权信息。更多参考Get started with the CurrentApp and CurrentAppSimulator classes.

Windows.Services.Store 不提供类似CurrentAppSimulator的功能。

Using the StoreContext class with the Desktop Bridge

使用Desktop Bridge的需要参考这一章。

Products, SKUs, and availabilities

每个Product在Store里面都有一个对应的SKU,每个SKU至少有一个availability状态。SKU是在Partner Center注册的。

  • Product,产品是一个注册的应用或者扩展。每个产品产品对应着一个StoreProduct,带有产品的上架信息。
  • SKU,一个SKU是产品的一个具体的版本,并且可以有自己相应的描述,以及定价信息。每个产品都有一个默认的SKU。当产品有试用版的时候,那么试用版也可以作为单独的一个SKU。有些发布者会选择发布多个SKU,比如发布一个视频的时候,会发布一个高清版以及一个普通版。每个SKU对应着一个StoreSku。StoreProduct的Skus可以访问相应的SKU列集信息。
  • Availability,一个availability是一个SKU的特定版本,具有特定的定价信息。每个SKU有一个默认的availability。一些发布者会给同一个SKU进行不同的定价,导致产生不同的availability。StoreAvailability对应着SKU的Availability。

Store IDs

每个产品在Store上面都有一个对应的StoreI D,也叫product Store ID。许多API需要Store ID才能正常工作。

Store ID是一个12个字符的字母数字序列,比如:9NBLGGH4R315。以下方法可以用来获取Store ID:

  • 对于应用,在 Partner Center的App identity page可以获取
  • 对于扩展,在扩展的总览页面可以获取
  • 可以通过程序从StoreProduct的StoreId部属获取。

SKU和Availabity的Store ID格式略有不同:

  • SKU, 格式为<product Store ID>/xxxx,示例:9NBLGGH4R315/000N
  • Availability,格式为<product Store ID>/xxxx/yyyyyyyyyyyy,示例:9NBLGGH4R315/000N/4KW6QZD2VN6X

How to use product IDs for add-ons in your code

如果想要扩展在应用内可见,那么在注册扩展的时候必须为扩展登记一个特有的产品ID(不是Store ID,后者是Partner Center自动生成的)。你必须在代码里面通过那个产品ID来引用扩展。

Apps that use the Windows.Services.Store namespace

Windows.Services.Store 命名空间中的API可以很方便地使用产品ID来标识StoreProduct,以及StoreLicense。产品ID可在StoreProduct.InAppOfferToken以及StoreLicense.InAppOfferToken获取。

(未完待续)

Categories

Tags

comments powered by Disqus