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

标签 ios xcode cocoa-touch ios8 in-app-purchase

我正处于在运行 8.1.3 的 iPhone 6+ 上测试“应用内购买”的阶段。

基本上,您单击“无广告”按钮,它会将您带到处理购买和恢复购买的新 ViewController。

我在 Youtube 上关注了 Geeky Lemons 教程。

出于某种原因,每次我按“购买”并提示我登录时,它都会告诉我“找不到您输入的 Apple ID...”,即使我使用的是“测试”用户”在 iTunes Connect 中创建。

我到处都检查了几次常见错误,包括正确的 Bundle 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、产品/App ID。 我已经多次清理和构建应用程序,在从我的 iPhone 中删除它之前和之后,即使重新启动也是如此。 我设置了 3 个测试用户,都是全新的。 我在 iTunes Connect 上的税务和银行文件等已获批准且有效。 我的银行详细信息是最新且有效的。 我的应用程序已准备好提交。 我的测试人员被标记为内部测试人员。 我的测试人员有权进行 testflight/beta 测试。 应用内购买已包含在“我的应用”中的应用购买部分。 我的应用内购买状态是“准备提交”。 我也退出了我设备上的所有帐户。

我已经做了无数其他事情,并尝试了上述所有事情的大量排列...... 我错过了什么或没有做什么? 请帮忙。谢谢。

更新

只是出于好奇改变了我的 Bundle ID,当应用程序运行时,purchasedViewController 没有找到产品并打印到控制台 Product Not Found: 。 ..。所以一切都从我所看到的链接起来......它只是无法验证测试Apple ID。请帮忙。

另一个更新

我也重新完成了整个过程,但使用了 THIS教程,这是一个略有不同的实现,但我仍然遇到同样的问题。从未找到我的测试 Apple ID:(

最佳答案

因此,在 Stack-Exchanges、Google 和 Apple Dev Forums 搜索了许多小时之后,我终于找到了一个对我有帮助的答案……现在我觉得自己真的很蠢。

感谢THIS在此 Exchange 上回答,我已经解决了我的问题,现在已经使用 测试用户 成功购买了我的应用内购买。

基本上,我在错误的地方创建了一个测试用户...

是的,您在 iTunes Connect 帐户中创建了一个Test User,但您必须选择“Sandox Tester”,而不是在“iTunes Connect User”中创建它”,就像我最初做的那样。

首先登录iTunes Connect,然后选择“用户和角色”:

Select "Users and Roles"

其次选择“沙盒测试器”并点击“蓝色+”按钮在此处创建一个应用内购买测试器。

Select "Sandbox Testers"

第三

在测试购买时,在您的应用中出现提示时,使用新的 Sandbox Tester 凭据登录 App Store。 (确保您也已在设备上退出您常用的 iTunes 帐户)。

希望对您有所帮助。

关于ios - 找不到 Apple ID - 应用内购买 iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30214034/

相关文章:

ios - collectionView cellForItemAt 没有被调用

javascript - 在 PHP(或服务器端)中检测 iOS 的最新和 future 证明方法

c++ - 为什么 mglData 会导致 BAD ACCESS 异常?

苹果手机 : How to Display Document Directory images in Image View?

ios - 支持 NSString 连接多长时间了?

objective-c - 在 Objective C 中使用 rangeOfString 访问特定字符串

php - Xcode 连接错误

XCode 5 - AppleScript - 如何在当前选项卡中获取文档

ios - 奇怪的 NSPredicate 行为?

ios - Touch drag enter 如何工作?