iOS內(nèi)購-iap-In-App Purchases-開發(fā)及注意事項

*深坑記錄,以后發(fā)現(xiàn)一些不常見的坑可能會更新

1.一般發(fā)生于首次提交app或添加新商品,當(dāng)你的app通過審核以后,你發(fā)現(xiàn)在生產(chǎn)環(huán)境下獲取不到商品,這是因為app雖然過審核了,但是內(nèi)購商品還沒有正式添加到蘋果的服務(wù)器里,耐心等待一段時間就可以啦~

2.我創(chuàng)建的IAP商品,當(dāng)我不用,想刪除時,發(fā)現(xiàn)無法刪除,我點擊刪除按鈕以后,頁面就自動刷新,刷新回來,那條商品依然存在,我換了N多瀏覽器,連手機瀏覽器都試了,就是不行,沒辦法只能提交審核,然后蘋果給我反饋說他們找不到我這個商品在哪......

  • 解決辦法:審核時在附加里向蘋果說明情況,最好錄個視頻上傳到網(wǎng)站上(優(yōu)酷就可以),把視頻地址給蘋果
  • 后續(xù):當(dāng)時有過申訴,但是因為蘋果只會給注冊開發(fā)者賬號的郵件發(fā)信息,而老大每天都不在公司,所以與蘋果的溝通終中斷了。我在將App轉(zhuǎn)移賬號以后,這個Bug消失了,不知道是轉(zhuǎn)移賬號解決的還是蘋果修復(fù)了。

一:iap開發(fā)

具體的開發(fā)過程不太想寫了,網(wǎng)上太多了,隨隨便便百度一下就有好幾頁,這里只給大家推薦一個庫,使用起來很方便
下載地址: IAPHelper

NSSet* dataSet = [[NSSet alloc] initWithObjects:@"這里是iap商品id", nil];
  [IAPShare sharedHelper].iap = [[IAPHelper alloc] initWithProductIdentifiers:dataSet];

// 請求商品信息
[[IAPShare sharedHelper].iap requestProductsWithCompletion:^(SKProductsRequest* request,SKProductsResponse* response)
   {
    if(response.products.count > 0 ) {
     SKProduct *product = response.products[0];

     [[IAPShare sharedHelper].iap buyProduct:product
           onCompletion:^(SKPaymentTransaction* trans){
         if(trans.error)
         {
         }
         else if(trans.transactionState == SKPaymentTransactionStatePurchased) {
          // 到這里購買就成功了,但是因為存在越獄手機下載某些破解內(nèi)購軟件的情況,需要跟蘋果服務(wù)器的確認(rèn)是否購買成功
          // IAPHelper提供了這個方法,驗證這步可以寫在前端,也可以寫在服務(wù)器端,這個自己看情況決定吧...



          // 購買驗證
          NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
          //網(wǎng)上的攻略有的比較老,在驗證時使用的是trans.transactionReceipt,需要注意trans.transactionReceipt在ios9以后被棄用
          [[IAPShare sharedHelper].iap checkReceipt:receipt onCompletion:^(NSString *response, NSError *error) {}];
          
  
    }
    else if(trans.transactionState == SKPaymentTransactionStateFailed) {
          if (trans.error.code == SKErrorPaymentCancelled) {
          }else if (trans.error.code == SKErrorClientInvalid) {
          }else if (trans.error.code == SKErrorPaymentInvalid) {
          }else if (trans.error.code == SKErrorPaymentNotAllowed) {
          }else if (trans.error.code == SKErrorStoreProductNotAvailable) {
          }else{
          }
       }
    }];
    }else{
          //  ..未獲取到商品
    }
   }];

關(guān)于內(nèi)購的開發(fā)大概就這些,網(wǎng)上攻略賊多,大概搜索一下就能寫的出來,iap開發(fā)起來雖然不難,但是瑪?shù)路诉@里面坑實在太多...

二:iap開發(fā)時的注意事項

1.什么情況需要使用iap,什么情況使用三方支付

這里我的理解是:

