iOS內(nèi)購IAP(十) —— 編程指南之恢復(fù)購買的產(chǎn)品(一)

版本記錄

版本號 時間
V1.0 2018.07.29

前言

大家都知道们镜,ios虛擬商品如寶石檐春、金幣等都需要走內(nèi)購况芒,和蘋果三七分成唠椭,如果這類商品不走內(nèi)購那么上不去架或者上架以后被發(fā)現(xiàn)而被下架。最近有一個項(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(九) —— 編程指南之處理訂閱(一)

Restoring Purchased Products - 恢復(fù)購買的產(chǎn)品

用戶恢復(fù)交易以維持對已購買內(nèi)容的訪問權(quán)限力崇。例如,當(dāng)他們升級到新手機(jī)時赢织,他們不會丟失他們在舊手機(jī)上購買的所有商品亮靴。在您的應(yīng)用中包含一些機(jī)制,讓用戶恢復(fù)購買于置,例如Restore Purchases按鈕茧吊。恢復(fù)購買會提示用戶的App Store憑據(jù)八毯,這會中斷您的應(yīng)用流量:因此搓侄,請勿自動恢復(fù)購買,尤其是每次啟動應(yīng)用時都不會话速。

在大多數(shù)情況下讶踪,您的所有應(yīng)用程序需要刷新收據(jù)并在收據(jù)中交付產(chǎn)品。刷新的收據(jù)包含用戶在此應(yīng)用程序泊交,此設(shè)備或任何其他設(shè)備上購買的記錄乳讥。但是,由于以下原因之一廓俭,某些應(yīng)用需要采用其他方法:

  • 如果您使用Apple托管的內(nèi)容云石,則恢復(fù)已完成的交易會為您的應(yīng)用程序提供用于下載內(nèi)容的交易對象。
  • 如果您需要支持早于iOS 7的iOS版本(應(yīng)用程序收據(jù)不可用)研乒,請恢復(fù)已完成的交易留晚。
  • 如果您的應(yīng)用使用非續(xù)訂訂閱,則您的應(yīng)用負(fù)責(zé)恢復(fù)過程。

刷新收據(jù)會向App Store詢問收據(jù)的最新副本错维。 刷新收據(jù)不會創(chuàng)建任何新交易奖地。 雖然您應(yīng)該避免連續(xù)多次刷新,但此操作與僅刷新一次的結(jié)果相同赋焕。

恢復(fù)已完成的事務(wù)會為用戶完成的每個已完成事務(wù)創(chuàng)建一個新事務(wù)参歹,實(shí)質(zhì)上是為事務(wù)隊(duì)列觀察者重放歷史記錄。 在恢復(fù)事務(wù)時隆判,您的應(yīng)用程序會維護(hù)自己的狀態(tài)犬庇,以跟蹤恢復(fù)已完成事務(wù)的原因以及如何處理它們。 多次還原會為每個已完成的事務(wù)創(chuàng)建多個已還原的事務(wù)侨嘀。

注意:如果用戶嘗試購買已購買的產(chǎn)品臭挽,而不是使用應(yīng)用程序的恢復(fù)界面,則App Store會創(chuàng)建常規(guī)事務(wù)而不是恢復(fù)事務(wù)咬腕。 不再向用戶收取產(chǎn)品費(fèi)用欢峰。 處理這些交易的方式與處理原始交易的方式完全相同。

為用戶提供對重新下載的內(nèi)容的適當(dāng)控制級別涨共。 例如纽帖,不要一次下載三年的日報或數(shù)百兆的游戲關(guān)卡。


Refreshing the App Receipt - 刷新應(yīng)用程序收據(jù)

創(chuàng)建收據(jù)刷新請求举反,設(shè)置委托懊直,然后啟動請求。 該請求支持在測試期間以各種狀態(tài)獲取收據(jù)的可選屬性火鼻,例如過期收據(jù) - 有關(guān)詳細(xì)信息室囊,請參閱SKReceiptRefreshRequestinitWithReceiptProperties:方法的值。

request = [[SKReceiptRefreshRequest alloc] init];
request.delegate = self;
[request start];

收據(jù)刷新后魁索,檢查并交付任何已添加的產(chǎn)品波俄。


Restoring Completed Transactions - 恢復(fù)已完成的交易

您的應(yīng)用程序通過調(diào)用SKPaymentQueuerestoreCompletedTransactions方法啟動該過程。 這會向App Store發(fā)送請求蛾默,以恢復(fù)所有應(yīng)用已完成的交易懦铺。 如果您的應(yīng)用為其支付請求的applicationUsername屬性設(shè)置了值,如Detecting Irregular Activity中所述支鸡,請使用restoreCompletedTransactionsWithApplicationUsername:方法在還原事務(wù)時提供相同的信息冬念。

App Store為先前完成的每個事務(wù)生成新事務(wù)。 已還原的事務(wù)具有對原始事務(wù)的引用:SKPaymentTransaction的實(shí)例具有originalTransaction屬性牧挣,并且收據(jù)中的條目具有Original Transaction Identifier字段急前。

注意:日期字段對恢復(fù)購買的含義略有不同。 有關(guān)詳細(xì)信息瀑构,請參閱Receipt Validation Programming Guide中的Purchase Date and Original Purchase Date字段裆针。

對于每個恢復(fù)的事務(wù)刨摩,將調(diào)用狀態(tài)為SKPaymentTransactionStateRestored的事務(wù)隊(duì)列觀察器,如Waiting for the App Store to Process Transactions中所述世吨。 您此時采取的操作取決于您的應(yīng)用程序的設(shè)計(jì)澡刹。

  • 如果您的應(yīng)用使用應(yīng)用收據(jù)并且沒有Apple托管的內(nèi)容,則不需要此代碼耘婚,因?yàn)槟膽?yīng)用無法恢復(fù)已完成的交易罢浇。 立即完成任何恢復(fù)的事務(wù)。
  • 如果您的應(yīng)用使用應(yīng)用收據(jù)并且擁有Apple托管的內(nèi)容沐祷,請讓用戶在開始恢復(fù)過程之前選擇要恢復(fù)的產(chǎn)品嚷闭。 在恢復(fù)期間,重新下載用戶選擇的內(nèi)容并立即完成任何其他事務(wù)赖临。
