Skip to content

fanhexin/EasyIap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyIap

安装

Unity Service窗口中开启AnalyticsIn-App Purchasing两个服务。 在开启In-App Purchasing服务时,需要点界面上的Import按钮,之后会自动导入几个UnityPackage但在2018.4.4版本中,点Import按钮会报错,需要手动再导入Plugin目录下导入进来的几个UnityPackage)。

最后通过修改manifest.json,在其中加入如下条目安装:

{
    "com.github.fanhexin.easyiap": "https://github.com/fanhexin/EasyIap.git#upm"
}

使用

只需创建InAppPurchasing类实例,即可开始使用内购功能,流程见如下代码:

var iap = new InAppPurchasing();

// 需要在Init之前注册
iap.onPendingPurchase += id => 
{
    // 未完成内购处理代码
};

iap.onPurchaseDeferred += product =>
{
    // 处理ios下ask to buy    
};

// 在使用其他方法前需要先初始化
// ProductDefine 存储id和ProductType,组成数组初始化多个内购商品
// 初始化成功 result 为 null,否则为具体错误原因
string result = await iap.InitAsync(new ProductDefine[n] {...});

// 购买成功 result 为 null,否则为具体错误原因
string result = await iap.BuyAsync("product id");

// 恢复内购成功 result 为 true 否则为 false
bool result = await iap.RestoreAsync();

// 通过id查询具体的product
Product product = iap.GetProduct("product id");

// 通过id获取订阅Manager类
SubscriptionManager subscriptionMgr = GetSubscription("product id");

// 根据id判断是否有收据,常用来查询去广告等NonComsumable类型内购是否已购买
bool b = iap.HasReceipt("product id");

// Init成功后该property返回true
bool iapReady = iap.isReady;

// products字段能取到所有InAppPurchasing内部的Product
foreach (var p in iap.products)
{
    // do something
}

// 手动将Pending状态的product设置为complete状态
ConfirmPendingPurchase(product);

onPendingPurchase 事件在发生未完成的内购时(如点击购买并确认后应用崩溃或者玩家手动杀死应用), 重新启动应用并且InAppPurchasing初始化完成后触发。 参数为未完成的内购id,需要根据id给玩家补充漏掉的内购内容。

BuyAsyncRestoreAsync两方法均可传入CancellationToken从外部对操作进行取消,取消后对应的purchase会处于 Pending状态,再次启动应用会走onPendingPurchase流程。

About

Unity In App Purchasing 的简单封装

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages