【发布时间】:2017-04-04 01:55:08
【问题描述】:
我已经做了一个 IAP 的演示,并且我已经在苹果帐户中注册了我的演示应用程序,我还添加了产品信息、描述、应用程序 ID、标题、价格层、沙盒帐户,用于测试支付过程为演示中描述。我现在面临两个问题:-
a) 就像弹出窗口第一次要求输入 apple-id/password 一样,我已经提供了这两个值。它将显示我是否要确认我的付款,并在该弹出窗口中显示产品名称和产品价格。单击“确定”后,我什至没有收到来自 Apple 的邮件,所以我如何证明我是否已成功付款。
b) 我还想在购买产品时更改我的登录 ID。但是每次默认情况下都会使用我以前的 id 并向我显示密码框,仅用于输入密码。如何重置此设置?就像我尝试重置模拟器并再次在 iTunes 中的苹果空调中添加新产品一样。因此,如果有人有任何想法,请随时提供帮助。在下面分享我的代码:-
-(void)fetchAvailableProducts{
if ([SKPaymentQueue canMakePayments])
{
SKProductsRequest *request = [[SKProductsRequest alloc]
initWithProductIdentifiers:
[NSSet setWithObject:kTutorialPointProductID]];
request.delegate = self;
[request start];
}
else
NSLog(@"Please enable In App Purchase in Settings") ;
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *products = response.products;
if (products.count != 0)
{
_product = products[0];
NSLog(@"procudt info is %@",_product.localizedTitle);
// _buyButton.enabled = YES;
// _productTitle.text = _product.localizedTitle;
// _productDescription.text = _product.localizedDescription;
[self purchaseProducts];
} else {
//_productTitle.text = @"Product not found";
}
products = response.invalidProductIdentifiers;
for (SKProduct *product in products)
{
NSLog(@"Product not found: %@", product);
}
}
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
NSLog(@"Transaction complete");
break;
case SKPaymentTransactionStateFailed:
NSLog(@"Transaction Failed");
[[SKPaymentQueue defaultQueue]
finishTransaction:transaction];
break;
default:
break;
}
}
}
首先,我只是使用我的产品 ID 获取我的产品,我在委托方法中得到响应,如果计数 >0,则将调用“purchaseProducts”方法。但问题是我的委托方法没有被调用,在我点击“确定”购买产品后什么也没有发生。请分享您的想法。
【问题讨论】:
标签: ios objective-c xcode in-app-purchase