簡體   English   中英

iPhone Store Kit返回無效的產品ID錯誤

[英]iPhone Store Kit returning invalid product ID errors

我正在嘗試在我的iPhone上測試In App Purchases並遇到一個問題,我在那里請求信息,最終作為“didRecieveResponse”方法中的無效產品ID返回給我。

我有:

  • 創建了與此應用相關聯的商店內商品。 它的捆綁ID與其他所有內容相匹配。 它已被清除出售並得到開發商的批准。
  • 確保我的新配置文件已啟用商店應用程序購買,並且它具有完整的應用程序名稱:“com.domain.appname”
  • 確保這是用於將應用程序簽名到我的iPhone的配置文件。
  • 確保“com.domain.appname”是用於構建配置文件的應用程序ID。
  • 確保在我的plist文件中使用“com.domain.appname”作為包標識符。

一切似乎都已到位,但我仍然將我的產品作為無效ID返回給我。

這是我正在使用的代碼:


- (void)requestProductData {
   SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
   request.delegate = self;
   [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   NSArray *myProducts = response.products;
   NSArray *myInvalidProducts = response.invalidProductIdentifiers;

   for(int i = 1; i < myInvalidProducts.count; ++i)
   {
      std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
   }

   for(int i = 0; i  < myProducts.count; ++i)
   {
      SKProduct * myProduct = [myProducts objectAtIndex:i];
      std::cout << "Product Info:"  << std::endl;
      std::cout << "\tlocalizedTitle         = "  << [[myProduct localizedTitle] UTF8String]  << std::endl;
      std::cout << "\tlocalizedDescription   = "  << [[myProduct localizedDescription] UTF8String]  << std::endl;
      std::cout << "\tproductIdentifier      = "  << [[myProduct productIdentifier] UTF8String]  << std::endl;
      std::cout << "\tprice                  = "  << [[myProduct price] doubleValue]  << std::endl;
      std::cout << "\tpriceLocale            = "  << [myProduct priceLocale]  << std::endl;
   }

   [request autorelease];
}

我的所有產品ID都顯示在無效的打印輸出中,並且沒有一個顯示在“產品信息:”打印輸出中。

任何建議將不勝感激...

PS是的,這是作為Objective-c / c ++構建的。

我嘗試了在Apple論壇和這里建議的所有內容,但仍無法使其工作。 找到解決方案 - 您的應用程序需要通過Xcode傳輸才能啟用沙箱。

很明顯,對吧? 好吧,如果您正在使用現有帳戶的更新,設備仍會將其視為App Store安裝的應用程序。

刪除它,然后再次傳輸。 它現在應該工作:)

刪除測試iPhone上的應用程序並重新安裝它有效。 此外,自提交應用內購買項目以來,我也等了8個小時。

請完成以下步驟:

  1. 使用您的開發者帳戶登錄iTunes連接( https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/ )。

  2. 轉到標簽 - “合同,稅收和銀行業務”

  3. 檢查請求合同和流程中的合同部分。

  4. 查看“iOS付費應用程序” ,然后需要設置聯系信息,銀行信息和稅務信息。

  5. 當“iOS付費應用程序”單元格將移至“合同生效”部分時,我將能夠在應用程序購買中使用“產品”。

請通過以下鏈接獲取更多信息: http//developer.apple.com/library/ios/#technotes/tn2259/_index.html

請注意,當iPhone越獄時, AppSync數據包完全打破了應用內購買測試。 AppSync與Install0us一起作為依賴項安裝。

您無需完全恢復iOS, 只需在Cydia中卸載AppSync即可成功測試應用內購買

在我刪除AppSync之前,所有關於fixind'無效產品'的論壇,教程和評論的所有提示都不適合我。

我一直在嘗試添加應用程序購買的新應用程序(v1.0尚未在商店發布)中遇到類似問題。 我設置了所有內容,添加了產品等,當我進行SKProductsRequest時,我的產品總是無效。

當我在Apple開發者論壇上看到一篇與之相關的帖子時,我正打算放棄整個過程。 它建議從測試設備中刪除應用程序並進行全新的構建+安裝。 這就是訣竅。

只是為了確定,我在另一台給我同樣麻煩的設備上嘗試過它,並且它也修復了它。

這只是一個猜測,但我認為如果設備上有一個構建版本,它是使用在添加IAP之前創建的配置文件創建的,則需要刪除該構建並使用IAP配置文件添加新版本。 (也就是說,簡單地替換應用程序就行不通。)

如果您的代碼沒有任何問題,有時它會返回無效的productId,因為您可能需要超過10小時的時間來更改信息。 生效。 或者,productId無效,因為您的設備上仍然存在錯誤,因此您可以再次嘗試刪除您的應用並重新構建它。 根據我的經驗,希望它會有所幫助。

好的,所以在完成了我可能想到的所有內容並閱讀了那里的每個論壇之后,這是有效的:

重做一切。

  1. 從Xcode管理器中刪除所有配置文件。
  2. 關閉Xcode。
  3. 創建一個新的應用程序ID。
  4. 使用新的App ID創建新的Provisioning配置文件。
  5. 使用新的App ID創建新的Distribution Provisioning配置文件。
  6. 在iTunes Connect中創建一個新應用程序
  7. 啟動Xcode,安裝兩個新的配置文件。 更新yoru包ID以匹配。 還要確保應用程序請求的id字符串更新以反映您的包ID。
  8. 使用新的Distribution Provisioning配置文件在分發模式下構建項目。
  9. 上傳新的二進制文件。 (保持不被拒絕)
  10. 設置您的測試應用內購買。
  11. 使用新的Provisioning配置文件在Debug模式下構建項目。
  12. 測試請求。

這就是讓我的商店工作所需要的。 我最好的猜測是蘋果后端服務器有時會被搞砸,你只需要從頭開始。

希望這有助於每個人!

最近更新了IAP的iTunes Connect界面,可能導致無效:<產品ID>錯誤。

您現在可以在iTunes連接中添加IAP,而無需將默認價格設置為0美元,它將允許您保存該條目。

如果您未事先編輯價格字段,則在按下保存時,舊版本的UI會抱怨。

很容易完全錯過這個字段,任何通過任何iOS調用使用該產品ID獲取信息的嘗試都會導致無效:<產品ID>而不是告訴您它找到<產品ID>定價為0美元。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM