背景:更新的應用程序,新的顯式應用程序ID,應用程序內購買。 SKProductsRequest返回的產品空列表
目前出售的版本我的應用程序的使用通配符應用程序ID和束ID是簡單,不符合com.companyname.appname
約定(它只是'應用程序名稱「)。它使用的應用程序ID僅僅是'bundleseed。*'的格式,我相信在使用配置文件簽名時會導致'bundleseed.appname'。 (爲什麼?因爲這個應用程序自蘋果推薦顯式應用程序ID之前2.x天開始,並且在XCode引入了com.companyname約定之前)。
我正在爲應用程序添加應用程序內購買,這需要一個明確的應用程序ID。我已按照Technical Q&A QA1680 Updating from a wildcard App ID to an explicit App ID中的說明操作。其結果是我有一個新的顯式應用程序ID'newbundleseed.appname',用於簽署應用程序的新配置文件指定了這一點。 info.plist中的包ID保持相同的'appname'。
問題:
當我在舊版本上部署從Xcode中新的應用程序似乎很好地工作。舊版應用程序實例將被新應用程序替換,並且所有新功能都已到位。 但是,當應用程序提交SKProductsRequest時,會產生一個空的產品列表。如果我將新應用程序部署爲全新安裝(而不是複製舊版本),則一切都按預期工作 - SKProductsRequest將生成完整的可用產品列表。
我也注意到升級後的版本會繼承舊版本的某些方面,這對我來說很陌生。具體來說,舊版本的應用程序有一個default.png,新應用程序尚未作爲構建的一部分,但升級後的應用程序在加載時顯示舊的default.png。這就好像升級的應用程序是舊的和新的合併。
我主要關心的是應用內購買將適用於我的升級用戶。我是否在顯式應用程序ID方面做了錯誤的事,或者這只是我正在使用In App Purchase沙箱的一個問題?在這種情況下,我可以相信它會在發佈時起作用嗎?
此外,任何洞察力爲什麼/如何新的應用程序不會看起來完全取代舊的應用程序包?
我能想到的唯一事情是,而不是產生一個新的束種子(如在QA1680詳述),我應該創建新的應用程序ID時所使用的舊的包種子。即舊的應用程序ID是'oldbundleseed。*',而我目前的新應用程序是'newbundleseed.appname',也許它應該是'oldbundleseed.appname'。但是我不能這樣做,因爲配置門戶不會讓我創建一個僅由bundle種子不同的應用程序ID。如果這是我的問題,該怎麼辦?聯繫Apple?
TL/DR:現有的應用程序,一個新的明確的應用程序ID更新,以支持IAP,作品除了SKProductRequests導致當應用程序被updgraded與乾淨的空的產品列表精細安裝其中它們導致一個人口稠密的產品清單。
發生這種情況時,請嘗試記錄捆綁ID。我想知道,當你將新版本加載到舊版本時,它是否可能無法正確更改。 – jtbandes
@jtbandes - 包ID是正確的。有沒有辦法使用捆綁種子記錄完整的App ID?我推理說在升級場景中種子可能不正確(仍舊使用舊版本)。 – TomSwift
不確定。我不認爲種子是與應用程序一起存儲的。我認爲它與配置文件有關,配置文件通過代碼簽名綁定到應用程序。你有沒有試過刪除/重新安裝你的prov。個人資料? – jtbandes