1. 程式人生 > >IOS開發關於內購IAP/StoreKit詳解

IOS開發關於內購IAP/StoreKit詳解

 Himi  原創, 歡迎轉載,轉載請在明顯處註明! 謝謝。


//——2012-12-11日更新   獲取"產品付費數量等於0這個問題"的原因

看到很多童鞋問到,為什麼每次都返回數量等於0??

其實有童鞋已經找到原因了,原因是你在 ItunesConnect 裡的 “Contracts, Tax, and Banking ”沒有完成設定賬戶資訊。

QQ20131209-2

這裡也是由於Himi疏忽的原因沒有說明,這裡先給童鞋們帶來的麻煩,致以歉意。

//——2012-6-25日更新iap恢復

看到很多童鞋說讓Himi講解如何恢復iap產品,其實博文已經給出了。這裡再詳細說下:

首先向AppStore請求恢復交易:

1 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

然後當用戶輸入正確的appStore賬號密碼後,進入

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions//交易結果

進入上面函式中的

1 2 3 4 5 6 case SKPaymentTransactionStateRestored://恢復 { [self restoreTransaction:transaction]; } break;

然後我們再以下重寫函式中處理即可!

- (void) restoreTransaction: (SKPaymentTransaction *)transaction

//——-


       終於在11月公司的遊戲即將上線了,那麼對於iOS遊戲來說當今都是內建道具收費屬於主流,那麼我們的遊戲也是內建收費,所以Himi這裡分享給大家關於內建應用收費以及申請測試賬號進行測試購買的經驗;

      在應用內嵌入付費程式碼這一快Himi可以直接將程式碼分享給大家,所以我們來說一些主要流程,畢竟沒有接觸過這一塊的童鞋肯定相當頭疼 =。  =

     OK,步入整體,如果你想在iOS裡內嵌收費,那麼分為以下幾步:

            【提示:以下建立App部分內容,你不用非要等專案能打包了才開始做,可以隨時並且隨便的建立個測試專案即可,因為嵌入付費並不要求上傳App的ipa包的!!】   

     第一步:你需要在iTunesConnect中建立個新的App,然後為這個App設定一些產品(付費道具)等;

     OK,這裡Himi稍微解釋下,iTunesConnect是蘋果提供的一個平臺,主要提供AP釋出和管理App的,最重要的功能是建立管理專案資訊,專案付費產品(道具)管理、付費的測試賬號、提交App等等,這裡就簡單介紹這麼多,關於產品一詞在此我們可以理解成遊戲道具即可;在蘋果看來所有付費都屬於產品 =。 =千萬不要糾結字眼哦~

    成功登陸後的頁面如下:

              

              這裡大概說下重要的一些項:

             Contracts, Tax, and Banking   : 管理銀行賬號、聯絡人以及稅等等;這裡要根據提示完成對應的資訊填寫!一定要詳細填寫喔~

             Manage Users :管理使用者的,比如主賬號以及測試付費的(測試App)賬號;

             Manage Your Applictions:管理應用程式的,你所有釋出的應用和每個應用的狀態都在這裡面;

     下面我們新建一個App專案,大家放心,我們這裡建立的是不會直接提交給App稽核的,所以放心建立,只要控制好App的狀態不要是待稽核狀態即可,不過即使你不小心將專案提交了,也沒事,直接更改App狀態即可了;

     選擇Manage Your Applictions選項,然後新建一個專案:【Add New App】,根據提示來填寫吧,這裡就不細緻說明了~

     建立好一個App之後,在點選Manage Your Applictions後的介面應該如下:

     

    這裡你將看到自己建立的App,點選你建立的App專案,這裡Himi建立的專案名字叫”ProjectForBuyTest“,點選你的App進入如下介面:


  (注意:這裡的Bundle ID一定要跟你的專案中的info.plist中的Bundle ID保證一致!!!!)

     這裡可以管理你的專案的資訊、狀態、是否嵌入GameCenter等等選項,那麼本章我們重點介紹如何使用IAp沙盒測試程式內付費,所以這裡我們點選右上角的”Manage In-App Purchases“選項進入建立產品(遊戲道具)介面如下:


      上圖中的下方看到Himi建立過的四個產品(道具)了,你可以點選”Create New“選項新建一個產品(付費道具),點選新建如下介面:


   上圖中Himi沒有截圖出所有的選項,這裡大概介紹下,這個介面是選擇你的消費道具的種類,種類說明如下:

   型別選擇有四種選擇:

   1.Consumable(消耗品): 每次下載都需要付費;

   2.Non-consumable(非消耗品): 僅需付費一次;

   3.Auto-Renewable Subscriptions:自動訂閱;

   4.Free Subscription:免費訂閱

   最下方是你沙盒測試的截圖,暫且不管即可;

 這裡Himi選擇Consumable選項,比如很多遊戲都是購買金幣啦這樣子就可以選擇這個;然後出現如下介面:


   Reference Name: 付費產品(道具的)參考名稱

   Product ID(產品ID): 你產品的唯一id。通常格式是 com.xx.yy,但它可以是任何形式,不要求以程式的App ID作為字首。

   Add Language: 新增產品名稱與描述語言;

   Price Tier:選擇價格,這裡你選擇價格後,會出現如上圖最下方的價格對照表

   Screenshot(截圖): 展示你產品的截圖。(這個直接無視,測試App務必要管這個的)

  Product ID(產品ID)可以建立多個,比如我想遊戲中分為0.99$ 、1.99$等道具那就建立對應多個產品ID

