iOS內購-iap-In-App Purchases-開發及注意事項

*深坑記錄,以后發現一些不常見的坑可能會更新

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

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

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

一:iap開發

具體的開發過程不太想寫了,網上太多了,隨隨便便百度一下就有好幾頁,這里只給大家推薦一個庫,使用起來很方便
下載地址: 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) {
          // 到這里購買就成功了,但是因為存在越獄手機下載某些破解內購軟件的情況,需要跟蘋果服務器的確認是否購買成功
          // IAPHelper提供了這個方法,驗證這步可以寫在前端,也可以寫在服務器端,這個自己看情況決定吧...



          // 購買驗證
          NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
          //網上的攻略有的比較老,在驗證時使用的是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{
          //  ..未獲取到商品
    }
   }];

關于內購的開發大概就這些,網上攻略賊多,大概搜索一下就能寫的出來,iap開發起來雖然不難,但是瑪德法克這里面坑實在太多...

二:iap開發時的注意事項

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

這里我的理解是:

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

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

2.關于商品類型:iap創建商品時選擇的商品類型大概分三類

Paste_Image.png
1.消耗型商品:

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

2.非消耗型商品:

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

3.訂閱類型商品:

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

現在不行了,之前提交過很多都沒事,也許以前會員功能存在感太低審核團隊沒發現?又或是最近的新規,新提交的版本因為這個原因被拒了,錯誤描述:
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一定要用客戶的賬號提交審核,因為當APP中有過訂閱類型商品,注意是有過,創建過再刪除也算,這個APP無法被轉移賬號

3.注意事項

1.當你使用消耗型商品

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

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

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

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

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

3.訂閱型商品

使用或曾經使用過訂閱型商品的APP無法轉移

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

以上

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容