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集合,分散在不同的命名空间:
- Windows.Services.Store, 1607版本中引入。如果App的兼容目标是Windows 10 Anniversary Edition (10.0; Build 14393)以及之后的版本,建议采用此API集合。它支持商店管理的消费型扩展,以及将来会有更多功能。
- Windows.ApplicationModel.Store ,老版API,好吃是所有Windows 10都支持。参考https://docs.microsoft.com/en-us/windows/uwp/monetize/in-app-purchases-and-trials-using-the-windows-applicationmodel-store-namespace
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的实例之后,可以调用相应的方法来:
- 获得应用和扩展信息 https://docs.microsoft.com/en-us/windows/uwp/monetize/get-product-info-for-apps-and-add-ons
- 获取当前应用的授权信息 https://docs.microsoft.com/en-us/windows/uwp/monetize/get-license-info-for-apps-and-add-ons
- 购买一个应用的授权
- 以及其他任务
Store sample提供了一个使用该API集合的示例
Implement in-app purchases
分几步走:
- 在Partner Center注册扩展'
- 获取产品和授权信息,并且判断授权是否生效
- 如果没有相应授权,提示购买
Implement trial functionality
- 在Partner Center创建试用信息
- 获取产品和授权信息,并且判断授权是否生效
- 如果是试用版,只允许用户试用试用功能
Test your in-app purchase or trial implementation
通过Windows.Services.Store提供的API需要上传APP之后再下载安装测试。
- 可以提交App,但是不公开。而且可以通过package flights测试
- 确定你在Partner Center和代码中完成了相应的操作
- 在Visual Studio中把应用和项目关联起来(否则StoreContext会将ExtendedError 部属设置成0x803F6107)
- 从商店安装应用,至少打开应用一次
- 在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获取。
(未完待续)