1.开发环境
1、MacBook Pro,Apple M1 Pro,macOS Sonoma 14.3.1
2、Unity Hub 版本3.7.0(3.7.0)
3、unity Version 2020.3.28f1 Personal
4、In App Purchasing Package v4.1.5
2.开发 IAP
2.1 获取开发资料
1、根据使用的unity IDE版本选择对应的开发文档,该链接为unity 2020.3.28f1的IAP开发文档
1)在该文档的左上角可以选择不同Unity 版本对应的开发文档,选择你所需要的即可:
2、根据你安装的In App Purchasing版本选择对应的开发文档,该链接为 4.1.5版本的开发文档
- Unity提供的 In App Purchasing最新版本为4.10.0,无论哪个版本都封装的是Apple Store Kit v1,无法使用Apple storeKit2的新特性。
3、在 Apple Store Connect 中创建App和商品ID,并保存 Bundle Identifier 和 商品ID,在初始化App服务时会用到。
2.2 项目配置
1、添加IAP Package
2、打开IAP Service服务
2.3 IAP支付代码
sing System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NtUtils;
using UnityEngine;
using UnityEngine.Purchasing;
namespace NtSDK
{
public class NtIAPManager : IStoreListener
{
private const string Tag = "[NtIAPManager]";
private IStoreController m_Controller;
private IAppleExtensions m_AppleExtensions;
private SkuDetailCallback m_SkuDetailCallback;
private NtIAPCallback m_IapCallback;
private string[] m_IapIdList;
private string m_ErrorMsg = NtCommonInstance<NtLocalizationManager>.Instance.GetValueByKey(
"IDS_ERROR_CODE_-1");
// 获取商品详情
// 获取商品详情的本质就是利用商品ID初始化Unity IAP服务的,商品ID必须是真实有效的
internal void GetSkuDetails(String iapIDs, SkuDetailCallback skuDetailCallback)
{
NtLog.Log(NtLog.NtLogLevel.Log, Tag, "start get sku details");
m_SkuDetailCallback = skuDetailCallback;
if (string.IsNullOrEmpty(iapIDs))
{
NtLog.Log(NtLog.NtLogLevel.Error, Tag, "start get sku details fail, iapIDs is nil");