应用程序内购买(iOS)不适用于某些本地商店

时间:2013-02-28 15:25:28

标签: ios objective-c app-store in-app-purchase

我们在一年前(2011年12月10日)发布了我们的iOS游戏“民主”/“демократия”。自推出以来,到目前为止,我收到来自乌克兰和白俄罗斯的此应用程序用户的索赔,他们无法在我们的应用程序中进行任何In App Purchase。与此同时,来自俄罗斯,美国,英国,法国,哈萨克斯坦等国家的用户可以毫无问题地购物。 在其他应用程序中,他们可以购买(例如Candy Crush Saga)。 我一遍又一遍地阅读有关iAP的Apple文档,并且无法找到为什么所有的iaps都不适合乌克兰和白俄罗斯的原因。我有白俄罗斯(白俄罗斯)帐户,也不能从我自己的游戏中购买iAP))但是当我用俄罗斯帐户做同样的事情时 - 它正在工作!

我的所有购买都以“无效的产品ID”形式返回。

游戏链接(别担心,它是免费的) - https://itunes.apple.com/us/app/demokratia/id484436490?mt=8

我也可以用独立代码重现这个问题。我在这个页面上找到了示例项目http://www.raywenderlich.com/2797/introduction-to-in-app-purchases并下载了它,在设备上启动 - 我看到了同样的问题:我成功检索了美国,俄罗斯的IAP列表,但白俄罗斯,乌克兰的列表是空的

再现的步骤 我可以用真实账户和iTunes测试账户重现问题。我使用iPad,iPhone和iOS 5.1,6.0 - 看起来无论使用什么设备都没关系。我正在使用iOS 6 SDK,xCode 4.5.2

  1. 我需要重现此问题的所有方法是将设备(例如iPad)上的App Store切换到白俄罗斯或乌克兰。您可以使用白俄罗斯或乌克兰帐户登录。

  2. 下载“民主”(“Демократия”,com.neskinsoft.Democracy)

  3. 然后启动应用程序,单击“播放”,然后关闭帮助窗口(单击右上角的按钮) 3.1单击带有购物车图标的按钮(您可以在UI的顶部找到它) 3.2将显示商店对话框。点击右下方的按钮(带猪和硬币的按钮) 3.3。需要钱“НужныДеньги”对话框将会显示。单击“60 000”,“$ 1.99”行中的按钮。此按钮调用IAP。

  4. 3.3之后 - 即使是询问用户密码的对话也不会显示在乌克兰/白俄罗斯的iTunes帐户中。但是对于所有其他国家(例如俄罗斯,美国,英国等),它运作正常!

    我检查并调试了我的代码,调试了问题。

    代码非常简单,我遵循了Apple文档中的所有说明。

    这种方法我打电话在我的代码中购买6万金币:

    - (void)loadStoreAndBuy60000Gold
    {
        // restarts any purchases if they were interrupted last time the app was open
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    
        // get the product description (defined in early sections)
        [self requestProductData: kInAppPurchase_60000GOLD]; // PLEASE NOTE kInAppPurchase_60000GOLD = "013", I didn't use reverse DNS and it's working
    }
    

    我问产品ID:

    - (void)requestProductData: (NSString*) objectID
    {
        NSSet *productIdentifiers = [NSSet setWithObject: productID]; // In this case productID = "013"
        productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
        productsRequest.delegate = self;
        [productsRequest start];
    

    在这种方法中,我发现了问题:

    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    {
    
        if ([self canMakePurchases]) // Returns TRUE
      {
            NSArray *products = response.products; // Here I receive product list, but for Ukraininan/Belarussian accounts it's EMPTY. So, no dialogs will appear since no product found. But for Russian/USA and so on accounts it returns me product!
    
          //.....
          // then I check invalidProductID
        for (NSString *invalidProductId in response.invalidProductIdentifiers)
        {
            NSLog("Invalid product id: %@" , invalidProductId); // And I found my product "013" is in invalid product ids!
    
        }
      }
    

    你能帮我解决这个问题吗?为什么我没有收到某些市场产品清单?

0 个答案:

没有答案