Thursday, April 14, 2011

iOS In App Purchase 學習筆記 (2)

如何提供product給使用者?
使用者選擇product並付款後. 你的app就要能讓使用者享受他所購買的東西. 提供product的方法有兩種: (1) 內建product模式 (2) 伺服器提供product模式. 要用哪種方式則須視product類型來作決定.

(1) Built-in Product Model - 內建product模式
顧名思義, 這種模式是已經預先把功能放在app中, 在使用者付費之後app就會解除鎖定. 這種模式的優點是能快速的讓使用者享受他所購買的功能. 通常nonconsumable(非消耗性)的product會採用這種方式.

流程:
1. app讀取product清單 (放在plist會比寫在程式碼有彈性)
2. app向App Store取得product名稱/描述等相關資訊
3. App Store回傳product資訊
4. app呈現product資訊供使用者選擇
5. 使用者決定購買某product
6. app向App Store發出付費要求
7. App Store處理付費要求並回傳交易紀錄
8. app依據交易紀錄來判斷是否完成付款, 成功的話就將功能解除鎖定

解除鎖定最簡單的方式是修改app的偏好設定. 偏好設定會在使用者同步iOS裝置的時候與app一起備分. 你的app可以在收到成功的購買紀錄後提示使用者主動備分.

(2) Server Product Model - 伺服器提供product模式
在這個模式中, 你需要另外提供伺服器讓app在使用者付款後由此得到product. 這種模式常見於subscriptions(訂閱), services(服務)和 content(資料內容)等. Store Kit並未規範標準流程, 你必須自行定義app和伺服器之間溝通方式. 此外, 個別使用者的識別及購買product的對應也必須要自己處理.

流程:
1. app向伺服器取得product清單 (詢問伺服器會比放在plist有彈性)
2. 伺服器回傳支援的清單
3. app向App Store取得product名稱/描述等相關資訊
4. App Store回傳product資訊
5. app呈現product資訊供使用者選擇
6. 使用者決定購買某product
7. app向App Store發出付費要求
8. App Store處理付費要求並回傳交易紀錄
9. app將交易收據上傳至伺服器
10. 伺服器紀錄此交易
11. 伺服器向App Store詢問此交易是否有效
12. App Store回傳結果
13. 伺服器判讀交易結果
14. 成功的話會讓使用者享受他所購買的東西

在這個模式中, app必須保證訂閱類型的product能被使用者回復使用.

1 comment:

  1. 您好...跟您請教一下喔,請問In App Purchase,有沒有不用另外架server的方法?(ps.包在同一個App裡面也不考慮...)感謝感謝...

    ReplyDelete