iOS內購IAP(九) —— 編程指南之處理訂閱(一)

版本記錄

版本號 時間
V1.0 2018.07.29

前言

大家都知道,ios虛擬商品如寶石、金幣等都需要走內購,和蘋果三七分成,如果這類商品不走內購那么上不去架或者上架以后被發現而被下架。最近有一個項目需要增加內購支付功能,所以最近又重新集成并整理了下,希望對大家有所幫助。感興趣的可以參考上面幾篇。
1. iOS內購IAP(一) —— 基礎配置篇(一)
2. iOS內購IAP(二) —— 工程實踐(一)
3. iOS內購IAP(三) —— 編程指南之關于內購(一)
4. iOS內購IAP(四) —— 編程指南之設計您的應用程序的產品(一)
5. iOS內購IAP(五) —— 編程指南之檢索產品信息(一)
6. iOS內購IAP(六) —— 編程指南之請求支付(一)
7. iOS內購IAP(七) —— 編程指南之促進應用內購買(一)
8. iOS內購IAP(八) —— 編程指南之提供產品(一)

Working with Subscriptions - 處理訂閱

提供訂閱的應用程序具有一些其他行為和注意事項。 由于訂閱涉及時間元素,因此您的應用必須能夠確定訂閱當前是否處于活動狀態,并確定過去日期的訂閱狀態。 您的應用還必須對新的,續訂的和已失效的訂閱做出反應,并正確處理過期的訂閱。 圖6-1顯示了一個示例訂閱時間表,包括您的應用程序需要處理的一些復雜性。

Figure 6-1 Example subscription timeline

Calculating a Subscription’s Active Period - 計算訂閱的激活期

您的應用需要根據訂閱處于活動狀態的時間段來確定用戶可以訪問的內容。 例如,對于訂閱每月雜志的用戶,該雜志在每個月的第一天發布新內容,請考慮表6-1中顯示的時間表。

Table 6-1 Timeline of a sample monthly subscription

要訪問客戶有權訪問的所有內容,請記錄每個內容的發布日期。 從每個收據條目中讀取原始購買日期,購買日期和訂閱到期日期字段,以確定每個訂閱期間的開始和結束日期。 (有關收據的信息,請參閱Receipt Validation Programming Guide。)用戶可以訪問在每個訂閱開始和結束日期之間發布的所有內容,以及購買訂閱時最初解鎖的內容。 如果訂閱失效,則訂閱處于活動狀態的時間段將存在多個時間段,并且在訂閱期開始時將解鎖多個內容。

要識別訂閱中的失誤,請將每個收據條目的訂閱到期日期字段Subscription Expiration Date與收據中所有條目的先前收據條目的PurchaseDate字段進行比較。

注意:請勿通過在購買日期添加訂閱持續時間來計算訂閱期。 該方法未考慮免費試用期,營銷選擇期以及用戶購買訂閱后立即提供的內容。例如,由于在購買訂閱時內容始終處于解鎖狀態,因此在月中購買月度訂閱的用戶可以在每個月的第一天發布新內容的雜志在訂閱的第一個月內獲取兩份雜志 :最近發布的雜志,在購買訂閱時解鎖,以及您在本月的第一天發布的雜志,該雜志在您發布時解鎖。

繼續表6-1中的示例,收據將顯示以下開始和結束日期:

  • 2月20日 - 3月20日
  • 3月20日 - 4月20日
  • (4月20日至6月17日的失效未在收據中明確記錄。)
  • 6月17日 - 7月17日

用戶可以獲取二月和六月的內容,因為他們最初在購買或重新啟動訂閱時已解鎖。

用戶可以獲取3月,4月,6月和7月的內容,因為訂閱在這些時間處于活動狀態。


Upgrades and Plan Changes - 升級和計劃變更

用戶可以在App Store或您應用的界面中的帳戶設置中管理他們的訂閱。 對于每個訂閱,App Store會顯示訂閱組提供的所有續訂選項。 用戶可以輕松更改其服務級別,并根據需要隨時選擇升級,降級或交叉級。 任何持續時間的降級或具有不同持續時間的交叉等級將在下一個續訂日期生效。

您可以查看收據的Subscription Auto Renew Preference字段,以了解用戶選擇的任何計劃更改,這些更改將在下一個續訂日期生效。 (有關收據的信息,請參閱 Receipt Validation Programming Guide。)


Expiration and Renewal - 到期和續訂

訂閱續訂過程在到期日期前十天開始。 在這十天內,App Store會檢查可能會延遲或阻止訂閱自動續訂的任何結算問題,例如:

  • 客戶的付款方式不再有效,
  • 自用戶購買訂閱以來,產品價格上漲,
  • 該產品已不再可用。

App Store可以通知用戶任何問題,以便他們可以在訂閱到期之前解決它,并避免其訂閱服務中斷。

在訂閱到期之前的24小時內,App Store開始嘗試自動續訂。 App Store會多次嘗試在一段時間內自動續訂訂閱,但如果嘗試失敗次數過多,最終會停止。

注意:對于與結算相關的問題,App Store可能會嘗試續訂最多60天的訂閱。 您可以在收據中檢查訂閱重試標記Subscription Retry Flag,以確定App Store是否仍在嘗試續訂訂閱。

