首页 文章

iPhone InApp购买问题 - canMakePayments总是失败

提问于
浏览
4

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

问题是“[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(创建了一个新应用程序,并检查了Bundle ID)

  • 设置'Rights and Pricing',我的是'free' app

  • 从iTunesConnect上的'Manage In-App purchases'菜单中添加了'consumable Items' . 填写所有文本字段,上传图片以供审核,所有这些字段现在都处于' Waiting for Review '状态 .

  • 创建了一个测试用户

  • 重建(清理并构建)我的应用程序,检查Bundle ID,使用正确的分发证书进行代码签名 . 捆绑包ID与iTunesConnect页面上的应用程序详细信息中显示的捆绑ID完全相同 .

  • 将我新构建的应用程序上传到iTunesConnect(上传的二进制文件,没有代码信号错误),现在处于'Waiting For Review'状态 .

  • 现在我想检查应用内购买工作,我在iPad设备上运行了我的应用程序的调试版本 . 它内置在调试模式下,使用我的开发人员证书进行代码签名,完全相同的代码上传到iTunesConnect .

  • 在我的iPad上,我从iTunesStore退出

  • 跑我的应用程序

  • 当我触发上面的代码时,'canMakePayments'总是失败 .

唯一不同于其他普通iPhone应用程序的是我的基于OpenGl的游戏,因此大多数代码都是用C语言编写的,与用ObjectiveC / C编写的iPhone平台特定的东西连接 .

所以上面的代码是从C模块调用的,并没有创建任何iOS特定的UIViewController . 在我调用[SKPaymentQueue canMakePayments]之前,我是否需要UIViewController?

我错过了什么?

提前致谢 .

2 回答

  • 4

    我很惭愧和尴尬,这完全是我的错误......:$

    我再次按照这里的说明http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/(谢谢'Troy')但没有收获...我尝试撤销并重新颁发证书和配置文件,构建我的应用程序并将其上传到AppStore ..我浪费了几天 .

    最后我发现了问题所在 . :$

    问题是我的iPad设置..(设置 - >一般 - >限制)我记得很久以后我启用了限制,以避免我的孩子错误购买商业的东西......

    对不起家伙这个烂摊子......:$

  • 0

    这就是canMakePayments的文档所说的:如果设备的用户有权进行任何付款,则返回YES . 您无需设置有关付款的任何内容,也无需正确设置有关付款的任何内容,即可调用此方法 . 它直接检查您设备上的设置 .

    作为开发人员,您应该在显示任何与付款相关的用户界面之前检查这一点,以适应用户无法进行任何付款的事实 . 并检查开发设备,如果用户无法付款,您的应用是否表现得相当好 .

相关问题