使用訂閱 (subscriptions) 的應(yīng)用有額外的行為和注意事項(xiàng) (considerations) 箱沦。 因?yàn)橛嗛啺瑫r(shí)間元素谈秫,應(yīng)用程序需要有適當(dāng)?shù)倪壿媮頉Q定訂閱當(dāng)前是否處于活動狀態(tài)以及過去該訂閱活動的時(shí)間段。 應(yīng)用程序還需要應(yīng)對新的和更新的訂閱或杠,并且需要正確地處理過期訂閱哪怔。 圖5-1 如訂閱時(shí)間表的例子,包括應(yīng)用程序需要處理的復(fù)雜事項(xiàng) (complexities )向抢。
一认境、計(jì)算一個(gè)訂閱的活動期
應(yīng)用程序需要在訂閱處于活動狀態(tài)的期間內(nèi)決定用戶訪問的內(nèi)容。 舉例挟鸠,用戶訂閱雜志元暴,該雜志在每個(gè)月的第一天發(fā)布新刊,如圖5-1中的時(shí)間表:
表 5-1 一個(gè)示例訂閱的時(shí)間表
在應(yīng)用程序中實(shí)現(xiàn)訂閱邏輯兄猩,保留關(guān)于每刊內(nèi)容發(fā)布的日期記錄茉盏。 從每個(gè)收據(jù)項(xiàng)目中讀取初始購買日期和訂閱到期時(shí)期來決定訂閱的開始和結(jié)束日期。 (關(guān)于收據(jù)的更多信息枢冤,請看 Receipt Validation Programming Guide.) 用戶可以訪問所有在開始日期和結(jié)束日期之間發(fā)布的內(nèi)容以及它初次購買時(shí)解鎖的內(nèi)容鸠姨。 如果訂閱失效(lapsed),將由訂閱活動期間的多個(gè)時(shí)間期,以及在一個(gè)訂閱期的開始時(shí)又多刊內(nèi)容解鎖淹真。
注意:不要通過添加訂閱持續(xù)時(shí)間到購買日期中來計(jì)算訂閱期讶迁。 該方法沒有考慮到應(yīng)用試用期,市場選擇期核蘸,并讓用戶購買了訂閱之后馬上解鎖內(nèi)容巍糯。
從表5-1開始繼續(xù)示例,收據(jù)將顯示以下開始和結(jié)束日期:
- 2月20號 – 3月20號
- 3月20號 – 4月20號
- 4月20號到6月17號在收據(jù)中記錄詳細(xì)信息
- 6月17號到7月17號
用戶可以訪問二月和六月刊客扎,因?yàn)樗鼈儠r(shí)在訂閱被購買或重新訂閱時(shí)解鎖的內(nèi)容祟峦,用戶可以訪問三月,四月徙鱼,六月以及七月刊宅楞,因?yàn)樵谶@些時(shí)間訂閱是活動的。
二袱吆、到期和續(xù)訂
續(xù)訂過程在到期日期前10天開始預(yù)檢厌衙。 在那10天中,應(yīng)用商店檢查任何可能導(dǎo)致自動續(xù)訂延遲或無法續(xù)訂的情況---比如绞绒,如果用戶沒有可用的支付方法婶希,如果用戶購買了訂閱之后,產(chǎn)品價(jià)格升了蓬衡,又或者如果產(chǎn)品已經(jīng)不存在喻杈。 應(yīng)用商店通知用戶任何問題拐揭,這樣他們就可以在續(xù)訂之前解決這些問題,以確保不會終止他們的續(xù)訂奕塑。
注意:提高訂閱價(jià)格并不會終止所有用戶的自動續(xù)訂堂污,只要那些用戶的到期時(shí)間是在未來10天之內(nèi)。 如果該價(jià)格改變是一個(gè)錯(cuò)誤龄砰,把價(jià)格改回原來的價(jià)格并不會影響任何用戶盟猖。 如果是有意的提交價(jià)格,一直保留該新價(jià)格將導(dǎo)致依次進(jìn)入10天續(xù)訂窗口的其他用戶不能進(jìn)行自動續(xù)訂换棚。
在訂閱到期的前24個(gè)小時(shí)期間式镐,應(yīng)用商店開始嘗試自動續(xù)訂。 盡管應(yīng)用商店在自動續(xù)訂期間會多次嘗試自動續(xù)訂固蚤,但是如果失敗次數(shù)太多則會終止自動續(xù)訂娘汞。
盡管應(yīng)用商店在它快要過期之前自動續(xù)訂來防止丟失任何訂閱。 但是夕玩,任然有可能丟失你弦。比如,如果用戶的支付信息已經(jīng)失效燎孟,第一次續(xù)訂將失敗禽作。 如果用戶一直不更新該支付信息直到訂閱到期,在到期時(shí)間和下次自動續(xù)訂成功之前這段時(shí)間將有一小段時(shí)間的丟失揩页。 用戶也可以關(guān)閉自動續(xù)訂并故意讓訂閱到期旷偿,然后在以后續(xù)訂它,長期丟失訂閱爆侣。 請確定你的應(yīng)用程序的訂閱邏輯能正確地處理不同時(shí)間的丟失萍程。
當(dāng)成功續(xù)訂之后,商店Kit把續(xù)訂交易添加到交易隊(duì)列中兔仰。應(yīng)用程序在啟動時(shí)檢查交易隊(duì)列并且同處理其它任何交易一樣處理它茫负。 注意如果在續(xù)訂時(shí)應(yīng)用程序已經(jīng)運(yùn)行,那么交易觀察者將不被調(diào)用斋陪;應(yīng)用程序在下一次啟動時(shí)找到續(xù)訂記錄
三朽褪、取消
購買了一個(gè)訂閱后得全額付款置吓,只有通過聯(lián)系蘋果客服服務(wù)才能退款无虚。 比如,如果用戶意外買錯(cuò)了產(chǎn)品衍锚,客服中心可以取消該交易并退款友题。 用戶不能在訂閱周期中間改變注意不支付剩余的訂閱。
要想確認(rèn)某次交易是否已經(jīng)被取消戴质,在收據(jù) (receipt) 中查找 Cancellation Date (取消日期)字段度宦。 如果該字段有日期踢匣,不管該訂閱的過期日期是什么,該交易都已經(jīng)被取消---取消交易就是跟沒有購買過一樣戈抄。
根據(jù)產(chǎn)品類型离唬,只能檢查當(dāng)前的活動交易,可能需要檢查過去所有的交易划鸽。比如输莺,雜志應(yīng)用需要檢查過去所有的交易來決定用戶訪問了那些期刊。
四裸诽、跨平臺注意事項(xiàng)
產(chǎn)品識別碼只能綁定到一個(gè)應(yīng)用程序嫂用。同時(shí)有 iOS 和 OS X 版本的應(yīng)用程序是不同的應(yīng)用程序并分別帶有不同的產(chǎn)品識別碼。 可以讓在一個(gè) iOS 應(yīng)用中購買了訂閱的用戶從 OS X 應(yīng)用(或其它平臺)訪問它購買的內(nèi)容丈冬,但是這功能你應(yīng)該自己實(shí)現(xiàn)嘱函。你會需要一些系統(tǒng)來識別用戶并保持跟蹤他們已經(jīng)訂閱了什么內(nèi)容,類似于你會給一個(gè) no-renewable subscriptions (不可再生訂閱)應(yīng)用程序?qū)崿F(xiàn)什么埂蕊。
五往弓、讓用戶管理訂閱
不需要編碼實(shí)現(xiàn)訂閱管理 UI ,應(yīng)用程序可以打開以下 URL
https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions
打開該 URL 啟動 iTunes 或者 iTunes 商店蓄氧,然后顯示管理訂閱頁面亮航。
六、測試環(huán)境
為了測試匀们,自動訂閱在產(chǎn)品環(huán)境 (production environment) 和 在測試環(huán)境 (test environment) 中的行為有所不同缴淋。
更新發(fā)生在加速時(shí),并且自動訂閱每天最多更新6次泄朴。 這樣讓測試應(yīng)用程序如何處理訂閱更新重抖,一個(gè)訂閱失效,以及一個(gè)包括缺口的訂閱歷史祖灰。因?yàn)榧铀俚牡狡诤透滤俣戎优妫嗛喛梢栽谙到y(tǒng)開始嘗試更新訂閱之前過期,在訂閱期間留下一個(gè)小失誤局扶。 因?yàn)楦鞣N原因恨统,這樣的失誤在產(chǎn)品中也同樣可能存在---請確保應(yīng)用程序可以正確地處理它們。