NSMutableArray *productIDsToRestore = <# From the user #>;
SKPaymentTransaction *transaction = <# Current transaction #>;
 
if ([productIDsToRestore containsObject:transaction.transactionIdentifier]) {
    // Re-download the Apple-hosted content, then finish the transaction
    // and remove the product identifier from the array of product IDs.
} else {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
  • 如果您的應(yīng)用不使用應(yīng)用收據(jù)胞锰,則會在恢復(fù)后檢查所有已完成的交易。 它使用與原始購買邏輯類似的代碼路徑來使產(chǎn)品可用兢榨,然后完成交易嗅榕。

具有多個產(chǎn)品的應(yīng)用程序(尤其是具有相關(guān)內(nèi)容的產(chǎn)品)允許用戶選擇要恢復(fù)的產(chǎn)品,而不是一次性恢復(fù)所有產(chǎn)品色乾。 這些應(yīng)用程序會跟蹤哪些已完成的事務(wù)在恢復(fù)時需要處理誊册,哪些事務(wù)可以通過立即完成來忽略领突。

后記

本篇主要講述了恢復(fù)購買的產(chǎn)品暖璧,感興趣的給個贊或者關(guān)注~~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市君旦,隨后出現(xiàn)的幾起案子澎办,更是在濱河造成了極大的恐慌,老刑警劉巖金砍,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件局蚀,死亡現(xiàn)場離奇詭異,居然都是意外死亡恕稠,警方通過查閱死者的電腦和手機(jī)琅绅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹅巍,“玉大人千扶,你說我怎么就攤上這事÷媾酰” “怎么了澎羞?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敛苇。 經(jīng)常有香客問我妆绞,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任括饶,我火速辦了婚禮株茶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巷帝。我一直安慰自己忌卤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布楞泼。 她就那樣靜靜地躺著驰徊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堕阔。 梳的紋絲不亂的頭發(fā)上棍厂,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音超陆,去河邊找鬼牺弹。 笑死,一個胖子當(dāng)著我的面吹牛时呀,可吹牛的內(nèi)容都是我干的张漂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼谨娜,長吁一口氣:“原來是場噩夢啊……” “哼航攒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起趴梢,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤漠畜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坞靶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憔狞,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年彰阴,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘾敢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡尿这,死狀恐怖簇抵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妻味,我是刑警寧澤正压,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站责球,受9級特大地震影響焦履,放射性物質(zhì)發(fā)生泄漏拓劝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一嘉裤、第九天 我趴在偏房一處隱蔽的房頂上張望郑临。 院中可真熱鬧,春花似錦屑宠、人聲如沸厢洞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躺翻。三九已至,卻和暖如春卫玖,著一層夾襖步出監(jiān)牢的瞬間公你,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工假瞬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陕靠,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓脱茉,卻偏偏與公主長得像剪芥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子琴许,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

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