gpt4 book ai didi

c++ - SKPaymentQueue addPayment 并不总是触发 native 确认对话框

转载 作者:可可西里 更新时间:2023-11-01 06:10:08 25 4
gpt4 key购买 nike

好的,我正在将 IAP 实现到 iOs 应用程序中,只有商店中的某些产品实际上触发了 native 购买处理对话框。

背景:

该应用程序使用 cocos2dx 和 javascript 绑定(bind)以实现跨平台能力。我们正在深入研究 iOs native 部门以实现商店处理。

这些调用都正常工作:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[SKPaymentQueue canMakePayments];
[[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];

关于最后一个的注释。所有产品 ID 都经过检查并在 productsRequest:request didReceiveResponse:response 回调中作为有效返回,但前提是我没有在发送的标识符中包含 bundle id。我看到的大多数示例都表示这是必需的,但如果包含它们,它们都会返回为 invalidProductIdentifiers。这是否表示存在问题?

因此目前一些产品在它们的(之前验证过的)id 被传递到[[SKPaymentQueue defaultQueue] addPayment:payment] 后会弹出原生购买确认对话框。他们中的大多数人事后什么都不做。 paymentQueue:queue updatedTransactions:transactions 没有回调,没有错误代码,没有崩溃。

我看不出为什么有些有效而大多数无效的模式。至少一种消耗品、非消耗品和订阅工作,所以我不认为是这样。我发现,如果我在 [[SKPaymentQueue defaultQueue] addPayment:payment] 之后中断并单步执行代码暂停,则有一些产品更频繁地工作的可能性很小,尽管它不一致。这让我认为这可能是一个线程问题,但您可以看到我在下面尝试过的方法但没有帮助。

我尝试过的事情:

阅读SO在其他地方,人们建议 changing test users , clearing the queue使用 [[SKPaymentQueue defaultQueue] finishTransaction:transaction],Apple 的 Sandbox 服务器有时会“有问题”。但这些都没有解决它,令我感到奇怪的是我没有遇到崩溃或错误,它只是对某些产品 ID 根本没有反应。

这是我尝试过的一些实际调用:

- (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];
// } );
}

如果有任何其他有用的代码,请告诉我。

感谢您的帮助。

编辑:我添加了来自 thishasAddObserver 检查问题,这也不是问题。

最佳答案

事实证明这是暂时的。我不想指责 Apple 的沙盒服务器不稳定,但没有任何改变,几天后它突然起作用了。

因此,如果您有类似的问题,可以休息一下,稍后再回来处理吗?

关于c++ - SKPaymentQueue addPayment 并不总是触发 native 确认对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18893865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com