iOS 內購補充點

1、關于支付類型的選擇

(1)消耗型物品:用一次,使用后失效,商品會在使用中一點一點消耗,這里最多使用的是游戲道具之類.游戲中內購大多使用這個,還有直播送禮物等等;

(2)非消耗型物品:最最坑爹的一種,這個不依賴自己服務器,只和蘋果appid聯系,只要同一個id購買,即使100個設備同時用這個id登錄,都不需要進行再次購買,而且蘋果強制要求要有一個Restore Purchases button,這個按鈕的主要作用是恢復之前的購買.(appstore上面收費軟件的下載就是這種類型)

附上這種類型的處理方法:

開發(fā)中有2種方案:

一種是直接在購買按鈕下面添加一個恢復購買按鈕(但是你要告訴審核人員,這個按鈕在哪,發(fā)圖片或者視頻給審核人員,這種方便最簡單,但是顯示不好)

一種是通過獲取該appid下面購買過的商品,然后在判斷該商品是否在購買過的商品列表中,如果有,顯示回復購買按鈕,如果沒有顯示購買按鈕.

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];if([SKPaymentQueue canMakePayments]) {//用戶允許app內購if(productId.length) {

NSArray*product = [[NSArray alloc]initWithObjects:@"商品id", nil];

NSSet*set=[NSSet setWithArray:product];

SKProductsRequest*productRequest =[[SKProductsRequest alloc] initWithProductIdentifiers:set];

productRequest.delegate=self;

[productRequest start];

}else{//商品id為空}

}else{//不支持購買}

#pragmamark SKProductsRequestDelegate 查詢成功后的回調- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { NSArray *product =response.products;if(product.count ==0) {//無法獲取商品信息}else{//發(fā)起購買請求SKPayment *payment = [SKPayment paymentWithProduct:product[0]];

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];//這句代碼就是恢復購買}

}

接下來是代理函數,在這里你可以獲取到已經購買過的商品集合

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions: (nonnull NSArray *)transactions { self.restoreArray =[[NSMutableArray alloc]init];for(SKPaymentTransaction *transactionintransactions) {switch(transaction.transactionState) {caseSKPaymentTransactionStatePurchasing://正在交易break;caseSKPaymentTransactionStatePurchased://交易完成break;caseSKPaymentTransactionStateFailed://交易失敗break;caseSKPaymentTransactionStateRestored://已經購買過該商品[self.restoreArray addObject:transaction.payment.productIdentifier];

[self restoreTransaction:transaction];break;default:break;

}

}

}- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {if([self.restoreArray containsObject:self.goodsProductId]) {//用戶購買過商品.就應該顯示"恢復購買按鈕"}else{//用戶沒有購買過該商品}

}

(3)自動續(xù)期訂閱:使用很少,適合報刊訂閱等等

(4)非續(xù)訂型訂閱:用到的比較多的,可以依賴自已服務器,可以無數次購買,沒有appid限制,比如一個價格商品有很多種規(guī)格,就可以使用這個.比如網易云課堂的收費課,騰訊課堂收費課等

2.游客模式:一般這個會是提示你5.1.1然后被拒。

最近審核比較嚴格,內購的時候最好提供游客模式,即使用戶沒有登錄,也能進行購買,不要在購買的時候,強行提示用戶登錄(本人因為這個被拒N次)。

參考過的鏈接:

http://www.cocoachina.com/bbs/read.php?tid-1716937.html

http://www.cocoachina.com/bbs/read.php?tid-1720959-page-2.html

http://www.cocoachina.com/bbs/read.php?tid=1692154

https://developer.apple.com/app-store/review/guidelines/#data-collection-and-storage

總結方法:

1.我遇到過類似的,你在購買的時候提示他登錄審核就會被拒絕,購買時直接跳轉登錄頁面審核就過了。。。(容易被拒,還是看人)

2.添加游客模式

3.默默登錄 判斷是不是在審核期間 不是則跳轉登錄 反之默默登錄 這時候需要注意的是登錄后用戶數據的保存

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 所謂內購就是在App內購買商品,如在游戲App中的購買道具、皮膚等;在電商App中的購買衣食住行的各種商品,如淘寶...
    ShineYangGod閱讀 1,773評論 0 0
  • iOS應用如果涉及到支付功能,分為兩類:第三方支付和蘋果內購。那么什么情況下選擇使用第三方支付,又在什么情況下選擇...
    ZfRee閱讀 39,023評論 36 66
  • 在我們應用開發(fā)中我們經常在自己的項目中使用到支付,下面我們來談談iOS這塊的支付;iOS支付主要分為兩類,第三方支...
    Hither閱讀 8,333評論 9 42
  • 嗯,今天感恩節(jié),日子有點小特別,所以寫封信給自己吧,祝自己生日快樂! 提筆前天馬行空,結果又不知道從...
    南薇_Vivi閱讀 240評論 1 3
  • 2017.12.08 周五 晴 榮媽 以此推薦文獻給那些常常因為孩子的作文而頭疼,想要說點什么又不知如何做,如...
    漳州榮媽閱讀 2,137評論 0 1