版本記錄
| 版本號 | 時間 |
|---|---|
| V1.0 | 2018.08.14 |
前言
大家都知道,ios虛擬商品如寶石、金幣等都需要走內購,和蘋果三七分成,如果這類商品不走內購那么上不去架或者上架以后被發(fā)現而被下架。最近有一個項目需要增加內購支付功能,所以最近又重新集成并整理了下,希望對大家有所幫助。感興趣的可以參考上面幾篇。
1. iOS內購IAP(一) —— 基礎配置篇(一)
2. iOS內購IAP(二) —— 工程實踐(一)
3. iOS內購IAP(三) —— 編程指南之關于內購(一)
4. iOS內購IAP(四) —— 編程指南之設計您的應用程序的產品(一)
5. iOS內購IAP(五) —— 編程指南之檢索產品信息(一)
6. iOS內購IAP(六) —— 編程指南之請求支付(一)
7. iOS內購IAP(七) —— 編程指南之促進應用內購買(一)
8. iOS內購IAP(八) —— 編程指南之提供產品(一)
9. iOS內購IAP(九) —— 編程指南之處理訂閱(一)
10. iOS內購IAP(十) —— 編程指南之恢復購買的產品(一)
11. iOS內購IAP(十一) —— 編程指南之準備App審核(一)
開始
構建iOS應用程序的一個好處是,您在應用程序貨幣化方面有很多選擇:普通的vanilla付費應用程序,廣告支持的免費應用程序,甚至支持應用程序內購買的應用程序。
應用內購買(或IAP)允許開發(fā)人員在使用應用時向用戶收取特定功能或內容的費用。由于以下幾個原因,實施IAP尤其引人注目:
- 這是一種額外的賺錢方式,除了簡單地預先付費購買應用程序。一些用戶愿意在額外的內容或功能上花費更多。
- 一個應用程序可以免費提供,這使其成為大多數人的簡單下載。免費應用通常會比付費應用獲得更多下載。如果用戶喜歡該應用,那么他們可以在以后購買更多內容或功能。
- 您可以在免費應用程序中向用戶顯示廣告,并可選擇通過購買IAP刪除它們。
- 在首次發(fā)布應用后,新的付費內容可以添加到同一個應用中,而不必開發(fā)全新的應用以賺取更多收益。
在此應用內購買教程中,您將利用IAP解鎖應用中嵌入的額外內容。您需要熟悉基本的Swift和iOS編程概念。如果不熟悉這些,那么在開始之前您需要一個付費開發(fā)者帳戶,可以訪問iOS Developer Center和App Store Connect。
注意:本篇文章環(huán)境是Swift 4.2, iOS 12, Xcode 10。
在這個應用程序內購買教程中,您將構建一個名為“RazeFaces”的小應用程序,它允許用戶購買“RazeFace”,是這個網站常用的書籍和視頻的簡潔插圖。

下載下來這個應用,然后在Xcode中打開。 Build并運行以查看它到目前為止的功能。 答案是:不是很多! 您將看到一個空表視圖,導航欄中有一個Restore按鈕,稍后將連接該按鈕以恢復購買。

完成本教程后,將會在表格視圖中列出一個您可以購買的RazeFaces列表。 如果您刪除并重新安裝該應用程序,Restore按鈕將恢復以前購買的任何RazeFaces。
前往Xcode快速查看代碼。 主視圖控制器位于MasterViewController.swift中。 此類顯示tableview視圖,其中包含可用IAP列表。 購買存儲為SKProduct對象的數組。
請注意,MasterViewController正在使用一個名為IAPHelper類型的RazeFaceProducts.store的對象來完成繁重的工作。 看看他們各自的代碼文件RazeFaceProducts.swift和IAPHelper.swift。
RazeFaceProducts是一個簡單的結構,包含有關應用程序中產品的一些信息,IAPHelper完成了與StoreKit交接的所有重要工作。 這些方法目前都已被刪除,但您將在本教程中填寫它們以向應用程序添加IAP功能。
在編寫任何代碼以合并IAP之前,您首先需要在iOS Developer Center和App Store Connect中進行一些設置。
Creating an App ID - 創(chuàng)建一個App ID
首先,您需要創(chuàng)建一個App ID。 這會將您的應用與您的應用內購買產品相關聯(lián)。 登錄Apple Developer Center,然后選擇Certificates, IDs & Profiles。

接下來,選擇Identifiers > App IDs,然后單擊右上角的+以創(chuàng)建新的App ID。

填寫新App ID的信息。 輸入Name為的RazeFace IAP Tutorial App。 選擇Explicit App ID并輸入唯一的Bundle ID。 通常的做法是反向使用您的域名(例如,com.razeware.razefaces)。 記下Bundle ID,因為在接下來的步驟中將需要它。
向下滾動到App Services部分。 請注意,默認情況下啟用應用程序內購買和GameCenter。 單擊Continue,然后單擊Register和Done。
恭喜! 您有一個新的App ID! 接下來,您將在App Store Connect中創(chuàng)建匹配的應用程序。
Checking Your Agreements - 檢查你的協(xié)議
在將iTunes添加到iTunes Connect中的應用程序之前,您必須執(zhí)行以下兩項操作:
- 確保您已在developer.apple.com上接受最新的
Apple Development Program License Agreement。 - 確保您已在App Store Connect.
的Agreements, Tax, and Billing部分中接受了最新的Paid Applications協(xié)議。
如果您還沒有這樣做,通常iTunes Connect會給您一個警告,如下所示:

如果您看到類似上述內容,請按照步驟接受相應的協(xié)議。
在iTunes Connect中仔細檢查Agreements, Tax, and Banking部分也是很好的:

如果您看到標題為包含Paid Applications行的Request Contracts的部分,請單擊Request按鈕。 填寫所有必要信息并提交。 您的申請可能需要一段時間才能獲得批準。 只能等待!
否則,如果您看到Contracts In Effect中列出的Paid Applications,那么您似乎已經完成了此步驟! 不錯的工作!
注意:提交后,Apple可能需要數天才能批準這些與IAP相關的協(xié)議。 在此期間,即使您在代碼中正確實現了所有內容,也無法在應用中顯示IAP產品。 對于首次實施應用內購買的人來說,這是令人沮喪的常見原因。只能等待!
Creating an App in iTunes Connect - 在iTunes Connect中創(chuàng)建一個App
現在要創(chuàng)建應用程序記錄本身,單擊頁面左上角的App Store Connect,然后單擊My Apps。

接下來,單擊頁面左上角的+,然后選擇New App以添加新的應用程序記錄。 填寫如下所示的信息:

您將無法使用您在此處看到的完全相同的應用程序Name,因為應用程序名稱在App Store中必須是唯一的。 也許在上面屏幕截圖中顯示的示例標題之后添加您自己的首字母。
注意:如果您快速完成此步驟,則可能未在下拉列表中顯示
Bundle ID。 這有時需要一段時間才能通過Apple的系統(tǒng)認證。
單擊Create,您就完成了!
Creating In-App Purchase Products - 創(chuàng)建IAP產品
提供IAP時,您必須首先在App Store Connect中為每個單獨的購買添加條目。如果您曾在商店中列出待售的應用程序,那么這是一個類似的過程,包括選擇購買的定價等級。當用戶進行購買時,App Store處理向用戶收費的復雜過程并回復有關此類操作的數據。
您可以添加一大堆不同類型的IAP:
- Consumable - 消耗品:這些可以多次購買,可以用完。這些非常適合額外的生活,游戲內貨幣,臨時能量等。
-
Non-Consumable - 非消耗品:您購買一次的東西,并期望具有永久性,如額外的水平和可解鎖的內容。本教程中的
RazeFace插圖屬于此類別。 - Non-Renewing Subscription - 非續(xù)訂訂閱:在固定時間段內可用的內容。
- Auto-Renewing Subscription - 自動續(xù)訂訂閱:重復訂閱的內容,比如每一個月的期刊。
您只能為數字商品提供應用內購買,而不能為實體商品或服務提供應用內購買。有關所有這些的更多信息,請查看Apple關于Creating In-App Purchase Products的完整文檔。
現在,在App Store Connect中查看應用程序的條目時,單擊Features選項卡,然后選擇In-App Purchases。要添加新的IAP產品,請單擊In-App Purchases右側的+。

