2013-02-05 31 views
4

好吧我正在撕掉我的頭髮。我正在開發一款免費的應用程序(包含廣告和一些鎖定功能)。應用內購買會移除廣告並提供完整的功能。不能讓應用程序內購買工作

因此,我設置了一個SKProductsRequest,將它傳遞給我的產品id(com.mydomain.Myapp.fullversion)並執行'start'。這不會失敗,並繼續致電productsRequest:didReceiveResponse:,其中一個NSLog顯示response.products.count等於零 - 太麻煩了!

所以,首先是愚蠢的問題。

Q1。在我的測試設備上通過Xcode運行我的應用程序時,測試設備是否需要連接到互聯網(例如無線開啓),還是足以讓運行Xcode的Mac有互聯網連接? (已回答:您需要測試設備上的連接)。

Q2.我該如何解決這個問題?

我都檢查以下內容:

是否啓用了應用程式爲你的App ID?:
在根據應用程序ID的Provisioning戶購買我「bundle_seed_id.com.mydomain.Myapp '和'應用內購買'已啓用。

你檢查可銷售你的產品?:
在iTunes Connect中,我創建我的應用程序內購買「com.mydomain.Myapp.fullversion」,它是爲銷售清除。

請問你的項目的.plist包ID匹配你的App ID?:
是它,它被設置爲「com.mydomain.Myapp」。

已經生成並安裝了新的供應配置文件爲新的App ID?:
是的,我已經創建並安裝了PP的「com.mydomain.Myapp」。

你有沒有配置您的項目代碼標誌使用這個新的供應配置文件?:
我只有在輸入「代碼簽名身份」(而不是CS權利,CS資源規則路徑和其他CS標誌)。它已由自動配置文件選擇器> IPhone Developer設置,並且自己匹配Myapp,並設置爲調試>任意SDK和發行版>任何iOS SDK。

正在一個SKProductRequest?:
是的,我使用「com.mydomain.Myapp.fullversion」時,當您使用完整的產品ID。

自從將產品添加到iTunes Connect後,您是否等了幾個小時?:
是的,我已經等了24小時。

您的銀行信息是否在iTunes Connect上處於活動狀態?:
是的。

您是否嘗試過從設備上刪除應用程序並重新安裝?:
很多次。

觀察這裏:在測試設備上,我沒有登錄到「iTunes & App Stores」,當我在測試設備上從Xcode運行應用程序時,它沒有要求我登錄(我有一個測試用戶在iTunes Connect中設置並準備使用)。因此,我的應用程序運行時,調用從SKProductRequest開始,但從不提示我登錄到「iTunes & App Store」。

非常感謝提前。我希望有人可以幫助我獲得應用內購買的工作。拜倫。

更新1:下面是一些代碼,但我不知道有多少,這將有助於,正如我上面說這是失敗的productsRequest:didReceiveResponse:通過不返回任何產品。

首先我打電話:

[[MyappIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) 
    { 
     if (success) 
     { 
      NSLog(@"SUCCESS - WE HAVE PRODUCTS"); 

      _products = products; 

      NSLog(@"_products.count = %d", _products.count); 
     } 
     else 
     { 
      if(products == nil) 
      { 
       NSLog(@"FAILED - WE HAVE NO PRODUCTS"); 
      } 
     } 
    }]; 

該代碼如下所示:

- (void)requestProductsWithCompletionHandler:(RequestProductsCompletionHandler)completionHandler 
{ 
    _completionHandler = [completionHandler copy]; 

    NSLog(@"IAPHelper, requestProductsWithCompletionHandler{}, _productIdentifiers = %@", [_productIdentifiers anyObject]); 

    _productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:_productIdentifiers]; 
    _productsRequest.delegate = self; 
    [_productsRequest start]; 

} 

'開始' 並沒有失敗,接着調用productsRequest:didReceiveResponse:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 

{

NSLog(@"Loading list of products..."); 

NSLog(@"iAPHelper, productRequest:didRecieveResponse{}, Products count = %d", response.products.count); 

一旦你進入這個函數,它就會失敗,因爲response.products.count等於零。

我剛纔添加以下調試代碼productRequest:didRecieveResponse {}

for (NSString *invalidProductId in response.invalidProductIdentifiers) 
{ 
    NSLog(@"Invalid product id: %@" , invalidProductId); 
} 

,並且聲明 'com.mydomain.Myapp.fullversion' 是無效的。

更新2:這已經超出了一個笑話 - 仍然不工作!

我完全按照http://developer.apple.com/library/ios/#technotes/tn2259/_index.html。我認爲這個問題可能是因爲在創建我的應用程序內購買時,我上傳了屏幕截圖 - 但我通過刪除應用程序內購買,重新創建它以確保它處於「等待屏幕截圖」狀態,根據文件。我現在已經等待了12個小時以重新創建應用內購買,以便通過Apple的服務器進行過濾。我從我的測試設備中刪除了該應用程序。檢查我是否從測試設備上的商店註銷。重新啓動我的測試設備。在Xcode中執行'Clean'並重新啓動Xcode。從Xcode運行應用程序並猜測是什麼?產品標識無效!!!! 幫助,請任何人,我失去了我的想法!!!!!

+0

@ s.bandara不幸的是,這也不起作用。 –

回答

6

問題解決了

養TSI蘋果代表終於找到了我的問題後。

在iTunes Connect中查看我的應用程序,它聲明它具有'Myapp'的捆綁ID。而啓用了應用內購買的Provisioning Portal中的App ID是'bundle_seed_id.com.mydomain.Myapp'。什麼不明顯,或者至少對我來說,這個App ID是由一個Bundle ID組成的,該ID必須與iTunes Connect中該應用的Bundle ID相匹配。

我在Provisioning Portal中創建的第一個App ID是通配符。當您完成創建新應用程序的過程時,它希望您輸入從Provisioning Portal中的App ID填充的下拉列表中選擇的Bundle ID。如果你選擇一個具有通配符的Bundle ID,它會要求一個Bundle ID Suffix,這是我輸入'Myapp'的位置,然後'Myapp'最終成爲你的Bundle ID。有點奇怪,因爲我認爲這只是一個後綴。

後來(幾個月後)當我決定要實現應用內購買時,我發現通配符App ID不能用於推送通知或應用內購買。因此,我會在Provisioning Portal中創建一個新的App ID,並按照提示說:「推薦的做法是對App ID的Bundle Identifier部分使用反向域名風格字符串」 - 因此我輸入了' com.mydomain.Myapp」。我不知道我爲App ID創建的Bundle ID必須與以前在iTunes Connect中創建的應用程序的Bundle ID相匹配。

我現在已在Provisioning Portal中創建了一個新的應用程序ID'bundle_seed_id.Myapp',並且我的產品ID'com.mydomain.Myapp.fullversion'不再無效,現在看起來正在工作。

1

A1。您需要測試設備上的連接

A2。發佈一些代碼

+0

我不知道你爲什麼投票。我回答了他的一個問題。您的設備需要連接才能在設備上測試互聯網。您無法使用計算機的連接。請改正。另外,爲了回答問題2,我們需要看到一些代碼。 –

+0

@JayD模擬器上的相同結果 - 它不起作用。 –

+0

@JorisWeimar thx回答Q1。我問的原因是我不確定你是否在測試設備上有連接,如果這會試圖將你帶到真正的應用商店而不是沙盒版本。 –

相關問題