iOS內(nèi)購IAP(十二) —— 一個(gè)詳細(xì)的內(nèi)購流程(一)

版本記錄

版本號 時(shí)間
V1.0 2018.08.14

前言

大家都知道,ios虛擬商品如寶石、金幣等都需要走內(nèi)購,和蘋果三七分成,如果這類商品不走內(nèi)購那么上不去架或者上架以后被發(fā)現(xiàn)而被下架。最近有一個(gè)項(xiàng)目需要增加內(nèi)購支付功能,所以最近又重新集成并整理了下,希望對大家有所幫助。感興趣的可以參考上面幾篇。
1. iOS內(nèi)購IAP(一) —— 基礎(chǔ)配置篇(一)
2. iOS內(nèi)購IAP(二) —— 工程實(shí)踐(一)
3. iOS內(nèi)購IAP(三) —— 編程指南之關(guān)于內(nèi)購(一)
4. iOS內(nèi)購IAP(四) —— 編程指南之設(shè)計(jì)您的應(yīng)用程序的產(chǎn)品(一)
5. iOS內(nèi)購IAP(五) —— 編程指南之檢索產(chǎn)品信息(一)
6. iOS內(nèi)購IAP(六) —— 編程指南之請求支付(一)
7. iOS內(nèi)購IAP(七) —— 編程指南之促進(jìn)應(yīng)用內(nèi)購買(一)
8. iOS內(nèi)購IAP(八) —— 編程指南之提供產(chǎn)品(一)
9. iOS內(nèi)購IAP(九) —— 編程指南之處理訂閱(一)
10. iOS內(nèi)購IAP(十) —— 編程指南之恢復(fù)購買的產(chǎn)品(一)
11. iOS內(nèi)購IAP(十一) —— 編程指南之準(zhǔn)備App審核(一)

開始

構(gòu)建iOS應(yīng)用程序的一個(gè)好處是,您在應(yīng)用程序貨幣化方面有很多選擇:普通的vanilla付費(fèi)應(yīng)用程序,廣告支持的免費(fèi)應(yīng)用程序,甚至支持應(yīng)用程序內(nèi)購買的應(yīng)用程序。

應(yīng)用內(nèi)購買(或IAP)允許開發(fā)人員在使用應(yīng)用時(shí)向用戶收取特定功能或內(nèi)容的費(fèi)用。由于以下幾個(gè)原因,實(shí)施IAP尤其引人注目:

  • 這是一種額外的賺錢方式,除了簡單地預(yù)先付費(fèi)購買應(yīng)用程序。一些用戶愿意在額外的內(nèi)容或功能上花費(fèi)更多。
  • 一個(gè)應(yīng)用程序可以免費(fèi)提供,這使其成為大多數(shù)人的簡單下載。免費(fèi)應(yīng)用通常會(huì)比付費(fèi)應(yīng)用獲得更多下載。如果用戶喜歡該應(yīng)用,那么他們可以在以后購買更多內(nèi)容或功能。
  • 您可以在免費(fèi)應(yīng)用程序中向用戶顯示廣告,并可選擇通過購買IAP刪除它們。
  • 在首次發(fā)布應(yīng)用后,新的付費(fèi)內(nèi)容可以添加到同一個(gè)應(yīng)用中,而不必開發(fā)全新的應(yīng)用以賺取更多收益。

在此應(yīng)用內(nèi)購買教程中,您將利用IAP解鎖應(yīng)用中嵌入的額外內(nèi)容。您需要熟悉基本的Swift和iOS編程概念。如果不熟悉這些,那么在開始之前您需要一個(gè)付費(fèi)開發(fā)者帳戶,可以訪問iOS Developer CenterApp Store Connect

注意:本篇文章環(huán)境是Swift 4.2, iOS 12, Xcode 10。

在這個(gè)應(yīng)用程序內(nèi)購買教程中,您將構(gòu)建一個(gè)名為“RazeFaces”的小應(yīng)用程序,它允許用戶購買“RazeFace”,是這個(gè)網(wǎng)站常用的書籍和視頻的簡潔插圖。

A typical “RazeFace”

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

完成本教程后,將會(huì)在表格視圖中列出一個(gè)您可以購買的RazeFaces列表。 如果您刪除并重新安裝該應(yīng)用程序,Restore按鈕將恢復(fù)以前購買的任何RazeFaces

前往Xcode快速查看代碼。 主視圖控制器位于MasterViewController.swift中。 此類顯示tableview視圖,其中包含可用IAP列表。 購買存儲(chǔ)為SKProduct對象的數(shù)組。

請注意,MasterViewController正在使用一個(gè)名為IAPHelper類型的RazeFaceProducts.store的對象來完成繁重的工作。 看看他們各自的代碼文件RazeFaceProducts.swiftIAPHelper.swift

