Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在提交到商店之前,我可以测试真实的应用程序内购买吗?_C#_In App Purchase_Windows Store Apps_Winrt Xaml - Fatal编程技术网

C# 在提交到商店之前,我可以测试真实的应用程序内购买吗?

C# 在提交到商店之前,我可以测试真实的应用程序内购买吗?,c#,in-app-purchase,windows-store-apps,winrt-xaml,C#,In App Purchase,Windows Store Apps,Winrt Xaml,在Windows应用商店应用中构建应用内购买需要使用应用内购买模拟器。它几乎与实际的应用内购买名称空间相同。在构建我的应用程序时,我使用模拟器。我已在商店里预订了我的名字。我甚至在应用商店中为我的应用创建了应用内购买。在提交我的应用进行认证之前,是否有办法测试真实的IAP?否,在提交应用进行认证之前,Windows应用商店中的应用内购买不是真实的。这意味着您提交之前的最后一步是将模拟器代码替换为真实代码。而且,是的,这意味着您无法测试真正的代码-Store tester将是第一个为您测试代码的人

在Windows应用商店应用中构建应用内购买需要使用应用内购买模拟器。它几乎与实际的应用内购买名称空间相同。在构建我的应用程序时,我使用模拟器。我已在商店里预订了我的名字。我甚至在应用商店中为我的应用创建了应用内购买。在提交我的应用进行认证之前,是否有办法测试真实的IAP?

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

还有一件事

说到这里,我创建了一个helper类,它包装了real和simulator API。尽管它只能帮助90%的用例,但它非常适合这90%。我已经与IAP产品团队验证了代码,并提交了使用它的真实应用程序

您可以在此处找到此帮助程序:

下面是要删除广告的语法,例如

我将其添加到视图模型中,如下所示:

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;
}
<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}}" />
我将其添加到XAML中,如下所示:

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;
}
<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}}" />


祝你好运

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

还有一件事

说到这里,我创建了一个helper类,它包装了real和simulator API。尽管它只能帮助90%的用例,但它非常适合这90%。我已经与IAP产品团队验证了代码,并提交了使用它的真实应用程序

您可以在此处找到此帮助程序:

下面是要删除广告的语法,例如

我将其添加到视图模型中,如下所示:

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;
}
<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}}" />
我将其添加到XAML中,如下所示:

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;
}
<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}}" />


祝你好运

嗨,杰瑞,我也有同样的问题。我正在尝试使用您的代码片段,并对其进行修改,使其支持可消费的应用程序内购买。只想强调一下,每次购买时,您的代码都会触发两次许可证更改事件,这是故意的吗?不,我认为不会。此外,您还提示我上载最新更新。谢谢你的来信。如果我错了,顺便说一句,而且它确实引发了两次事件,请给我发电子邮件jnixon@microsoft. 如果您正在阅读此评论,请知道,如果它已损坏,我将更新修复程序。收到,谢谢!由于IAP部分不起作用,我两次未能通过认证。测试人员的屏幕截图表明IAP屏幕是空的——这就是为什么我要尝试你的方法。可能是因为我修改了你的代码,导致事件触发了两次,我会等待你的更新,谢谢!嗨,杰瑞,我也有同样的问题。我正在尝试使用您的代码片段,并对其进行修改,使其支持可消费的应用程序内购买。只想强调一下,每次购买时,您的代码都会触发两次许可证更改事件,这是故意的吗?不,我认为不会。此外,您还提示我上载最新更新。谢谢你的来信。如果我错了,顺便说一句,而且它确实引发了两次事件,请给我发电子邮件jnixon@microsoft. 如果您正在阅读此评论,请知道,如果它已损坏,我将更新修复程序。收到,谢谢!由于IAP部分不起作用,我两次未能通过认证。测试人员的屏幕截图表明IAP屏幕是空的——这就是为什么我要尝试你的方法。可能是因为我修改了你的代码,导致事件触发了两次,我会等待你的更新,谢谢!