我正在测试运行8.1.3的iPhone 6+上的“应用内购买”阶段。
基本上,您点击“无广告”按钮即可转到新的ViewController处理购买和恢复购买。
我在Youtube上关注了Geeky Lemons教程。
出于某种原因,每次我按“购买”,并提示我登录,它告诉我“你输入的Apple ID无法找到......”即使我正在使用“测试”用户“在iTunes Connect中创建。
我到处都是并且多次检查常见错误,包括正确的捆绑ID等,但仍然没有。
下面是我的.m
,然后是我的console
打印输出。正如你所看到的那样一切正常(我认为)直到签约......我再也无法得到任何进一步的......
PurchasedViewController:
#import "PurchasedViewController.h"
@interface PurchasedViewController ()
@end
@implementation PurchasedViewController
- (void)viewDidLoad {
[super viewDidLoad]; // Do any additional setup after loading the view.
_buyButton.enabled = NO;
NSLog(@"Default ID: %@", self.productID);
self.productID = @"My IAP ID";
NSLog(@"Assigned ID: %@", self.productID);
[self getProductID];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.
}
- (IBAction)BuyProduct:(id)sender {
SKPayment *payment = [SKPayment paymentWithProduct:_product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
NSLog(@"Buy Button Pressed...");
}
- (IBAction)Restore:(id)sender {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
NSLog(@"Restore Button Pressed...");
}
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{
[self UnlockPurchase];
}
-(void)getProductID{
NSLog(@"getProductID Called, ID is: %@", self.productID);
if([SKPaymentQueue canMakePayments]){
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:self.productID]];
request.delegate = self;
[request start];
NSLog(@"request started...");
}
else{
_productDescription.text = @"Please enable in app purchasing in your settings";
NSLog(@"can't make payment...");
}
}
-(void)UnlockPurchase{
_buyButton.enabled = NO;
[_buyButton setTitle:@"Purchased" forState:UIControlStateDisabled];
NSLog(@"Unlocking purchase...");
[self Purchased];
}
-(void)Purchased{
Label.text = @"Has Now Been Purchased";
NSLog(@"Updating label...");
}
#pragma mark _
#pragma mark SKProductsRequestDelegate
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSArray *products = response.products;
if(products.count !=0){
_product = products[0];
_buyButton.enabled = YES;
_productTitle.text = _product.localizedTitle;
_productDescription.text = _product.localizedDescription;
for (SKProduct *product in products) {
NSLog(@"Assuming Product Found: %@", product); //list address of product
}
}
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: [self UnlockPurchase]; NSLog(@"Transaction Successful...");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed: NSLog(@"Transaction Failed...");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
default:
break;
}
}
}
@end
NSLogs:
2015-05-13 03:32:10.433 My App [187:3217] Default ID: (null)
2015-05-13 03:32:10.434 My App [187:3217] Assigned ID: My IAP ID
2015-05-13 03:32:10.434 My App [187:3217] getProductID Called, My IAP ID
2015-05-13 03:32:10.436 My App [187:3217] request started...
2015-05-13 03:32:13.215 My App [187:3217] Assuming Product Found: <SKProduct: 0x1700190c0>
2015-05-13 03:32:14.944 My App [187:3217] Buy Button Pressed...
我已查看我的Bundle ID,产品/应用ID。 我已经多次清理并构建了应用程序,在从iPhone上删除之前和之后,即使重新启动也是如此。 我已经设置了3个测试用户,全新的。 我在iTunes Connect等上的税务和银行业务文件已获得批准且有效。 我的银行详细信息是最新且有效的。 我的应用程序已准备好提交。 我的测试人员被标记为内部测试人员。 我的测试人员已获得testflight / beta测试的许可。 应用程序内购买已包含在“我的应用程序”的“应用程序购买”部分中。 我的应用内购买状态为“准备提交”。 我也在我的设备上退出了所有帐户。
我已经完成了无数其他的事情,并尝试了以上所有的琐事...... 我错过了什么或者没有做什么? 请帮忙。感谢。
更新
刚刚玩弄并且好奇地改变了我的Bundle ID,当应用程序运行时,purchasedViewController
找不到产品并打印到控制台Product Not Found: ...
。所以一切都与我所看到的相关联......它无法验证测试Apple ID。请帮忙。
另一次更新
我也重新完成了整个过程,但是使用了THIS教程,这是一个稍微不同的实现,但我仍然遇到同样的问题。我的测试Apple ID从未被发现:(
答案 0 :(得分:6)
因此,经过数小时搜索Stack-Exchanges,Google和Apple Dev论坛后,我终于找到了一个帮助我的答案......现在我觉得自己真的很蠢。
感谢此Exchange上的THIS回答,我已解决了我的问题,现已成功使用Test User
购买了应用内购买。
基本上,我在错误的地方创建Test User
......
是的,您在iTunes Connect帐户中创建了Test User
,但必须选择“Sandox Tester
”,而不是像我原来那样在“iTunes Connect User
”中创建它。
首先登录iTunes Connect,然后选择“用户和角色”:
第二次选择“沙盒测试人员”并点击“蓝色+”按钮在此处创建应用内购买测试人员。
<强>第三强>
在测试购买时,在应用程序中出现提示时,使用新的Sandbox Tester凭据登录App Store。 (确保您已经从设备上的常用iTunes帐户注销)。
我希望这会有所帮助。