購買的東西是實物,不存在于APP中,用三方支付,比如淘寶等一堆電商,他們的商品都是不存在于App中的。
如果你的支付和購買是為了解鎖App的功能,就一定要用iap,即內(nèi)購

舉個栗子:現(xiàn)在有很多在線教育App,比如網(wǎng)易云課堂,騰訊課堂,可以在App中購買視頻并在APP中觀看,也就是說 '觀看視頻' 這個功能是本身就存在于APP中的,只是需要你先購買視頻,才能使用'觀看視頻'這個功能,這個時候,這種解鎖APP已有功能的操作,就必須要使用iap

2.關(guān)于商品類型:iap創(chuàng)建商品時選擇的商品類型大概分三類

Paste_Image.png
1.消耗型商品:

類似游戲中的鉆石,還有現(xiàn)在某些APP中的貨幣,比如斗魚里的魚丸、映客里的映票。會被消耗的,要選擇消耗型商品

2.非消耗型商品:

無法被消耗的商品,比如上文提到的視頻課程,一次購買,就應(yīng)該永久可以觀看

3.訂閱類型商品:

多用于會員,會員也可以做成用 消耗型商品獲取的貨幣來購買

現(xiàn)在不行了,之前提交過很多都沒事,也許以前會員功能存在感太低審核團(tuán)隊沒發(fā)現(xiàn)?又或是最近的新規(guī),新提交的版本因為這個原因被拒了,錯誤描述:
Business - 3.1.1 We noticed that your app is using Consumable In-App Purchase products as intermediary currency for the exchange of items that function as Non-Renewing Subscriptions.

這里要提一點:如果你的公司是外包公司,有訂閱類型商品的APP一定要用客戶的賬號提交審核,因為當(dāng)APP中有過訂閱類型商品,注意是有過,創(chuàng)建過再刪除也算,這個APP無法被轉(zhuǎn)移賬號

3.注意事項

1.當(dāng)你使用消耗型商品

大多數(shù)的消耗型商品都是需要登錄的,因為需要在數(shù)據(jù)庫存余額嘛。
需要注意的是:在登錄之前,你最好不要讓用戶看到商品,有可能會因為這個原因被拒(看運氣),栗子:

如上圖。這是充值頁面,即商品頁面。
你有兩個選擇:
# 1.增加游客購買,即用戶到達(dá)充值頁面,點擊充值時,即使用戶未登陸,也能充值

 # 2.讓未登錄用戶無法到達(dá)充值頁面。且必須要由用戶來選擇

   栗子:有個按鈕,點擊跳轉(zhuǎn)此充值頁面,當(dāng)未登錄用戶點擊按鈕時,
   你必須要彈出選擇框,由用戶來選擇是登錄/注冊或者取消,并說明情況 
   如下:
2.當(dāng)你使用非消耗型商品

當(dāng)你使用非消耗型商品時,你需要添加一個恢復(fù)購買的按鈕
這個常見于各種游戲中,其實知道這個規(guī)定以后還是挺好理解的,非消耗型商品是不可被消耗的,一次購買終身使用的,非消耗型的商品是跟appleId綁定的,就是你平時下載APP讓你輸入賬號密碼的內(nèi)個。
你需要一個恢復(fù)購買的按鈕,來讓用戶恢復(fù)他購買的內(nèi)容,上面內(nèi)個IAPHelper也有這個方法,自己看一下

3.訂閱型商品

使用或曾經(jīng)使用過訂閱型商品的APP無法轉(zhuǎn)移

在蘋果幫助里,有個分類是:什么樣的APP可以被轉(zhuǎn)讓
我一看,完全符合啊,然后就是開發(fā)、提交審核、通過,但是當(dāng)我轉(zhuǎn)讓時卻TM提示我無法轉(zhuǎn)讓,當(dāng)我再次回去查看幫助,向下拉網(wǎng)頁拉倒底部時
發(fā)現(xiàn)有另一個分類:為什么我的APP無法轉(zhuǎn)讓。。。。。。

以上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容