由于应用内购买产品在 Wi-Fi 上运行 iOS 14.0.1 的 iPad 上出现错误,App Store 中的应用被拒绝

Posted

技术标签:

【中文标题】由于应用内购买产品在 Wi-Fi 上运行 iOS 14.0.1 的 iPad 上出现错误,App Store 中的应用被拒绝【英文标题】:App refused in App store because of In-app purchase products exhibited bug on iPad running iOS 14.0.1 on Wi-Fi 【发布时间】:2020-09-27 08:14:16 【问题描述】:

我已经第三次收到来自应用商店的拒绝理由。我的应用被拒绝的原因与在运行 ios 14.0.1 的 iPad 中测试时应用内购买存在一个或多个错误相同。我已经在 iPhone iOS 14.0.1 中使用 Testflight 测试了该应用程序,但我从来没有得到它为他们显示的内容。

来自 App Store 的消息

指南 2.1 - 性能 - 应用完整性

我们发现您的应用内购买产品存在一个或多个错误 在通过 Wi-Fi 运行 iOS 14.0.1 的 iPad 上查看时。具体来说,我们 无法完成应用内购买。购买时进入 无限循环,支付机制不断呈现。

接下来的步骤

在您的服务器上验证收据时,您的服务器需要能够 处理从 Apple 获取收据的生产签名应用程序 测试环境。推荐的方法适用于您的生产 服务器始终根据生产 App Store 验证收据 第一的。如果验证失败并显示错误代码“使用沙盒收据 在生产中,”您应该针对测试环境进行验证 而是。

此外,我不在我的代码中验证购买。 我已经在试飞的众多 iPhone 中测试了该应用程序,并且它可以正常工作。另外,我在任何模拟器的开发中都没有遇到这样的错误/错误。 应用商店有什么解决方法吗?

在代码方面,它是Integrating In-App Purchases in Mobile Apps和Purchase Non-Consumable的副本

async Task ExecuteRemoveAdCommand()
        
            if (IsBusy) return;
            IsBusy = true;
            try
            
                var connected = await CrossInAppBilling.Current.ConnectAsync();
                if (!connected)
                
                    await App.Current.MainPage.DisplayAlert("Not Connected", "It seems something is wrong with your connection. " +
                        "We could not connect to the store, please try again", "OK");
                    return;
                
                //try to purchase item
                var purchase = await CrossInAppBilling.Current.PurchaseAsync(Helper.ProductId, ItemType.InAppPurchase, "apppayload");
                if (purchase == null)
                
                    await App.Current.MainPage.DisplayAlert("Not Purchased", "We could not perform your purchase at the moment, please try again", "OK");
                    return;
                
                else
                
                    //Purchased, save this information
                    var id = purchase.Id;
                    var token = purchase.PurchaseToken;
                    var state = purchase.State;
                    if (!string.IsNullOrEmpty(id))
                    
                        await App.Current.MainPage.DisplayAlert("Purchase Successful", "You are enjoying ad free wQuran. Thank you for your purchase", "OK");
                        AdVisibility = false;
                    
                
            
            catch (Exception ex)
            
                Debug.WriteLine(ex.Message);
                await App.Current.MainPage.DisplayAlert("Not Purchased", "We could not perform your purchase at the moment, please try again", "OK");
            
            finally
            
                await CrossInAppBilling.Current.DisconnectAsync();
                IsBusy = false;
            
        

【问题讨论】:

嗨,我不确定你是否在 iPad 上测试过这个。如果您想知道详细原因,您需要在 iPad 设备上进行测试才能看到设备日志。 我没有 iPad,但在开发模式下我没有遇到任何错误。 【参考方案1】:

通过回复应用审查团队,要求他们考虑重新启动 Ipad 并将他们的设备重新连接到互联网,我终于设法让我的应用进入了 App Store。

【讨论】:

以上是关于由于应用内购买产品在 Wi-Fi 上运行 iOS 14.0.1 的 iPad 上出现错误,App Store 中的应用被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

为啥应用内购买方法可以在模拟器上完美运行,但不能在真实设备 iOS 6 上运行?

iOS 应用内购买。识别购买的产品(非消耗品)。

对 Mac 和 iOS 应用内购买使用相同的产品 ID

检索尚未提交的应用内购买产品?

检索尚未提交的应用内购买产品?

应用内购买测试在 IOS 4.01 上失败,适用于 iOS 5+