根據蘋果公司的App Store Review Guidelines應用審核規則:
3.1.5Physical Goods and Services Outside of the App: If your app enables people to purchase goods or services that will be consumed outside of the app, you must use purchase methods other than IAP to collect those payments, such as Apple Pay or traditional credit card entry. Apps may facilitate transmission of approved virtual currencies (e.g. Bitcoin, DogeCoin) provided that they do so in compliance with all state and federal laws for the territories in which the app functions.
需要在應用內購買使用的服務,應該接入內購。最近在項目中也遇到這個情況,我們做在線教育,賣的是視頻課程,所以按照apple的規則需要接入內購。但是內購是需要與apple三七分成的,價格也是需要按照apple的價格表選擇,很不靈活。那么怎么解決這種問題呢,我想了這么幾種解決方案:
1、直接不接入內購,在審核時隱藏相應購買模塊。現討論一種情況的代碼實現方式,比如項目是Tabbar布局,購買模塊是其中一個tabbar,在審核時隱藏這個tabbar。思路如下:
1)首先需要后臺提供一個接口,判斷是不是在審核狀態。此時,會出現這么個問題,如果包含內購的版本2.0通過審核了,那下次提交2.1時,如果還使用這個接口來判斷是否在審核狀態的話,就不行了,因為用戶已經在使用2.0了。所有,每次提交都要換個判斷狀態的接口。但我覺得每次都換接口有點麻煩,我是這樣做的:假如2.0版是2016年7月10日提交的,那在進行請求接口之前,先判斷當前時間,如果當前時間在2016年7月10號到8月10號之間,就進行請求操作,否則直接認為是非審核狀態。當然這個時間段是自己定的,一個月足夠上線了,也可以設置10天,畢竟每次被拒都可以改這個代碼,再提交個二進制文件。說的有點啰嗦,在Demo中會有相應代碼。
2)寫一個VC,此VC的作用有兩個:一:添加一個全屏的與啟動圖片一樣的圖片;二:進行第一步說的操作,進行時間判斷和網絡請求,并使用block通知外面。
3)keyWindow的RootVC先設置成第二步說的VC,在VC的block回調中做相應操作。回調參數是yes的話,再本地存儲個值。此時把rootvc切換成tabbar,在tabbar中添加childVC時,根據本地的值,判斷添加相應模塊。
GitHub - mws100/AvoidIAPExample: 繞過蘋果IAP審核的Demo
2、接入內購,同樣需要一個接口,在審核時使用內購付款,通過后使用其他方式。至于內購的接入步驟,網上有很多不錯的教程,github上也有不錯的框架。這里各推薦一個:
內購教程:iOS開發內購全套圖文教程
內購框架:RMStore
都是個人見解,有更好的方式,或對文章內容或內購流程有疑問可留言討論。