我們填寫好了”Reference Name“與”Product ID“以及”Price Tier“後,點選”Add Language“選項然後出現如下介面:

            

  上圖中的選項:

      Language:語言

      Displayed Name(顯示名稱): 使用者看到的產品名稱。

      Description(描述): 對產品進行描述。

  Ok,一路 Save儲存回到”Manage In-App Purchases“介面中會看到我們新建的產品(道具)如下:

 

  大家可以看到新建的產品(道具)ID:這裡Himi建立的產品ID是com.himi.wahaha ,這裡要記住這個產品ID哦~

第二步:申請測試賬號,利用沙盒測試模擬AppStore購買道具流程!

回到itunesconnect主頁中,選擇“Manage Users”然後選擇“Test User”,然後出現的介面如下圖:


    這裡Himi已經建立了兩個測試賬號了,點選介面中的 “Add New User”進行建立即可;記住賬號和密碼哈,記不住就刪掉重新建 娃哈哈~(切記:不能用於真正的AppStore中使用此賬號,不僅不能用,而且一旦AppStore發現後果你懂得~) 

   第三步:在專案中申請購買產品程式碼以及監聽;

這裡關於購買的程式碼部分呢,我都有備註的,Himi這裡就不詳細講解了,Himi只是在程式碼後介紹幾點值得注意的地方:

 這裡Himi是新建的一個Cocos2d的專案,然後給出HelloWorldLayer.h以及HelloWorldLayer.m的全部程式碼,所有購買程式碼也全在裡面也對應有Himi的註釋!

          HelloWorldLayer.h

  1. //
  2. //  HelloWorldLayer.h
  3. //  buytest
  4. //
  5. //  Created by 華明 李 on 11-10-29.
  6. //  Copyright Himi 2011年. All rights reserved.
  7. //
  8. // When you import this file, you import all the cocos2d classes
  9. #import "cocos2d.h"
  10. #import <UIKit/UIKit.h>
  11. #import <StoreKit/StoreKit.h>
  12. enum{  
  13.      IAP0p99=10,  
  14.      IAP1p99,  
  15.      IAP4p99,  
  16.      IAP9p99,   
  17.      IAP24p99,  
  18. }buyCoinsTag;   
  19. @interface HelloWorldLayer : CCLayer<SKProductsRequestDelegate,SKPaymentTransactionObserver>  
  20. {  
  21.     int buyType;  
  22. }  
  23. +(CCScene *) scene;    
  24. - (void) requestProUpgradeProductData;  
  25. -(void)RequestProductData;  
  26. -(bool)CanMakePay;                               
  27. -(void)buy:(int)type;   
  28. - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;  
  29. -(void) PurchasedTransaction: (SKPaymentTransaction *)transaction;  
  30. - (void) completeTransaction: (SKPaymentTransaction *)transaction;  
  31. - (void) failedTransaction: (SKPaymentTransaction *)transaction;  
  32. -(void) paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentTransaction *)transaction;  
  33. -(void) paymentQueue:(SKPaymentQueue *) paymentQueue restoreCompletedTransactionsFailedWithError:(NSError *)error;  
  34. - (void) restoreTransaction: (SKPaymentTransaction *)transaction;  
  35. -(void)provideContent:(NSString *)product;  
  36. -(void)recordTransaction:(NSString *)product;  
  37. @end  

    HelloWorldLayer.m
  1. //  
  2. //  IapLayer.m  
  3. //  
  4. //  Created by Himi on 11-5-25.  
  5. //  Copyright 2011年 李華明 . All rights reserved.  
  6. //  
  7. #import "HelloWorldLayer.h"   
  8. #define ProductID_IAP0p99 @"com.buytest.one"//$0.99    
  9. #define ProductID_IAP1p99 @"com.buytest.two" //$1.99   
  10. 相關推薦

    IOS開發關於IAP/StoreKit

     Himi  原創, 歡迎轉載,轉載請在明顯處註明! 謝謝。 //——2012-12-11日更新   獲取"產品付費數量等於0這個問題"的原因 看到很多童鞋問到,為什麼每次都返回數量等於0?? 其實有童鞋已

    ios開發之檢視控制器(UIViewController)--

    由於本人也是初學ios開發,下面分享一下本人在自學中關於檢視控制器(UIViewController)的多種建立方法的總結(詳解)。 控制器的建立方式 注意: 以下程式碼都是在(Xcode 6.

    iOS開發--HTTP Header

    HTTP(HyperTextTransferProtocol)即超文字傳輸協議,目前網頁傳輸的的通用協議。HTTP協議採用了請求/響應模型,瀏覽器或其他客戶端發出請求,伺服器給與響應。就整個網路資源傳輸而言,包括message-header和message-body兩部分

    iOS開發詳細

    如對你有幫助,請不要吝惜打賞和喜歡,謝謝! 一....iOS開發內購全套圖文教程 ======================第一部分協議=============== 第一步.png 第二步.jpg 第三步.jpg 第四步.png 第五步.png 第六步.png 第七步.jpg 第八步

    iOS開發必收藏】iOS應用程式使用IAP/StoreKit付費、沙盒(SandBox)測試、建立測試賬號流程!【2012-12-11日更新獲取"產品付費數量等於0的問題"】

    //——2012-12-11日更新   獲取"產品付費數量等於0這個問題"的原因 看到很多童鞋問到,為什麼每次都返回數量等於0?? 其實有童鞋已經找到原因了,原因是你在 ItunesConnect 裡的 “Contracts,

    (IAP)

    蘋果 京東 被拒絕 聯系 電話 p s apps pre 內購 一、使用註意事項及遇到的坑   1.使用註意 1. 代碼中的_currentProId所填寫的是你的購買項目的的ID,這個和第二步創建的內購的productID要一致,產品id與_currentProId一致

    IOS應用支付IAP從零開始,讓你少踩坑!

    前言 什麼是IAP,即in-app-purchase 這幾天一直在搞ios的應用內購,查了很多部落格,發現幾乎沒有一篇部落格可以完整的概括出所有的點,為了防止大夥多次查閱資料,所以寫了這一篇部落格,希望大家能夠跟著我,從零開始,寫一個包含內購的應用出來 流程 一般有以下幾種

    iOS應用支付(IAP

    在iOS開發中如果涉及到虛擬物品的購買,就需要使用IAP服務,我們今天來看看如何實現。 在實現程式碼之前我們先做一些準備工作,一步步來看。 1、IAP流程 IAP流程分為兩種,一種是直接使用Apple的伺服器進行購買和驗證,另一種就是自己假設伺服

    iOS應用支付(IAP)開發步驟

    前兩天和服務端同事一起,完成了應用內付費(以下簡稱IAP, In app purchase)的開發工作。步驟繁多,在此把開發步驟列表整理如下。因為只是步驟列表,所以並不含詳細的說明教程,需要看教程的新手,可以看我附在最後的一些參考連結。 配置Developer.apple.com 為應用建立建立一個

    iOS應用支付(IAP)開發中後期的那些坑

    一,Product ID無效? 好了,經過前面的準備後,就到了真正和IAP聯通的步驟了。在輸入一個Product ID向伺服器發起request的時候,很有可能出現失敗的情況,在request屬性InvalidateIdentifier中,你會發現這個Product I

    iOS應用付費(IAP)開發步驟列表

    前兩天和服務端同事一起,完成了應用內付費(以下簡稱IAP, In app purchase)的開發工作。步驟繁多,在此把開發步驟列表整理如下。因為只是步驟列表,所以並不含詳細的說明教程,需要看教程的新手,可以看我附在最後的一些參考連結。 配置Developer.appl

    ios(iap)關於問題“您已經購買了此程式購買(In App Purchase)專案,但尚未下載"的解決方案

    近日在專案內購中遇到“您已經購買了此程式內購買(In App Purchase)專案,但尚未下載”的問題,查閱google和百度各種文章,沒找到合適的解決方案,折騰一整天,終於解決,解決方案貼出來,供大家參考。也是為了驗證這個方案的正確性。歡迎拍磚! 首先說說出現這個問題的

    Android應用開發之所有動畫使用

    factory 技術分享 resource bsp phi 顯示 程序 恢復 分享 題外話:有段時間沒有更新博客了,這篇文章也是之前寫了一半一直放在草稿箱,今天抽空把剩余的補上的。消失的這段時間真的好忙,節奏一下子有些適應不過來,早晨七點四十就得醒來,晚上九點四十才準備下班

    微信公眾開發URL和token填寫

    res wrap this true 進行 -m tmp sem 知識 微信公眾開發URL和token填寫詳解 方法/步驟 作為一名微信公眾號開發者,別人進入你的微信公眾號,肯定會看見某些網頁,或者給你發某些信息,你需要實時自動回復,所以你

    Cocos2d-x使用iOS遊戲付費IAP(C++篇)

    pos ack tegra cocos2d http tor -c html5 trac http://www.cocos2d-x.org/docs/manual/framework/html5/jsb-ios-iap/ios-storekit-integratio

    Java的存回收機制

    out 結果 int destroy pan 得出 ida public toc http://blog.csdn.net/mengern/article/details/38150431 Java中提供了垃圾強制回收機制的方法System.gc(),但是系統並不保證會立即

    B2C電商系統開發app平臺定制

    amp 聯系 良性 幫助 產品 人工 定期 abc 不同 B2C電商系統開發從標品到非標品體現的是用戶從追求功能價值到追求情感價值的變遷。在電商1.0時代,為用戶習慣培養階段,圖書和3C等標品更利於降低用戶的信 任成本。B2C電商app開發,同時,用戶對標品的消費更多追求的

    macOS開發之NSTableView的應用 - 轉

    validate creat 編寫 移除 分割線 gen styles 如果 bool 傳送門:https://my.oschina.net/u/2340880/blog/886861 摘要: NSTableView是AppKit中的表視圖控件,是macOS開發中非常重要的

    JAVA存泄漏

    k60 ims href sina fsg coj nvi www e30 7fsf12邪托殉誌玖槍http://weibo.com/p/1005056365853479oomo0p擠興炊遊客鮮http://www.docin.com/llbm8009v905pl站遲詘謔譚