亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

In-app Purchase 程序內付費

系統 2455 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條評論
主站蜘蛛池模板: 久久久精品国产 | 欧美在线观看一区二区三 | 久久精品卫校国产小美女 | 亚洲黄色视屏 | 色综合夜夜嗨亚洲一二区 | 精品日韩在线视频一区二区三区 | 欧美福利视频在线 | 国产成人精品视频免费 | 色偷偷网址 | 曰本性l交视频 | 色综合天天综合网看在线影院 | 久久精品*5在热 | 亚洲国产精品久久久久久网站 | 99在线观看视频免费精品9 | 国产成人18黄禁网站免费观看 | 欧美日韩网址 | 久久精品国产99久久3d动漫 | 成人免费国产欧美日韩你懂的 | 国产a v高清一区二区三区 | 四虎精品永久免费 | 亚洲三级久久 | 97色精品视频在线观看免费 | 精品国产一区二区三区四区不 | 999国产精品视频 | 五月天中文在线 | 美女69xxxxxxxx | 伊人影院99 | 国产高清精品自在久久 | 免费国内精品久久久久影院 | 一区在线免费 | 国产精品久久久久久久久免费 | 欧美人成毛片在线播放 | 极品美女aⅴ高清在线观看 极品美女一级毛片 | 色五月在线视频 | 日日摸天天摸狠狠摸摸 | 精品一区二区三区亚洲 | 色色视频网 | 久久婷婷国产麻豆91天堂 | 乱在线伦视频免费 | 欧美日韩一区二区在线观看视频 | 9i9精品国产免费久久 |