RazeFaceProducts是一個(gè)簡單的結(jié)構(gòu),包含有關(guān)應(yīng)用程序中產(chǎn)品的一些信息,IAPHelper完成了與StoreKit交接的所有重要工作。 這些方法目前都已被刪除,但您將在本教程中填寫它們以向應(yīng)用程序添加IAP功能。

在編寫任何代碼以合并IAP之前,您首先需要在iOS Developer CenterApp Store Connect中進(jìn)行一些設(shè)置。


Creating an App ID - 創(chuàng)建一個(gè)App ID

首先,您需要?jiǎng)?chuàng)建一個(gè)App ID。 這會(huì)將您的應(yīng)用與您的應(yīng)用內(nèi)購買產(chǎn)品相關(guān)聯(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,因?yàn)樵诮酉聛淼牟襟E中將需要它。

向下滾動(dòng)到App Services部分。 請注意,默認(rèn)情況下啟用應(yīng)用程序內(nèi)購買和GameCenter。 單擊Continue,然后單擊RegisterDone

恭喜! 您有一個(gè)新的App ID! 接下來,您將在App Store Connect中創(chuàng)建匹配的應(yīng)用程序。


Checking Your Agreements - 檢查你的協(xié)議

在將iTunes添加到iTunes Connect中的應(yīng)用程序之前,您必須執(zhí)行以下兩項(xiàng)操作:

  • 確保您已在developer.apple.com上接受最新的Apple Development Program License Agreement
  • 確保您已在App Store Connect.
    Agreements, Tax, and Billing部分中接受了最新的Paid Applications協(xié)議。

如果您還沒有這樣做,通常iTunes Connect會(huì)給您一個(gè)警告,如下所示:

如果您看到類似上述內(nèi)容,請按照步驟接受相應(yīng)的協(xié)議。

在iTunes Connect中仔細(xì)檢查Agreements, Tax, and Banking部分也是很好的:

如果您看到標(biāo)題為包含Paid Applications行的Request Contracts的部分,請單擊Request按鈕。 填寫所有必要信息并提交。 您的申請可能需要一段時(shí)間才能獲得批準(zhǔn)。 只能等待!

否則,如果您看到Contracts In Effect中列出的Paid Applications,那么您似乎已經(jīng)完成了此步驟! 不錯(cuò)的工作!

注意:提交后,Apple可能需要數(shù)天才能批準(zhǔn)這些與IAP相關(guān)的協(xié)議。 在此期間,即使您在代碼中正確實(shí)現(xiàn)了所有內(nèi)容,也無法在應(yīng)用中顯示IAP產(chǎn)品。 對于首次實(shí)施應(yīng)用內(nèi)購買的人來說,這是令人沮喪的常見原因。只能等待!


Creating an App in iTunes Connect - 在iTunes Connect中創(chuàng)建一個(gè)App

現(xiàn)在要?jiǎng)?chuàng)建應(yīng)用程序記錄本身,單擊頁面左上角的App Store Connect,然后單擊My Apps

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

您將無法使用您在此處看到的完全相同的應(yīng)用程序Name,因?yàn)閼?yīng)用程序名稱在App Store中必須是唯一的。 也許在上面屏幕截圖中顯示的示例標(biāo)題之后添加您自己的首字母。

注意:如果您快速完成此步驟,則可能未在下拉列表中顯示Bundle ID。 這有時(shí)需要一段時(shí)間才能通過Apple的系統(tǒng)認(rèn)證。

單擊Create,您就完成了!


Creating In-App Purchase Products - 創(chuàng)建IAP產(chǎn)品

提供IAP時(shí),您必須首先在App Store Connect中為每個(gè)單獨(dú)的購買添加條目。如果您曾在商店中列出待售的應(yīng)用程序,那么這是一個(gè)類似的過程,包括選擇購買的定價(jià)等級。當(dāng)用戶進(jìn)行購買時(shí),App Store處理向用戶收費(fèi)的復(fù)雜過程并回復(fù)有關(guān)此類操作的數(shù)據(jù)。

您可以添加一大堆不同類型的IAP:

  • Consumable - 消耗品:這些可以多次購買,可以用完。這些非常適合額外的生活,游戲內(nèi)貨幣,臨時(shí)能量等。
  • Non-Consumable - 非消耗品:您購買一次的東西,并期望具有永久性,如額外的水平和可解鎖的內(nèi)容。本教程中的RazeFace插圖屬于此類別。
  • Non-Renewing Subscription - 非續(xù)訂訂閱:在固定時(shí)間段內(nèi)可用的內(nèi)容。
  • Auto-Renewing Subscription - 自動(dòng)續(xù)訂訂閱:重復(fù)訂閱的內(nèi)容,比如每一個(gè)月的期刊。

您只能為數(shù)字商品提供應(yīng)用內(nèi)購買,而不能為實(shí)體商品或服務(wù)提供應(yīng)用內(nèi)購買。有關(guān)所有這些的更多信息,請查看Apple關(guān)于Creating In-App Purchase Products的完整文檔。

