如何将UWP应用从试用版切换为应用内购买模式?
我来帮你梳理下从试用+付费模式切换到免费+应用内购买模式的完整步骤,解决你提到的试用用户无法购买内购的问题:
解决方案:移除试用版并切换到应用内购买驱动的免费UWP应用
1. 先完成后台配置:移除试用版,设置应用为免费
- 登录Microsoft Partner Center,找到你的应用进入定价和可用性页面
- 把原有的“试用+付费”定价方案改成免费,保存更改。这一步是核心,确保用户下载后直接进入无试用限制的免费状态,彻底避免试用模式下无法购买内购的问题。
2. 替换原有许可证逻辑为内购校验
原来的代码里肯定有判断TrialMode的逻辑,需要全部替换成检查“完整版”内购的激活状态:
- 删掉所有和
LicenseInformation.TrialMode相关的代码,因为应用设为免费后,这个属性会始终返回false - 改用内购的ProductId来判断用户权限,示例代码如下:
// 初始化时检查完整版权限 private bool _hasFullAccess; private const string FullVersionProductId = "你的完整版内购ProductId"; private void CheckFullVersionAccess() { var licenseInfo = CurrentApp.LicenseInformation; _hasFullAccess = licenseInfo.ProductLicenses[FullVersionProductId].IsActive; if (_hasFullAccess) { UnlockAllFeatures(); // 解锁全部功能 } else { ShowPurchasePrompt(); // 显示购买入口 } } // 处理完整版购买逻辑 private async void PurchaseFullVersionBtn_Click(object sender, RoutedEventArgs e) { try { // 发起购买请求,第二个参数设为false表示不显示成功提示框 await CurrentApp.RequestProductPurchaseAsync(FullVersionProductId, false); // 购买后重新校验权限 CheckFullVersionAccess(); } catch (Exception ex) { // 处理购买失败场景:用户取消、网络问题等 MessageBox.Show($"购买失败:{ex.Message}"); } }
3. 原试用/付费用户的平滑迁移
如果之前有存量用户,要确保他们的体验不受影响:
- 对于已经购买过原完整许可证的用户:可以在Partner Center后台配置“许可证转换”,把原许可证映射到新的“完整版”内购,或者在代码里通过
LicenseInformation.IsActive(原应用许可证)判断,自动为这类用户激活内购权限 - 对于还在试用期中的用户:可以给他们提供限时优惠购买完整版的入口,或者直接延长试用直到他们完成购买转换
4. 新增其他内购项的注意事项
- 所有新内购项都要在Partner Center里创建,确保代码里的ProductId和后台完全一致
- 因为应用已经是免费状态,所有用户都可以正常发起内购请求,不会再出现试用模式下的购买错误
- 若是消耗型内购,记得在用户使用后调用
CurrentApp.ReportProductFulfillmentAsync标记已消费,允许用户重复购买
5. 关键测试点
- 用
CurrentAppSimulator在本地模拟不同场景:未购买、已购买完整版、已购买其他内购,确保逻辑正常 - 测试原付费用户在更新应用后,是否能自动获得完整版权限
- 验证免费用户的功能限制、购买流程、购买后的功能解锁是否顺畅
内容的提问来源于stack exchange,提问作者Emil
相关产品推荐
相关产品推荐

