未找到 Apple ID - 应用内购买 iOS 8
Apple ID not found - In-App Purchase iOS 8
我正在 iPhone 6+ 运行 8.1.3.
上测试 "in app purchase"
基本上,您单击 "no ads" 按钮即可进入一个新的 ViewController,该按钮处理购买和恢复购买。
我在 Youtube 上关注了 Geeky Lemons 教程。
出于某种原因,每次我按 "buy" 并提示我登录时,它都会告诉我 "The Apple ID you entered couldn't be found..." 即使我使用的是在 iTunes 中创建的 "Test User"连接。
我到处都检查了几次常见错误,包括正确的 Bundle ID 等,但仍然没有。
下面是我的 .m
,然后是我的 console
打印输出。如您所见,在登录之前一切正常(我认为)......我无法进一步......
已购买ViewController:
#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,product/App ID。
在从 iPhone 中删除应用程序之前和之后,我已经多次清理和构建该应用程序,即使重新启动也是如此。
我设置了 3 个测试用户,都是全新的。
我在 iTunes Connect 上的税务和银行文件等已获批准且有效。
我的银行详细信息是最新且有效的。
我的应用程序已准备好提交。
我的测试人员被标记为内部测试人员。
我的测试人员有权进行 testflight/beta 测试。
应用内购买已包含在 "My App" 的应用购买部分。
我的应用内购买状态是 "Ready To Submit"。
我也退出了我设备上的所有帐户。
我已经做了无数其他事情并尝试了以上所有的无数排列...
我错过了什么或没有做什么?
请帮忙。谢谢。
更新
只是出于好奇改变了我的 Bundle ID,当应用程序运行时,purchasedViewController
没有找到产品并打印到控制台 Product Not Found: ...
。所以一切都从我所看到的链接起来......它只是无法验证测试Apple ID。请帮忙。
另一个更新
我也重新完成了整个过程,但是使用 THIS 教程,这是一个稍微不同的实现,但我仍然遇到同样的问题。从未找到我的测试 Apple ID:(
所以在 Stack-Exchanges、Google 和 Apple Dev Forums 搜索了很多小时之后,我终于找到了一个对我有帮助的答案......现在我觉得自己真的很笨。
感谢 THIS 在此交流中的回答,我已经解决了我的问题,现在已经使用 Test User
.
成功购买了我的应用内购买
基本上,我在错误的地方创建了 Test User
...
是的,您在 iTunes Connect 帐户中创建了一个 Test User
,但您必须 select "Sandox Tester
" 而不是像我一样在 "iTunes Connect User
" 中创建它原来是在做。
首先登录iTunes Connect,然后select"Users and Roles":
第二个 Select "Sandbox Testers" 并通过单击 "Blue +" 按钮在此处创建应用内购买测试器。
第三
在测试购买时,在您的应用中出现提示时,使用新的 Sandbox Tester 凭据登录 App Store。 (确保您也已退出设备上常用的 iTunes 帐户)。
希望对您有所帮助。
我正在 iPhone 6+ 运行 8.1.3.
上测试 "in app purchase"基本上,您单击 "no ads" 按钮即可进入一个新的 ViewController,该按钮处理购买和恢复购买。
我在 Youtube 上关注了 Geeky Lemons 教程。
出于某种原因,每次我按 "buy" 并提示我登录时,它都会告诉我 "The Apple ID you entered couldn't be found..." 即使我使用的是在 iTunes 中创建的 "Test User"连接。
我到处都检查了几次常见错误,包括正确的 Bundle ID 等,但仍然没有。
下面是我的 .m
,然后是我的 console
打印输出。如您所见,在登录之前一切正常(我认为)......我无法进一步......
已购买ViewController:
#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,product/App ID。 在从 iPhone 中删除应用程序之前和之后,我已经多次清理和构建该应用程序,即使重新启动也是如此。 我设置了 3 个测试用户,都是全新的。 我在 iTunes Connect 上的税务和银行文件等已获批准且有效。 我的银行详细信息是最新且有效的。 我的应用程序已准备好提交。 我的测试人员被标记为内部测试人员。 我的测试人员有权进行 testflight/beta 测试。 应用内购买已包含在 "My App" 的应用购买部分。 我的应用内购买状态是 "Ready To Submit"。 我也退出了我设备上的所有帐户。
我已经做了无数其他事情并尝试了以上所有的无数排列... 我错过了什么或没有做什么? 请帮忙。谢谢。
更新
只是出于好奇改变了我的 Bundle ID,当应用程序运行时,purchasedViewController
没有找到产品并打印到控制台 Product Not Found: ...
。所以一切都从我所看到的链接起来......它只是无法验证测试Apple ID。请帮忙。
另一个更新
我也重新完成了整个过程,但是使用 THIS 教程,这是一个稍微不同的实现,但我仍然遇到同样的问题。从未找到我的测试 Apple ID:(
所以在 Stack-Exchanges、Google 和 Apple Dev Forums 搜索了很多小时之后,我终于找到了一个对我有帮助的答案......现在我觉得自己真的很笨。
感谢 THIS 在此交流中的回答,我已经解决了我的问题,现在已经使用 Test User
.
基本上,我在错误的地方创建了 Test User
...
是的,您在 iTunes Connect 帐户中创建了一个 Test User
,但您必须 select "Sandox Tester
" 而不是像我一样在 "iTunes Connect User
" 中创建它原来是在做。
首先登录iTunes Connect,然后select"Users and Roles":
第二个 Select "Sandbox Testers" 并通过单击 "Blue +" 按钮在此处创建应用内购买测试器。
第三
在测试购买时,在您的应用中出现提示时,使用新的 Sandbox Tester 凭据登录 App Store。 (确保您也已退出设备上常用的 iTunes 帐户)。
希望对您有所帮助。