Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
iPhone InApp购买问题-CanMakePayment始终失败_Iphone_In App Purchase - Fatal编程技术网

iPhone InApp购买问题-CanMakePayment始终失败

iPhone InApp购买问题-CanMakePayment始终失败,iphone,in-app-purchase,Iphone,In App Purchase,我努力寻找这个问题,也有类似的问题,但找不到我问题的答案 问题是“[SKPaymentQueue canMakePayments]”总是失败。代码非常简单,如下所示 if ([SKPaymentQueue canMakePayments]) // { NSLog(@"able to make payments"); [[SKPaymentQueue defaultQueue] addTransactionObserver:g_custom_store_observer]; //

我努力寻找这个问题,也有类似的问题,但找不到我问题的答案

问题是“[SKPaymentQueue canMakePayments]”总是失败。代码非常简单,如下所示

if ([SKPaymentQueue canMakePayments]) //
{ 
    NSLog(@"able to make payments");
    [[SKPaymentQueue defaultQueue] addTransactionObserver:g_custom_store_observer]; // Register the observer

    SKMutablePayment *myPayment = [SKMutablePayment paymentWithProductIdentifier: strItemName];
    myPayment.quantity = 2;
    [[SKPaymentQueue defaultQueue] addPayment:myPayment];
}
else{
    NSLog(@"not able to make it");
    return KD_FALSE;
}
我想我在测试过程中遗漏了一些东西。到目前为止,我所做的是

  • 将我的应用程序注册到iTunesConnect(创建了一个新应用程序,并检查了捆绑包ID)
  • 设置“权限和定价”,我的是“免费”应用程序
  • 从iTunesConnect上的“管理应用内购买”菜单中添加了“耗材”。 填写了所有的文本字段,上传了供审查的图像,现在所有这些都处于“等待审查”状态
  • 创建了一个测试用户
  • 重建(清理并构建)我的应用程序,检查捆绑包ID,使用正确的分发证书签署代码。捆绑包ID与iTunesConnect页面上应用程序详细信息中显示的ID完全相同
  • 已将我新构建的应用程序上载到iTunesConnect(已上载二进制文件,无代码符号错误),现在处于“等待审阅”状态
  • 现在我想检查应用程序内的购买工作,我在我的iPad设备上运行了我的应用程序的调试版本。它是在调试模式下构建的,代码由我的开发者证书签名,与上传到iTunesConnect的代码完全相同
  • 在我的iPad上,我从iTunesStore注销
  • 运行我的应用程序
  • 当我触发上面的代码时,“canMakePayments”总是失败
<> P>唯一不同于其他普通iPhone应用的是,我的是基于OpenGL的游戏,所以大部分代码都是用C++编写的,与ObjectiveC C++平台上的iPhone平台特定的内容连接。 < >上面的代码是从C++模块调用的,没有iOS特定的UIViewController尚未创建。在调用[SKPaymentQueue canMakePayments]之前是否需要UIViewController

我错过什么了吗


提前谢谢。

我感到非常羞愧和尴尬,这完全是我的错误…:$

我又按照这里的说明做了 (谢谢“特洛伊”)但没有收获。。。 我尝试撤销并重新颁发证书和配置文件,构建应用程序并将其上载到AppStore。。我浪费了好几天

最后我发现了问题所在$

问题是我的iPad设置。。(设置->常规->限制) 我记得很久以前,我启用了限制,以避免我的孩子错误地购买商业物品


对不起,伙计们,这里乱七八糟$

这就是canMakePayments的文档所说的:如果设备的用户有权进行任何支付,它会返回YES。调用此方法不需要设置任何关于付款的内容,也不需要正确设置任何关于付款的内容。它直接用于检查设备上的设置

作为开发人员,您应该在显示任何与付款相关的用户界面之前检查此项,以适应用户无法付款的事实。如果用户无法付款,请在开发设备上检查您的应用程序是否运行良好