C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – SKPaymentQueue addPayment并不总是触发本机确认对话框大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,我正在将IAP实施到iOs应用程序中,只有商店中的某些产品实际上会触发本机购买处理对话框. @H_197_5@ @H_197_5@背景:

@H_197_5@该应用程序使用COcos2dx与javascript绑定进行交叉平台化.我们正在进入iOs原生部门,以实现商店处理.

@H_197_5@这些调用都正常工作:

@H_197_5@
[[SKPaymentQueue defaultQueue] addtransactionObserver:self];
[SKPaymentQueue canMakePayments];
[[SKProductsrequest alloc] initWithProductIdentifiers:productIdentifiers];
@H_197_5@关于最后一个的说明.检查所有产品ID并在productsrequest:request didReceiveResponse:response callBACk中返回有效,但前提是我没有在发送的标识符中包含bundle id.我看到的大多数示例都说这是必需的,但如果包含它们,它们都将作为invalidProductIdentifiers返回.这可能表明存在问题吗?

@H_197_5@因此,目前一些产品在将(先前已验证的)ID传递给[[SKPaymentQueue defaultQueue] addPayment:payment]之后调出本机购买确认对话框.他们中的大多数人后来什么都不做. payQueue上没有回调:queue更新事务:事务,没有错误代码,没有崩溃.

@H_197_5@我无法看到为什么有些工作而大多数工作没有的模式.至少一个消耗品,非消耗品和订阅工作,所以我不认为这是.我发现,如果我在[[SKPaymentQueue defaultQueue] addPayment:payment]之后暂停并逐步执行代码暂停,那么一些产品可能会更频繁地工作,尽管它不一致.这让我觉得它可能是一个线程问题,但你可以看到我在下面尝试过的内容并没有帮助.

@H_197_5@我试过的事情:

@H_197_5@阅读SO和其他地方,人们建议changing test users,clearing the queue [[SKPaymentQueue defaultQueue] finishtransaction:transaction],Apple的沙盒服务器有时“有问题”.但这一切都没有解决它,并且让我感到奇怪的是我没有遇到崩溃或错误,它只是对某些产品ID没有反应.

@H_197_5@这是我尝试过的一些事情的实际调用

@H_197_5@
- (void)purchaseProductWithId:(const char*)item_code
{
   /** OCCASIONALLY MAY NEED TO CLEAR THE QUEUE **
   NSArray *transactions = [[SKPaymentQueue defaultQueue] transactions];
   for(id transaction in transactions){
      [[SKPaymentQueue defaultQueue] finishtransaction:transaction];
   }// */

// dispatch_async(dispatch_get_main_queue(),^ {
      SKPayment *payment = [SKPayment paymentWithProductIdentifier:[NSString StringWithUTF8String:item_code]];
//    [[SKPaymentQueue defaultQueue] performSELEctorOnMainThread:@SELEctor(addPayment:) withObject:payment waitUntilDone:NO];
      [[SKPaymentQueue defaultQueue] addPayment:payment];
// } );
}
@H_197_5@如果有任何其他代码可能有用,请告诉我.

@H_197_5@谢谢你的帮助.

@H_197_5@编辑:
我已经从this问题添加了hasAddObserver检查,这也不是问题.

解决方法

原来这是暂时的事情.我不想指责Apple的沙盒服务器是不稳定的,但没有任何改变,几天后它突然起作用. @H_197_5@ @H_197_5@所以如果你有类似的问题可能需要休息一下,以后再回来?

大佬总结

以上是大佬教程为你收集整理的c – SKPaymentQueue addPayment并不总是触发本机确认对话框全部内容,希望文章能够帮你解决c – SKPaymentQueue addPayment并不总是触发本机确认对话框所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。