你將會看到下面的彈窗

當用戶在您的應用中購買RazeFace時,您會希望他們始終可以訪問它,因此請選擇Non-Consumable,然后單擊Create。
接下來,填寫IAP的詳細信息如下:
-
Reference Name - 參考名稱:標識
iTunes Connect中IAP的昵稱。 此名稱不會出現在應用中的任何位置。 您將通過此次購買解鎖的RazeFace的標題是Swift Shopping,因此請在此處輸入。 -
Product ID - 產品ID:這是標識IAP的唯一字符串。 通常最好從
Bundle ID開始,然后附加一個特定于此可購買項目的唯一名稱。 對于本教程,請確保添加swiftshopping,因為稍后將在應用程序中使用它來查找RazeFace以解鎖。 例如,您可以使用:com.theNameYouPickedEarlier.razefaces.swiftshopping。 - Cleared for Sale - 清算待售:啟用或禁用IAP的銷售。
-
Price Tier - 價格層:IAP的價格成本。 選擇
Tier 1。
現在向下滾動到Localizations部分,并注意英語(美國)有一個默認條目。 為Display Name和Description輸入Swift Shopping。 單擊Save。 很好! 您已經創(chuàng)建了第一個IAP產品。

注意:
App Store Connect可能會報出您缺少IAP的元數據。 在您提交應用以供審核之前,您需要在此頁面底部添加IAP的屏幕截圖。 該屏幕截圖僅用于Apple的審核review,不會出現在App Store列表中。
在深入研究一些代碼之前還需要一個步驟。 在應用程序的開發(fā)版本中測試應用程序內購買時,Apple提供了一個測試環(huán)境,允許您“購買”您的IAP產品,而無需創(chuàng)建財務交易。
這些特殊測試購買只能通過App Store Connect中的特殊Sandbox Tester用戶帳戶進行。
Creating a Sandbox User - 創(chuàng)建沙盒賬戶
在App Store Connect中,單擊窗口左上角的App Store Connect以返回主菜單。 選擇Users and Roles,然后單擊Sandbox Testers選項卡。 單擊Tester標題旁邊的+。

填寫信息,完成后單擊Save。 您可以為測試用戶編寫名字和姓氏,但必須使用真實的電子郵件地址,因為Apple會向該地址發(fā)送驗證電子郵件。 收到該電子郵件后,請務必點擊其中的鏈接以驗證您的郵箱地址。
您輸入的電子郵件地址也不應與Apple ID帳戶相關聯(lián)。 提示:如果您有一個Gmail帳戶,您只需使用address alias,而不必創(chuàng)建一個全新的帳戶。
注意:不幸的是,測試新購買的
non-consumable的IAP需要每次都有一個新的沙箱測試者(和電子郵件地址)。 使用相同沙盒測試器的重復購買將被視為恢復已購買的項目,因此不會執(zhí)行特定于新購買的任何代碼。
如果需要通過新的購買代碼進行多次測試并且您的電子郵件提供商不支持
qualifiers,那么請考慮設置可消耗的IAP僅用于測試目的。 每次測試后刪除設備上的應用程序,購買消耗的IAP將被視為新購買。
您可以采用的一種策略是在測試成功案例之前盡可能多次測試失敗案例。 這樣你就需要創(chuàng)建更少的沙盒測試器。 一般情況下,請記住,一旦用戶(甚至是沙盒)購買了
non-consumable的IAP,他就不能再次購買,只能恢復它。
太棒了 - 你現在有一個測試用戶。 您最終可以在您的應用中實施IAP!
后記
本篇主要講述了一個詳細的內購流程,感興趣的給個贊或者關注~~~
