這段時間除了項目的開發(fā)筝蚕,也一直在看內(nèi)購锄列、Apple Pay、微信支付和支付寶支付的相關(guān)官方文檔物喷。剛好把需要的文檔都翻譯了一遍卤材,所以趁著雙休日把這一階段總結(jié)一遍遮斥,以便于進入下一個階段的開發(fā)中。
第一階段 內(nèi)購相關(guān)
一定要意識到蘋果的內(nèi)購只能出售虛擬物件(如數(shù)字化內(nèi)容扇丛、App功能以及服務(wù)等)术吗,但是真實世界中的服務(wù)(如一個俱樂部的會員資格)或物品(食物、衣物等)都不能使用內(nèi)購帆精,可以使用Apple pay较屿、微信支付等。
相關(guān)的官方文檔地址:
iTunes Connect中關(guān)于內(nèi)購配置的指南
1.iTunes Connect中的配置
iTunes Connect中對內(nèi)購的產(chǎn)品進行配置是正式開發(fā)的第一步实幕,官方文檔中詳細記錄了關(guān)于內(nèi)購產(chǎn)品創(chuàng)建的幾個步驟吝镣,我將在翻譯的過程中比較感興趣的幾個部分截取出來:
1.1內(nèi)購的類型
在iTunes Connect中配置的內(nèi)購產(chǎn)品一定要考慮清楚,這也是蘋果官方文檔對產(chǎn)品設(shè)計要求的重視昆庇。如果設(shè)計不妥當末贾,蘋果很有可能拒絕通過審核。
在iTunes Connect中創(chuàng)建的所有內(nèi)購類型都能修改整吆、刪除和添加新的產(chǎn)品拱撵。創(chuàng)建完產(chǎn)品之后,每一項后面都會出現(xiàn)不同顏色的圓形圖標表蝙,其實是為了更直觀的讓開發(fā)者知道當前內(nèi)購的狀態(tài):
內(nèi)購產(chǎn)品上傳到蘋果審核前拴测,報錯基本上就是元數(shù)據(jù)缺失,上面舉得例子:未上傳屏幕截圖府蛇,在上傳前需要搞清楚圖片上傳的尺寸:
? iOS requires at least 640 x 920 pixels.
? tvOS requires 1920 x1080 pixels.
? macOS requires 1280 x 800 pixels.
如果蘋果對你的內(nèi)購產(chǎn)品做出了拒絕的行為集索,那么它一定會顯示拒絕的原因。如果你不是很理解汇跨,可以直接詢問蘋果審核團隊务荆。
當然還有幾個狀態(tài)
除了一些基本的屬性以及類型了解外,最重要的還有兩點:
1.怎么將內(nèi)購產(chǎn)品上傳穷遂?
應(yīng)用中第一次上傳內(nèi)購產(chǎn)品
Configure your in-app purchase product until its status is Ready to Submit.
配置你的內(nèi)購產(chǎn)品直到它的狀態(tài)變成 已經(jīng)準備好提交了
2 Select the version of your app that you are about to release and scroll down to the In-App Purchases section, just below the Builds section.
選擇你想要提交的應(yīng)用版本并且滾動到內(nèi)購的選項中函匕,在構(gòu)建版本的欄目下。
3 In the In-App Purchase section, click the Add button, as highlighted in the screenshot below.
在內(nèi)購的欄中蚪黑,點擊加號盅惜,在下面截圖中高亮的部分。
4 Choose which in-app purchase products you want to submit with this version of your app.
選擇你應(yīng)用該版本想要提交的內(nèi)購產(chǎn)品忌穿。
非第一次上傳內(nèi)購產(chǎn)品
1 Select the the app from My Apps.
選擇My Apps中的應(yīng)用
2 Click Features.
點擊功能
The In-App Purchases page displays all products configured for this app.
內(nèi)購頁面顯示所有為應(yīng)用配置的內(nèi)購產(chǎn)品
3 Make any needed changes until all products have the status Ready to Submit.
做任何的改變直到所有的產(chǎn)品都有一個狀態(tài) — 準備好提交了
On the product page, click the in-app purchase Reference Name to open a product you want to release. See Working with Your Product’s Metadata.
在產(chǎn)品頁面抒寂,點擊內(nèi)購的參考名稱來打開你想要上傳的產(chǎn)品。
4 Click Submit for Review.
點擊提交審核The in-app purchase product must have the status Ready to Submit for this button to be available.
內(nèi)購的產(chǎn)品必須有一個狀態(tài) — 準備好提交
5 Click Submit to confirm the submission.點擊確認提交The status of the in-app purchase products change to Waiting for Review.
內(nèi)購產(chǎn)品的狀態(tài)會變成等待審核
6 To release more than one product for review at once, select the products from the In-App Purchases page list and click Submit In-App Purchase.
為了一次性上傳多個產(chǎn)品伴网,在內(nèi)購頁面列表中選擇一個產(chǎn)品蓬推,點擊提交內(nèi)購產(chǎn)品。
The status of the in-app purchase products changes from "Ready to Submit" to "Waiting for Review”.
產(chǎn)品的狀態(tài)會從 “準備提交” 到 “等待審核”
2.已經(jīng)存在的內(nèi)購產(chǎn)品什么屬性修改時需要審核澡腾?什么屬性能隨時修改沸伏?
Changes before submission. If your in-app purchase product has never been submitted to Apple for review, you can make changes to the product details.
在提交前改變糕珊。如果你的內(nèi)購產(chǎn)品從沒有提供給蘋果審核,你能對產(chǎn)品的細節(jié)做任何的改變毅糟。
? Reference Name. You can change the product reference name at any time without review. The reference name will be used on iTunes Connect and in Sales and Trends reports. It won't be displayed on the App Store. The name can't be longer than 64 characters.
參考名稱红选。你能改變產(chǎn)品的參考名稱在任意的時間不需要審核。參考名稱將會使用在iTunes Connect和銷售和趨勢的報表中姆另。不會顯示在應(yīng)用商店中喇肋。名稱不能超過64個字符。
? Display Name and Description. Changes to the localized product descriptions require review. The existing text displays on the store until the new text is approved. The change has its own status separate from the overall status of the in-app purchase product. Before it is reviewed, you can revert the change.
顯示名稱和訂閱迹辐。改變本地產(chǎn)品描述需要審核蝶防。存在的文本會顯示在商店中直到新的文本被批準。這個改變有自己的狀態(tài)區(qū)別于內(nèi)購產(chǎn)品的整體狀態(tài)明吩。在被審核前间学,你能恢復(fù)改變。
? New Language Support. Because language settings are independent of one another, you can add and remove languages as needed. Text in new languages are reviewed individually. After a product is submitted, changes to localized text or new language support have their own status separate from the overall status of the in-app purchase product.
提供新的語言印荔。因為語言的設(shè)置是相互獨立的低葫,因此你能根據(jù)需要添加和移除語言。新語言的文本是獨自審核的仍律。在一個產(chǎn)品提交之后嘿悬,本地文本的改變和新語言的提交都和內(nèi)購的產(chǎn)品相關(guān)獨立的。
? Screenshot. A product must have a review screenshot in place for submission; after you upload a screenshot, you can replace it with another, but you can’t remove it. You can’t change the screenshot while the product is in review. You can update the screenshot if the product is rejected.
屏幕界面水泉。在提交的時候一個產(chǎn)品必須有審核的截屏善涨;在你上傳一個截屏?xí)r,你能更換成變的草则,但是你不能移除它躯概,在產(chǎn)品審核的時候你不能改變截屏。如果產(chǎn)品被拒絕了你能更新截屏畔师。
? Hosting Content with Apple. You can change a product to be hosted by Apple before you submit the product for review.
To manage in-app purchase products, you must be signed in to iTunes Connect with the appropriate role.
讓蘋果托管內(nèi)購。在你提交一個產(chǎn)品進行審核前你能改變讓蘋果進行一個產(chǎn)品的托管牧牢。為了管理內(nèi)購的產(chǎn)品看锉,你必須使用一個合適的角色登錄iTunes Connect中。
To make changes that affect the product’s status, pricing, availability instead of its metadata, see Working with Your Product’s Pricing and Availability.
為了改變產(chǎn)品的狀態(tài)塔鳍,價格和可使用性而不是元數(shù)據(jù)伯铣,參考Working with Your Product Pricing and Availability。
在iTunes Connect中配置完內(nèi)購產(chǎn)品之后轮纫,就該進入正式的代碼開發(fā)考慮了腔寡。
2.內(nèi)購產(chǎn)品開發(fā)
其實在看官方文檔的時候,有一些重復(fù)說明的地方掌唾。匯總而言放前,就是對類型的開發(fā)說明以及開發(fā)的處理流程忿磅。
2.1 內(nèi)購類型的開發(fā)說明
在iTunes Connect中已經(jīng)略提了內(nèi)購的類型有哪些,對于開發(fā)而言凭语,每一個內(nèi)購類型都需要不同的處理手段:
非消耗型產(chǎn)品只需要購買一次葱她,并且會由蘋果同步和在不同設(shè)備中恢復(fù)購買的狀態(tài)。
消耗型產(chǎn)品使用一次就沒有了似扔,所以只會出現(xiàn)在收據(jù)上一次(購買新的東西之后吨些,更新收據(jù)的話那么消耗型產(chǎn)品會從收據(jù)上消失),并且需要開發(fā)者自己同步以及在不同設(shè)備中恢復(fù)狀態(tài)炒辉。
自動續(xù)費訂閱能多次購買豪墅,并且由蘋果自己同步以及在不同設(shè)備匯總恢復(fù)狀態(tài)。
非續(xù)費訂閱能購買多次黔寇,但是同步等問題需要應(yīng)用自己管理偶器。比如訂閱的激活期和過期時間,同步到不同的設(shè)備中都需要由你的應(yīng)用自己負責(zé)啡氢。
2.2 開發(fā)的處理流程
步驟一 在iTunes Connect中配置了內(nèi)購的產(chǎn)品信息之后状囱,對于每一個產(chǎn)品都有唯一的一個標識符,向蘋果請求產(chǎn)品信息時需要提供該標識符
首先倘是,標識符可以存在:
① App bundle中:簡單設(shè)置一個plist文件即可亭枷,但是靜態(tài)更改不是很方便,所以對一些不是經(jīng)常改變的內(nèi)購產(chǎn)品而言可是使用該方法搀崭。
② 自己的服務(wù)器:通過一個接口請求數(shù)據(jù)叨粘,改變十分的方便。
步驟二 支付前判斷用戶是否能支付
[SKPaymentQueue canMakePayments];
不能支付的原因:
① 可能用戶已經(jīng)包月
② 受到家長控制無法支付
.......
步驟三 用戶選擇購買產(chǎn)品后瘤睹,向蘋果服務(wù)器請求支付
將支付加入到事務(wù)處理隊列中升敲,這里有一個注意點:刷機問題
蘋果只知道用戶的Apple ID,如果一個Apple ID為多個應(yīng)用賬號支付轰传,那么可能存在不正當?shù)膯栴}驴党,可以通過設(shè)置applicationUsername屬性(確保提供的值是唯一值)
步驟四 實現(xiàn)代理方法,對交易狀態(tài)的監(jiān)聽
對狀態(tài)失敗和成功的監(jiān)聽获茬,失敗了好說提示一下"支付失敗了"港庄;
但是成功的話,上面也有提到有的支付類型是需要應(yīng)用自己管理的恕曲,所以需要將收據(jù)信息(或者你存儲需要的數(shù)據(jù))發(fā)送給服務(wù)器
其實在這次在學(xué)習(xí)支付前鹏氧,我一直不太敢接觸,總認為跟錢相關(guān)的東西很復(fù)雜佩谣。但是真正接觸之后發(fā)現(xiàn)其實還挺容易理解和操作的把还,包括蘋果的官方文檔中已經(jīng)把所有的東西都講的很明確了,下一步,整理Apple pay和微信支付吊履、支付寶支付的內(nèi)容安皱。