-----------本教程針對Unity5.4版本!!其它版本需要自己做一些修改-----------
前言:所有這一切的前提是你需要有一個蘋果開發者賬號,一年99美元,沒有的話需要到蘋果開發者中心購買。除了本篇教程外,也可以按照Unity官方文檔進行開發。文章轉自游戲蠻牛 原帖地址
-
首先第一步我們需要登錄到蘋果開發者中心進行我們的APP注冊,點擊右上角的Account
-
輸入你的賬號密碼后就會進入下面這個界面,然后點擊左邊的齒輪Certificates, Identifiers & Profiles
-
然后進入到下面這個界面,在左邊的Identifiers下面,點擊第一個App ids
-
進入之后就會顯示你注冊過的app,當然如果沒有注冊過這里是空的,點擊右上的“+”添加你的APP,會打開下面這個界面,為了截圖我往下拉了一點
注意:首先第一個紅框是你APP的名字,自己決定吧。第二個紅框可以稍微正式點,一般我們都會寫com.公司名.app名字,這樣的組合比較有點樣子,這個ID后面要用到
然后下面的按默認的也可以,看實際情況調整。弄完之后點最下面的Continue繼續后面的操作我就不截圖了,注冊完回到App ids頁面就可以看到你的剛剛注冊的app信息
然后我們打開Itunes connect ,登錄你的開發者賬號進入下面的界面
點擊紅框的地方進去填寫銀行的信息。這里有一篇帖子寫的很詳細!轉載一下,感謝睡不著的葉子提供的設置教程 http://www.lxweimin.com/p/d9d742e82188
游戲帖子說的很詳細后面設置APP內購項目的東西我這里就不重復說一次了,有兩個地方需要再說一下,第一:銀行信息必須得填好!否則沒辦法進行沙盒測試到真機上會一直無法初始化成功。第二個是當你創建完你的內購產品時記得添加進你的app里頭,一會截圖詳細說明一下。我們先在itunes connect 里頭創建你的app,點擊上面那張圖里頭我的app,進入app管理界面
點擊左上角的“+”號然后點擊新建APP,紅框圈起來的部分就是你剛剛在開發者中心注冊時你寫的App ids,點擊一下就會出現你剛剛注冊的id,把剩下的資料填填就可以創建了
然后就會進到這
涉及到公司問題所以資料就打上馬賽克了,然后這里開始就設置你的內購產品了,根據上面的發的帖子鏈接走就可以了。設置完成之后呢點擊這里的1.0準備提交進入到app信息設置的界面,然后往下拉,找到下面這圖的地方
點擊籃筐里頭的加號,打開一個小界面,就是下面這樣的
這里就會出現你剛剛設置好的內購產品,然后勾選,點擊完成。這步很重要,不然沒法獲得產品信息,設置完后點左上角存儲,產品的信息就算完成了
然后這些界面先別關,還有需要用到的信息。接著我們打開Unity,打開我們的工程,點擊windows-->Services,就出現下面的菜單往下拉一點就可以看到In-App purchasing
然后我們把他從off的狀態點擊變成on的狀態,導入平臺所需的文件
點擊紅色框的按鈕,這里我已經導入了,所以是Update,沒導入是Import,點擊之后稍等片刻,等他導入完成就好了。然后我們看到官方文檔教你如何初始化
using UnityEngine;
using System.Collections;
using UnityEngine.Purchasing;
public class PurchaseManager : MonoBehaviour, IStoreListener
{
private IStoreController controller;
void Start()
{
var module = StandardPurchasingModule.Instance();
ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
builder.AddProduct("你設置的產品ID", ProductType.NonConsumable);
UnityPurchasing.Initialize(this, builder);
}
/// <summary>
/// Called when Unity IAP is ready to make purchases.
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
this.controller = controller;
}
/// <summary>
/// Called when Unity IAP encounters an unrecoverable initialization error.
///
/// Note that this will not be called if Internet is unavailable; Unity IAP
/// will attempt initialization until it becomes available.
/// </summary>
public void OnInitializeFailed(InitializationFailureReason error)
{
}
/// <summary>
/// Called when a purchase completes.
///
/// May be called at any time after OnInitialized().
/// </summary>
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
return PurchaseProcessingResult.Complete;
}
/// <summary>
/// Called when a purchase fails.
/// </summary>
public void OnPurchaseFailed(Product item, PurchaseFailureReason r)
{
}
}
這一段是我自己的加了一點東西進去的代碼,其實都是文檔提供的,稍作了修改,注意“你設置的產品ID”指的是在Itunes connect里頭你設置內購產品時的產品ID,就是這個
拷貝到代碼里頭去,然后我們回到游戲場景中,去到你要進行內購那個游戲界面,添加一個內購按鈕,點擊Windows-->unity IAP -->Create IAP Button就會在場景中出現一個按鈕,點擊按鈕查看下Inspector可以看到這些
我們可以看到這就是普通的UGUI里頭的Button,多了上面這些內容,然后我們點擊IAP Catalog..出現下面這個界面
進到這個界面我們配置一下里頭需要的信息,ID還是一樣填我們在itunes connect中的ID,如果不一樣我不知道會怎樣,我還沒試過,我是怕出錯誤什么的,所以直接設成一樣的然后點“x”關閉窗口,回到Inspector,點擊剛剛的IAP Catalog上面的下拉菜單,你就會發現你剛剛設置的ID了,選中他就可以了。然后我們繼續敲代碼
打開剛剛我們創建的代碼,繼續添加一段代碼,給按鈕作為點擊事件
public void OnPurchaseClicked(string productId)
{
controller.InitiatePurchase(productId);
}
就是這段,所以我們完整的代碼就是醬嬸的
using UnityEngine;
using System.Collections;
using UnityEngine.Purchasing;
public class PurchaseManager : MonoBehaviour, IStoreListener
{
private IStoreController controller;
void Start()
{
var module = StandardPurchasingModule.Instance();
ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
builder.AddProduct("com.Minesweeper.Init15", ProductType.NonConsumable);
builder.AddProduct("com.Minesweeper.Init25", ProductType.NonConsumable);
UnityPurchasing.Initialize(this, builder);
}
/// <summary>
/// Called when Unity IAP is ready to make purchases.
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
this.controller = controller;
}
/// <summary>
/// Called when Unity IAP encounters an unrecoverable initialization error.
///
/// Note that this will not be called if Internet is unavailable; Unity IAP
/// will attempt initialization until it becomes available.
/// </summary>
public void OnInitializeFailed(InitializationFailureReason error)
{
}
/// <summary>
/// Called when a purchase completes.
///
/// May be called at any time after OnInitialized().
/// </summary>
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
return PurchaseProcessingResult.Complete;
}
/// <summary>
/// Called when a purchase fails.
/// </summary>
public void OnPurchaseFailed(Product item, PurchaseFailureReason r)
{
}
public void OnPurchaseClicked(string productId)
{
controller.InitiatePurchase(productId);
}
}
然后保存回到場景中點擊IAP按鈕,拖動擁有這段代碼的GameObject到Button上選擇剛才的方法作為點擊事件,然后會有下圖
畫紅線的地方寫上咱們設置好的產品ID,然后我們可以看到這個按鈕還附帶了購買成功和購買失敗的回調函數,跟添加Button點擊事件一樣,寫好函數拖進去就可以了。最后一個地方就是,導包時,記得將bundle identifier設置成和你的app id一樣,上圖
在這里可以看ID
就是我畫紅框的地方,拷貝到unity里頭,就可以進行真機測試了。真機測試需要注意幾點:首先要登出你手機的app store賬號,然后再進入游戲點擊剛剛設置的IAP按鍵,就出彈出讓你登錄一個賬號進行購買。這時你只需要登錄剛剛我們在itunes connect中設置好的沙盒測試賬號,然后就會出現下面這個畫面
會提示說環境是沙盒環境,然后點擊Buy就可以了,這時我們的內購接入就大功告成了!第一次寫那么長的文章有點hold不住,如果有什么遺漏的可以留言,我會常來看看,我會的地方都會告訴大家,而且大家也可以看unity的官方文檔,其實寫的很詳細,很小部分需要自己琢磨一下,反正我覺得,unity這個集成的相當好,操作起來簡單很多。不用怕繁瑣,遇到錯誤就各種搜索找解決方法,最后還是可以弄出來的!