在测试期间,应用内购买似乎运作良好,但在发布后就停止了。在我按下“升级”按钮后,它会询问我的密码,然后什么也没有。甚至没有错误消息。
我浏览了 StackOverflow 一段时间,发现了这些问题:
In app purchase does not work when live
In App Purchase not working after it has been approved
我以为我只需要等待,但没有人等待超过 48 小时。对我来说,发布后已经过去了 120 小时。所以我认为这可能与我的代码有关。
我的算法是基于 Ray Wenderlich 的教程
http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial
首先,在 `applicationDidFinishLaunchingWithOptions: 在我的应用委托(delegate)中
// In app
[myGuideIAP sharedInstance]; //initialize singleton
[[myGuideIAP sharedInstance] tryLoadingProduct]; //my method to load SKProduct
//SKProduct is stored as a @property in the singleton
稍后,在升级 View Controller 中,我检查,如果它没有加载产品,则再次执行 tryloadingProduct 。
单例初始化的经典方式:
+ (myGuideIAP *)sharedInstance {
static dispatch_once_t once;
static myGuideIAP * sharedInstance;
dispatch_once(&once, ^{
NSSet * productIdentifiers = [NSSet setWithObjects:
@"com.mkochukov.myguidemind.proupgrade",
nil];
sharedInstance = [[self alloc] initWithProductIdentifiers:productIdentifiers];
});
return sharedInstance;
}
这是 tryLoadingProduct 方法内部的内容:
- (void)tryLoadingProduct
{
[[myGuideIAP sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products)
{
if (success) {
if (products.count > 0)
_mProduct = products[0];
}
}];
}
当用户尝试购买时,会出现一个警告 View ,要求购买或恢复。就是这样处理的
-(void)alertViewUIAlertView *)alertView willDismissWithButtonIndexNSInteger)buttonIndex
{
if (buttonIndex == alertView.cancelButtonIndex)
return;
if (buttonIndex == 0) {
[[myGuideIAP sharedInstance] buyProduct:[myGuideIAP sharedInstance].mProduct];
}else if (buttonIndex == 1){
[[myGuideIAP sharedInstance]restoreCompletedTransactions];
}
}
然后,当用户点击“购买”按钮时,它会执行:
- (void)buyProductSKProduct *)product {
NSLog(@"Buying %@...", product.productIdentifier);
SKPayment * payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
Best Answer-推荐答案 strong>
听起来像是权利问题,请确保已设置。
关于ios - 发布后近一周内应用内购买仍然无法正常工作,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/21509564/
|