App Store會在訂閱到期之前稍微更新訂閱,以防止訂閱失效。但是,失誤仍然存在。例如,如果用戶的付款信息不再有效,則第一次續訂嘗試失敗。如果用戶在訂閱到期后更新其支付信息,則在到期日期和后續自動續訂嘗試成功的日期之間訂閱將會短暫失效。用戶還可以禁用自動續訂并有意讓訂閱到期,然后在以后續訂,從而在訂閱中創建更長的失效。確保您的應用程序的訂閱邏輯可以正確處理各種持續時間的失誤。您可以檢查訂閱自動續訂狀態字段以確定訂閱的續訂狀態。

成功續訂訂閱后,StoreKit會將續訂事務添加到事務隊列中。您的應用程序在啟動時檢查事務隊列,并以與任何其他事務相同的方式處理續訂。請注意,如果您的應用在訂閱續訂時已在運行,則不會調用事務觀察器;您的應用在下次啟動應用時會發現有關續訂的信息。

例如,下面的時間線顯示了用戶訂閱應用程序的帳戶,該應用程序每月提供服務。在該示例中,由于計費問題,訂閱暫時失效。用戶更正了問題,訂閱將以新的每月續訂日期續訂

Table 6-2 Example of a timeline for a monthly subscription


Cancellation - 取消

續訂在購買時全額支付。用戶只能通過聯系Apple客戶服務獲得退款。例如,如果用戶意外購買了錯誤的產品,客戶支持可以取消訂閱并發出全部或部分退款。客戶可以在訂閱期間取消訂閱,但訂閱仍在同一時期結束時支付。

要檢查Apple Customer Support是否已取消購買,請在收據中查找Cancellation Date字段。如果該字段包含日期,則無論訂閱的到期日期如何,購買都會被取消。關于提供內容或服務,將取消的交易視為從未進行過購買。

根據您的應用提供的產品類型,您可能需要檢查當前有效的訂閱期,或者您可能需要檢查所有過去的訂閱期。例如,雜志應用程序需要檢查所有過去的訂閱期以確定用戶應該訪問哪些雜志。具有流服務的應用程序僅需要檢查當前活動的訂閱以確定用戶是否應該訪問其服務。


Status Update Notifications - 狀態更新通知

statusUpdateNotification是用于自動續訂訂閱的服務器到服務器通知服務。 通知指定發送通知時的訂閱狀態。

要在處理事件時獲取最新信息,您的應用應通過App Store驗證最新收據。 建議您使用狀態更新通知服務以及收據驗證來驗證用戶的當前訂閱狀態并為其提供服務。 有關收據驗證的信息,請參閱Receipt Validation Programming Guide

要接收狀態更新通知,請在App Store Connect中為您的應用配置訂閱狀態URL。 App Store將通過HTTP POST將JSON對象傳送到您的服務器,以獲取表6-3中列出的key訂閱事件。 您的服務器負責解析,解釋和響應所有statusUpdateNotification posts。

注意:使用服務器到服務器通知服務是可選的。 您可以隨時選擇加入。

statusUpdateNotificationHTTP POST。 POST的body包含表6-3中列出的數據元素。

Table 6-3 Status Update Notification Keys

App Store可以在表6-4中列出的任何條件下發布通知,表示通知類型和相應訂閱事件的完整列表

Table 6-4 Status Update Notification Types

要通過statusUpdateNotificationpost指示成功,您的服務器應發送HTTP狀態代碼200;您的服務器不需要返回數據值。 如果您的服務器發送50x或40x HTTP代碼,App Store將重試該通知。 App Store會在一段時間內多次嘗試重試通知,但如果嘗試失敗次數過多,最終會停止。

1. Security Requirements - 安全要求

在發送通知之前,App Store會嘗試使用App Transport Security(ATS)協議與您的服務器建立安全的網絡連接。 要了解有關ATS要求的更多信息,請參閱Requirements for Connecting Using ATS。 如果無法建立安全連接,則不會將通知發送到您的服務器。 有關安全性的更多信息,請參閱https://developer.apple.com/security/

2. Status Update Notifications in the Test Environment - 測試環境中的狀態更新通知

建議您在生產中實現此邏輯之前測試測試環境中交易的statusUpdateNotifications

要確定訂閱事件的狀態更新通知是否在測試環境中,請檢查statusUpdateNotification JSON對象中的environment鍵值是否等于SANDBOX


Cross-Platform Considerations - 跨平臺考慮因素

產品標識符與單個應用相關聯。 具有iOS版本和macOS版本的應用程序具有單獨的產品,每個平臺上都有唯一的產品標識符。 您可以讓在iOS應用程序中訂閱的用戶從macOS應用程序獲取內容(反之亦然),但實現該功能是您的責任。 您需要一個系統來識別用戶并跟蹤他們訂閱的內容,類似于您為使用不可續訂訂閱的應用程序實現的內容。


Enabling Users to Manage Subscriptions - 使用戶能夠管理訂閱

您的應用可以打開以下網址,而不是實施自己的訂閱管理用戶界面:

https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions

打開此URL會啟動iTunesiTunes Store并顯示Manage Subscription頁面。


The Test Environment - 測試環境

自動更新訂閱的行為在測試環境和生產環境之間有所不同。

在測試環境中,訂閱續訂速度加快,自動續訂訂閱每天最多續訂六次。 這使您可以測試應用程序如何處理訂閱續訂,訂閱失效以及包含間隔的訂閱歷史記錄。

由于加速到期和續訂率,訂閱可以在系統嘗試續訂訂閱之前到期,在訂閱期間留下一小段時間。 由于各種原因,這種失誤也可能在生產中出現 - 確保您的應用正確處理它們。

后記

本篇主要講述了處理訂閱,感興趣的給個贊或者關注~~~~

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

推薦閱讀更多精彩內容