現(xiàn)在,在App Store Connect中查看應(yīng)用程序的條目時(shí),單擊Features選項(xiàng)卡,然后選擇In-App Purchases。要添加新的IAP產(chǎn)品,請單擊In-App Purchases右側(cè)的+。

你將會(huì)看到下面的彈窗

當(dāng)用戶在您的應(yīng)用中購買RazeFace時(shí),您會(huì)希望他們始終可以訪問它,因此請選擇Non-Consumable,然后單擊Create

接下來,填寫IAP的詳細(xì)信息如下:

  • Reference Name - 參考名稱:標(biāo)識iTunes Connect中IAP的昵稱。 此名稱不會(huì)出現(xiàn)在應(yīng)用中的任何位置。 您將通過此次購買解鎖的RazeFace的標(biāo)題是Swift Shopping,因此請?jiān)诖颂庉斎搿?/li>
  • Product ID - 產(chǎn)品ID:這是標(biāo)識IAP的唯一字符串。 通常最好從Bundle ID開始,然后附加一個(gè)特定于此可購買項(xiàng)目的唯一名稱。 對于本教程,請確保添加swiftshopping,因?yàn)樯院髮⒃趹?yīng)用程序中使用它來查找RazeFace以解鎖。 例如,您可以使用:com.theNameYouPickedEarlier.razefaces.swiftshopping
  • Cleared for Sale - 清算待售:啟用或禁用IAP的銷售。
  • Price Tier - 價(jià)格層:IAP的價(jià)格成本。 選擇Tier 1

現(xiàn)在向下滾動(dòng)到Localizations部分,并注意英語(美國)有一個(gè)默認(rèn)條目。 為Display NameDescription輸入Swift Shopping。 單擊Save。 很好! 您已經(jīng)創(chuàng)建了第一個(gè)IAP產(chǎn)品。

注意:App Store Connect可能會(huì)報(bào)出您缺少IAP的元數(shù)據(jù)。 在您提交應(yīng)用以供審核之前,您需要在此頁面底部添加IAP的屏幕截圖。 該屏幕截圖僅用于Apple的審核review,不會(huì)出現(xiàn)在App Store列表中。

在深入研究一些代碼之前還需要一個(gè)步驟。 在應(yīng)用程序的開發(fā)版本中測試應(yīng)用程序內(nèi)購買時(shí),Apple提供了一個(gè)測試環(huán)境,允許您“購買”您的IAP產(chǎn)品,而無需創(chuàng)建財(cái)務(wù)交易。

這些特殊測試購買只能通過App Store Connect中的特殊Sandbox Tester用戶帳戶進(jìn)行。


Creating a Sandbox User - 創(chuàng)建沙盒賬戶

App Store Connect中,單擊窗口左上角的App Store Connect以返回主菜單。 選擇Users and Roles,然后單擊Sandbox Testers選項(xiàng)卡。 單擊Tester標(biāo)題旁邊的+。

填寫信息,完成后單擊Save。 您可以為測試用戶編寫名字和姓氏,但必須使用真實(shí)的電子郵件地址,因?yàn)锳pple會(huì)向該地址發(fā)送驗(yàn)證電子郵件。 收到該電子郵件后,請務(wù)必點(diǎn)擊其中的鏈接以驗(yàn)證您的郵箱地址。

您輸入的電子郵件地址也不應(yīng)與Apple ID帳戶相關(guān)聯(lián)。 提示:如果您有一個(gè)Gmail帳戶,您只需使用address alias,而不必創(chuàng)建一個(gè)全新的帳戶。

注意:不幸的是,測試新購買的non-consumable 的IAP需要每次都有一個(gè)新的沙箱測試者(和電子郵件地址)。 使用相同沙盒測試器的重復(fù)購買將被視為恢復(fù)已購買的項(xiàng)目,因此不會(huì)執(zhí)行特定于新購買的任何代碼。

如果需要通過新的購買代碼進(jìn)行多次測試并且您的電子郵件提供商不支持qualifiers,那么請考慮設(shè)置可消耗的IAP僅用于測試目的。 每次測試后刪除設(shè)備上的應(yīng)用程序,購買消耗的IAP將被視為新購買。

您可以采用的一種策略是在測試成功案例之前盡可能多次測試失敗案例。 這樣你就需要?jiǎng)?chuàng)建更少的沙盒測試器。 一般情況下,請記住,一旦用戶(甚至是沙盒)購買了non-consumable的IAP,他就不能再次購買,只能恢復(fù)它。

太棒了 - 你現(xiàn)在有一個(gè)測試用戶。 您最終可以在您的應(yīng)用中實(shí)施IAP!

后記

本篇主要講述了一個(gè)詳細(xì)的內(nèi)購流程,感興趣的給個(gè)贊或者關(guān)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,996評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容