【问题标题】:Can I test real In-App Purchases before submitting to the Store?我可以在提交到商店之前测试真正的应用内购买吗?
【发布时间】:2013-02-22 02:26:38
【问题描述】:

在 Windows 应用商店应用中构建应用内购买需要使用应用内购买模拟器。它几乎与真正的应用内购买命名空间相同。在构建我的应用程序时,我使用模拟器。我在商店中保留了我的名字。我什至在商店中为我的应用创建了应用内购买。有没有办法在提交我的应用进行认证之前测试真实的 IAP?

【问题讨论】:

    标签: c# in-app-purchase windows-store-apps winrt-xaml


    【解决方案1】:

    不,在您的应用提交认证之前,Windows 应用商店中的应用内购买并不是“真实的”。这意味着您在提交之前的最后一步是将模拟器代码换成真实代码。而且,是的,这意味着您无法测试您的真实代码 - Store 测试员将是第一个为您测试它的人。

    还有一件事

    话虽如此,我创建了一个辅助类来包装真实 API 和模拟器 API。虽然它只能帮助 90% 的用例,但它非常适合这 90% 的用例。我已经与 IAP 产品团队验证了代码并提交了使用它的真实应用程序。

    你可以在这里找到这个助手:http://codepaste.net/rqwtcy

    如果你想删除广告,这里是语法,例如...

    我像这样将它添加到我的视图模型中:

    public async Task Start()
    {
        // in app purchase setup
        m_HideAdsFeature = await new InAppPurchaseHelper(HIDEADSFAETURENAME,
            System.Diagnostics.Debugger.IsAttached).Setup();
        this.HideAds = m_HideAdsFeature.IsPurchased;
    }
    
    bool m_HideAds = false;
    public bool HideAds { get { return m_HideAds; } set { SetProperty(ref m_HideAds, value); } }
    
    const string HIDEADSFAETURENAME = "HideAds";
    InAppPurchaseHelper m_HideAdsFeature;
    
    // http://codepaste.net/ho9s5a
    DelegateCommand m_PurchaseHideAdsCommand = null;
    public DelegateCommand PurchaseHideAdsCommand
    {
        get
        {
            if (m_PurchaseHideAdsCommand != null)
                return m_PurchaseHideAdsCommand;
            m_PurchaseHideAdsCommand = new DelegateCommand(
                PurchaseHideAdsCommandExecute, PurchaseHideAdsCommandCanExecute);
            this.PropertyChanged += (s, e) => m_PurchaseHideAdsCommand.RaiseCanExecuteChanged();
            return m_PurchaseHideAdsCommand;
        }
    }
    async void PurchaseHideAdsCommandExecute()
    {
        PauseCommandExecute();
        await m_HideAdsFeature.Purchase();
        HideAds = m_HideAdsFeature.IsPurchased;
    }
    bool PurchaseHideAdsCommandCanExecute()
    {
        if (m_HideAdsFeature == null)
            return false;
        return !m_HideAdsFeature.IsPurchased;
    }
    

    我像这样将它添加到我的 XAML 中:

    <UI:AdControl x:Name="MyAdControl"
        Width="250" Height="250"
        HorizontalAlignment="Left" VerticalAlignment="Top"
        AdUnitId="10043107" ApplicationId="d25517cb-12d4-4699-8bdc-52040c712cab"
        Visibility="{Binding HideAds,
                Converter={StaticResource CollapsedWhenTrueConverter}}" />
    

    祝你好运!

    【讨论】:

    • 嗨,杰瑞,我遇到了同样的问题。我正在尝试使用您的代码 sn-p,并对其进行修改以使其支持可消耗的应用内购买。只是希望突出显示您的代码每次购买都会触发两次许可更改事件,这是故意的吗?
    • 不,我认为不会。另外,您提示我上传最新更新。感谢您的注意。如果我错了,顺便说一句,它确实会引发两次事件,请给我发送电子邮件 jnixon@microsoft。如果您正在阅读此评论,请知道我会更新修复程序是否已损坏。
    • 知道了,谢谢!由于 IAP 部分无法正常工作,我两次未能通过认证。测试人员的屏幕截图表明 IAP 屏幕是空的——这就是我尝试你的方法的原因。可能是我修改了你的代码导致事件触发了两次,我等你的更新,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多