2015-05-13 19 views
4

我正在運行8.1.3的iPhone 6+上測試「應用內購買」的階段。Apple ID not found - 應用內購買iOS 8

基本上,你點擊「無廣告」按鈕,它會帶你到一個新的ViewController處理購買和恢復購買。

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

出於某種原因,每當我按下「購買」,它會提示我登錄,它會告訴我「您輸入的Apple ID無法找到...」,即使我正在使用「測試用戶「在iTunes Connect中創建。

我到處都在檢查幾次常見的錯誤,包括正確的Bundle ID等,但仍然沒有。

以下是我的.m,之後是我的console打印輸出。正如你所看到的一切工作,因爲它應該(我認爲),直到在...我只是不能得到任何futher簽署...

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... 

我檢查我的包ID,產品/應用程序ID。 我已經清理並構建了應用程序幾次,在從iPhone中刪除之前和之後,即使重新啓動。 我已經設置了3個測試用戶,都是全新的。 iTunes Connect等我的稅務和銀行業務文件已獲批准且有效。 我的銀行信息是最新且有效的。 我的應用程序已準備好提交。 我的測試人員被標記爲內部測試人員。 我的測試人員有權進行testflight/beta測試。 應用程序內購買已包含在「我的應用程序」中的應用程序購買部分。 我的應用內購買狀態爲「準備提交」。 我也登出了我設備上的所有帳戶。

我已經做了無數其他的事情,並嘗試了以上所有的nurmeous permuations ... 我失蹤或不做什麼? 請幫忙。謝謝。

更新

只是被玩弄,並改變了我的包ID出於好奇,當應用程序運行時,purchasedViewController不會在產品和定位打印到控制檯Product Not Found: ...。因此,所有內容都與我所能看到的相關聯......它只是無法驗證測試Apple ID。請幫忙。

另一個更新

我也重新做了整個過程,但使用THIS教程,這是一個稍微不同的實現,但仍,我得到了同樣的問題。我的測試Apple ID從來沒有被發現:(

+0

轉到您的設備設置> iTunes和App Store>點擊Apple ID>註銷>然後嘗試應用程序中的IAP。 –

+0

正如在我的問題中提到的,我已經'在我的設備上的所有帳戶中籤出'... – Reanimation

回答

5

因此,經過幾個小時的搜索堆棧交換,谷歌和蘋果開發者論壇,我終於找到了一個答案,幫助了我......現在我感到非常愚蠢。

感謝THIS在這個交易所的答案,我已經解決了我的問題,現在已經成功購買了我的應用內購買,使用Test User

基本上,我創建在錯誤的地方Test User ...

是的,你創建一個Test User在iTunes Connect帳戶,但你必須選擇「Sandox Tester」而不是「iTunes Connect User」創建爲我原本是在做。

首先登錄到iTunes Connect中,選擇「用戶和角色」:

Select "Users and Roles"

選擇「沙盒測試儀」,並點擊這裏創建一個應用程序內購買測試儀「藍色+「按鈕。測試時,購買你的應用程序提示時

Select "Sandbox Testers"

使用新的沙盒測試憑據登錄到App Store中。 (請確保您的設備上的常用iTunes帳戶也已註銷)。

我希望這會有所幫助。