免費+應用內購買的模式已經被證明了是最有效的盈利模式,所以實現內購功能可能是很多開發者必做的工作和必備的技能了。但是鑒于內購這塊坑不算少,另外因為sandbox測試所需要特定的配置也很多,所以對于經驗不太多的開發者來說很容易就遇到各種問題,并且測試時出錯Apple給出的也只有 “Can not connect iTunes Store”或者”Invalid Product IDs”之類毫無價值的錯誤提示,并沒有詳細的錯誤說明,因此調試起來往往沒有方向。有老前輩在這里整理過一個相對完整的check list了,但是因為年代已經稍微久遠,所以內容上和現在的情況已經有一些出入。趁著在最近兩個項目里做內購這塊遇到的新問題,順便在此基礎上總結整理了一份比較新的中文Check list,希望能幫到后來人。
如果您在實現和測試iOS應用內購的時候遇到問題,可以逐一對照下面所列出的條目,并逐一進行檢查。相信可以排除大部分的錯誤。如果您遇到的問題不在這個列表范圍內,歡迎在評論中指出,我會進行更新。
您是否在iOS Dev Center中打開了對應應用AppID的In-App Purchases功能?登陸 iOS Dev Center的Certificates, Identifiers & Profiles下,在Identifiers中找到正在開發的App,In-App Purchase一項應當顯示Enabled(如果使用Xcode5,可以直接在Xcode的Capabilities頁面中打開In-App Purchases)。
您是否在iTunes Connect中注冊了您的IAP項目,并將其設為Cleared for Sale?
您的plist中的Bundle identifier的內容是否和您的AppID一致?
您是否正確填寫了Version(CFBundleVersion)和Build(CFBuildNumber)兩個數字?兩者缺一不可。
您用代碼向Apple申請售賣物品列表時是否使用了完整的在iTC注冊的Product ID?(使用在IAP管理中內購項目的Product ID一欄中的字符串)
您是否在打開IAP以后重新生成過包含IAP許可的provisioning profile?
你是否重新導入了新的包含IAP的provisioning profile?建議在Organizer中先刪掉原來設備上的老的provisioning profile。
您是否在用包含IAP的provisioning profile在部署測試程序?在Xcode5中,建議使用General中的Team選項來自動管理。
您是否是在模擬器中測試IAP?雖然理論上說模擬器在某些情況下可以測試IAP,但是條件很多也不讓人安心,因此您確實需要一臺真機來做IAP測試。
您是在企業版發布中測試IAP么?因為企業版沒有iTC進行內購項目管理,也無法發布AppStore應用,所以您在企業版的build中不能使用IAP。
您是否將設備上原來的app刪除了,并重新進行了安裝?記得在安裝前做一下Clean和Clean Build Folder。
您是否在運行應用前將設備上實際的Apple ID登出了?建議在設置->iTunes Store和App Stroe中將使用中的Apple ID登出,以未登錄狀態進入應用進行測試。
你是否使用的是Test User?如果你還沒有創建Test User,你需要到iTC中創建。
您使用的測試賬號是否是美國區賬號?雖然不是一定需要,但是鑒于其他地區的測試賬號經常抽風,加上美國區賬號一直很穩定,因此強烈建議使用美國區賬號。正常情況下IAP不需要進行信用卡綁定和其他信息填寫,如果你遇到了這種情況,可以試試刪除這個測試賬號再新建一個其他地區的。
您是否有新建賬戶進行測試?可能的話,可以使用新建測試賬戶試試看,因為某些特定情況下測試賬戶會被Apple鎖定。
您的應用是否是被拒狀態(Rejected)或自己拒絕(Developer Rejected)了?被拒絕狀態的應用的話對應還未通過的內購項目也會一起被拒,因此您需要重新將IAP項目設為Cleared for Sale。
您的應用是否處于等待開發者發布(Pending Developer Release)狀態?等待發布狀態的IAP是無法測試的。
您的內購項目是否是最近才新建的,或者進行了更改?內購項目需要一段時間才能反應到所有服務器上,這個過程一般是一兩小時,也可能再長一些達到若干小時。
您在iTC中Contracts, Tax, and Banking Information項目中是否有還沒有設置或者過期了的項目?不完整的財務信息無法進行內購測試。
您是在越獄設備上進行內購測試么?越獄設備不能用于正常內購,您需要重裝或者尋找一臺沒有越獄的設備。
您是否能正常連接到Apple的服務器,你可以訪問Apple開發者論壇關于IAP的板塊,如果蘋果服務器正down掉,那里應該有熱烈的討論。
如果您正在尋找一份手把手教你實現IAP的教程的話,這篇文章不是您的菜。關于IAP的實現和步驟,可以參考下面的教程:
蘋果的官方IAP指南和相應的Technical Note
Ray Wenderlich的iOS6 IAP教程
一篇圖文并茂的中文教程
直接使用大神們封好的Store有關的庫,比如mattt/CargoBay,robotmedia/RMStore或者MugunthKumar/MKStoreKit。推薦前兩個,因為MKStoreKit有一些惱人的小bug。
原文轉自:http://onevcat.com/2013/11/ios-iap-checklist/