Apple ID未找到 - iOS 8应用内购买

4
我正在测试iPhone 6+运行8.1.3的“应用内购买”。基本上,您点击“无广告”按钮,它会带您到一个新的ViewController,该视图控制器处理购买和恢复购买。我在Youtube上遵循了Geeky Lemons的教程。由于我使用了在iTunes Connect中创建的“测试用户”,但每次我按“购买”并提示我登录时,它告诉我“找不到您输入的Apple ID...”。我已经检查了所有地方,并多次检查了常见错误,包括正确的Bundle ID等,但仍然没有任何进展。下面是我的.m文件,后面跟着我的控制台打印输出。正如您所看到的,一切都按照预期工作(我想),直到登录...我只是无法再往前走...

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),产品/App标识。 我已经清理并重建应用程序多次,包括在从 iPhone 中删除它之前和之后,甚至进行了重新启动。 我设置了3个全新的测试用户。 我的税务和银行文件在iTunes Connect等平台上都得到了批准并且有效。 我的银行详细信息是最新的并且有效的。 我的应用程序已准备好提交。 我的测试人员被标记为内部测试人员。 我的测试人员获得了Testflight / beta测试的权限。 应用内购买已包含在"My App"的应用购买部分中。 我的应用内购买状态为“准备提交”。 我也已从我的设备中注销了所有帐户。
我已经完成了无数其他操作,并尝试了所有上述情况的众多变化... 我缺少什么或没做什么? 请帮帮我。谢谢。
更新
我刚刚正在玩耍,出于好奇更改了我的捆绑标识(Bundle ID),当应用程序运行时,purchasedViewController找不到产品,并打印到控制台上“Product Not Found: …”。 所有东西都是链接好的,从我所看到的...只是无法验证Test Apple ID。请帮忙。
另一个更新
我还重新完成了整个过程,但使用教程,这是一个略有不同的实现,但仍然存在相同的问题。我的测试Apple ID从未被找到:(

前往您的设备设置>iTunes和App Store>点击您的Apple ID>注销>然后尝试在您的应用程序中进行IAP。 - Daniel Storm
正如我在问题中提到的,我已经“从我的设备上注销了所有帐户”... - Reanimation
1个回答

6
经过多个小时在Stack-Exchanges、Google和苹果开发者论坛的搜索后,我终于找到了一个帮助我的答案...现在我感觉自己真的很蠢。感谢这里的THIS答案,我解决了我的问题,并成功购买了我的应用内购买使用测试用户
基本上,我是在错误的地方创建了一个测试用户...
是的,你需要在你的iTunes Connect账户中创建一个测试用户,但你必须选择“Sandox Tester”,而不是像我最初做的那样在“iTunes Connect User”中创建。 第一步 登录iTunes Connect,选择“Users and Roles”: 选择"Users and Roles" 第二步 选择“Sandbox Testers”,并通过点击“蓝色+”按钮在此处创建一个应用内购买测试者。 选择"Sandbox Testers" 第三步 使用新的沙盒测试者凭据,在测试购买时在您的应用程序中提示登录App Store(确保您的设备上通常的iTunes账户已注销)。
希望这可以帮助到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接