日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

In-app Purchase 程序內付費

系統 2447 0

自從10月16日蘋果發送給所有開發者的那 一封信 ,通知了程序內購買將可用于免費應用,我認為這也宣告了LITE版的時代結束。

成千上萬的免費版的軟件或游戲,將作為限制了功能的完整版免費發售,如果用戶覺得有意購買,可以直接解鎖完整版的功能或購買附加內容。
本文講闡述如何為你現有的應用或游戲添加程序內購買(In App Purchase)功能。

閱讀前提:假設了你擁有一定的iPhone SDK開發基礎,和App Store實踐經驗。

你的程序需要唯一的Bundle ID, 如果已經發布的程序使用了通配符,那么就不能直接添加該功能。如果擁有了唯一的ID,請在program portal中添加你的app id,允許程序使用內購買(Enable In App Purchase)。

在設計好你的程序內購買的功能以后,首先需要定義元數據。來到 iTunes Connect ,在Manage Your In App Purchases中為你的程序添加一個程序內購買的商品。

上面第一個部分是添加的內部信息。參考名稱,ID,類型,和價格。以及各種本地化信息。
這里簡單說一下類型的選擇,其他信息,以及In App Purchase支持什么類型的商品請查看 Getting Started with In App Purchase

Non-consumable 默認類型,非消耗品,具有持久性,特點是一次性購買,可用在所有設備。例如解鎖游戲的儲存關卡功能。
Consumable 消耗品,用完或使用后消失,可多次購買,不能用在所有的設備,例如游戲中的血瓶或技能書。
Subscription 訂閱,和消耗品一樣,除了可以在設備之間共享。

創建購買流程
大致可以分為十個步驟:

  1. 驗證App Store存取權限
    這樣做是因為,家長控制或一些公司的配置文件阻止了此功能,使用支付隊列的查詢功能canMakePayments來確定用戶是否有權限購買,返回值YES代表可以購買/NO代表沒有權限購買。
  2. 載入目錄
    載入儲存在本地或者遠程的商品目錄。
  3. 獲得商品本地化信息
    程序向App Store發起查詢請求獲得目錄中商品的本地化信息。:
    myPossibleProds = [NSSet setWithObjects: @”myProd1”, @”myProd2”, @”myProd3, nil];
    myProdRequest = [[SKProductsRequest alloc] initWithProductIdentifiers: myPossibleProds];
    myProdRequest.delegate = myProductsRequestDelegate;
    [myProdRequest start];

    程序接收來自App Store的回應:
    -(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    response包含可能的信息
    response.products //產品信息
    response.invalidProductIdentifiers //錯誤的產品標示符

    錯誤的產品可能由下面的原因導致:

    • 商品未在 iTunes Connect中錄入。
    • 商品沒有選擇“Cleared for Sale”。
    • 商品還沒有傳播到所有服務器。
  4. 創建商品信息
    前面的步驟獲得了產品信息的數組用以呈現:
    myAvailableProductsArray = response.products;
    for (SKProduct* aProduct in myAvailableProductsArray) {
    diplayTitle = aProduct.localizedTitle;
    displayDesc = aProduct.localizedDescription;
    displayPrice = aProduct.price;
    }
  5. 呈現商品信息
    在UI中顯示前面獲得的信息
  6. 請求支付
    myPayment = [SKPayment paymentForProductIdentifier: selectedProdID userInfo: nil];

    myPayment = [SKPayment paymentForProduct: selectedProduct userInfo: nil];
    然后 提交到隊列
    defaultPaymentQueue = [SKPaymentQueue defaultQueue];
    [defaultPaymentQueue addTransactionObserver: myObserver];
    [defaultPaymentQueue addPayment: myPayment];
    [defaultPaymentQueue addPayment: myRequest];

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
  7. 驗證支付的事務
    for(SKPaymentTransaction *aTransaction in transactions) {
    switch (aTransaction.transactionState ) {

    // 商品進入購買流程
    case SKPaymentTransactionStatePurchasing:
    ...
    break;
    // 成功購買商品
    case SKPaymentTransactionStatePurchased:
    ...
    break;
    // 已經購買過該商品
    case SKPaymentTransactionStateRestored:
    ...
    break;

    // 用戶取消交易
    case: SKPaymentTransactionStateFailed
    ...
    break;

    App Store的交易回執
    aTransaction.transactionReceipt

    • Used to validate e-commerce transaction
    • Cryptographically signed chunk of data
    • Contains information about the purchase
    • Can validate using Web-based API

    收到交易回執以后可以傳送到你的服務器處理該交易。
    你的服務器可以向蘋果發送交易驗證信息。
    蘋果的交易驗證地址:https://buy.itunes.apple.com/verifyReceipt
    驗證數據格式:{ receipt-data : …}
    蘋果的返回值如果是{ status : 0 } 那么交易是正確,如果返回任何其他值 { status : any_other_value } 交易就是不成立。
    你的服務器收到蘋果的驗證成功信息以后,返回給應用程序類似于解鎖功能等消息。

  8. 解鎖內置物品火提供遠程存取地址
    需要注意的地方

    • 用戶可能隨時退出程序。
    • Store Kit 的交易隊列是持久化的。
    • 交易是持久化的。
    • 驗證存取。
    • 移除交易。

    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

  9. 儲存購買
    需要將非消耗的購買記錄在服務器上,以供用戶更換設備或刪除程序以后重新安裝時再次解鎖功能。
  10. 提供物品恢復
    前面的代碼中,已經購買過該商品的處理就是直接解鎖。
    defaultPaymentQueue = [SKPaymentQueue defaultQueue];
    [defaultPaymentQueue restoreCompletedTransactions];

測試沙盒環境
只供給測試用戶,并且設備上才有效,不能使用模擬器測試。
可以為每個國家的商店添加測試帳號。
不能用來測試其他的iTunes Store特性。
需要為每個測試添加唯一的email地址,可以考慮使用+
payam+usa@example.com—測試美國的商品
payam+uk@example.com—測試英國的商品
payam+jp@example.com—測試日本的商品
測試步驟,需要在設備的設置菜單中iTunes Store登出原有帳戶。
然后不要在設置菜單中登錄測試帳號,而是直接打開需要測試的程序進行測試。
在這之前需要在iTunes Connect的Manage Users菜單中添加In App Purchase測試用戶。

財務報表

  • 收入和應用程序同樣的規則
    • 你獲得總收入的70%。
    • 支付日程,使用稅,報表等全部都一樣。
  • 報表
    • 一樣的報表格式。
    • 販賣的標示符欄顯示物品的產品ID。
    • 所有者標示符欄顯示程序的ID。

本文部分內容參考自 In App Purchase Programming Guide 和WWDC 2009 Sessions,如需轉載請注明出處。

add

add

In-app Purchase 程序內付費


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 米林县| 涟源市| 新乡县| 塔河县| 义乌市| 竹山县| 辛集市| 平遥县| 盘锦市| 彰化县| 永仁县| 新野县| 兴宁市| 诸暨市| 六枝特区| 沙雅县| 茌平县| 肥东县| 申扎县| 莲花县| 拉孜县| 瑞金市| 长沙市| 阜城县| 莱阳市| 乐东| 屏南县| 深圳市| 比如县| 壤塘县| 贵德县| 汽车| 博白县| 汕尾市| 济阳县| 伊川县| 财经| 新和县| 南平市| 平山县| 横峰县|