在 Unity 项目中使用 Google Play 结算库

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Google Developers网络

小提示:您能找到这篇{在 Unity 项目中使用 Google Play 结算库}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的在 Unity 项目中使用 Google Play 结算库内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

Google Play结算服务插件扩展了Unity的应用内购买内置服务和资产(名为Unity IAP),可以为您的游戏提供Google Play结算库的所有最新功能。本指南介绍了如何设置您的项目以使用此插件,还介绍了如何在通过Unity开发的游戏中实现结算库功能。

设置Google Play结算服务插件

如需设置此插件,请完成以下每个链接部分中的步骤:

启用Unity IAP抽象层。

下载并导入插件。

配置插件的构建设置。

启用插件。

启用Unity IAP抽象层

Google Play结算服务插件基于Unity IAP中自带的抽象层,因此您需要启用此抽象层后才能下载并导入该插件。如需启用Unity IAP抽象层,请执行以下操作:

完成以下Unity教程中的所有步骤:针对Unity服务设置项目。

完成以下Unity教程中的所有步骤:启用Unity IAP服务。

下载并导入插件

插件将作为.unitypackage格式的Unity软件包提供。如需下载并导入插件,请按以下步骤操作:

从代码库的GitHub版本页面中下载适用于Unity的最新版Google Play插件。

在Unity菜单栏中,依次点击Assets>Import Package>Custom Package。

找到.unitypackage文件的下载位置并选择该文件。

在Import Unity Package对话框中,选择所有资产并点击Import。

软件包导入后,系统会在项目的资产中添加一个名为GooglePlayPlugins的新文件夹(位于Assets文件夹的根目录下)。此文件夹包含插件的所有结算库资产。

配置构建设置

由于插件扩展了Unity IAP,因此除非从build中移除Unity IA平台 开发P中一些较旧的重叠依赖项,否则Unity会遇到冲突且无法构建Android APK。插件提供了一种从项目中自动移除冲突库的方法。如需解决这些冲突,请按以下步骤操作:

从Unity菜单栏中依次选择Google>Play Billing>Build Settings。

在“Play Billing Build Settings”窗口中,点击Fix。这样就可以解决冲突并将冲突的Unity IAP文件移至备份目录。点击Fix后,该按钮会变成Restore,点击后可恢复原始的冲突文件。

启用插件

如需启用插件,请将Google Play的Unity IAP实现替换为Google Play结算服务插件。例如,使用Unity IAP购买者脚本时,您要更改传递到IAP构建器中的StandardPurchaseModule以使用Google.Play.Billing.GooglePlayStoreModule:

//Create a builder using the GooglePlayStoreModule.

var configurationBuilder=

Configuration炒作Builder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());

注意:为了避免与Unity的标准IAP实现发生冲突,每当代码引用Google Play结算服务插件中的公共类时,您都应该通过包含Google.Play.Billing完整地指定命名空间。本指南中的所有代码示例均采用此方法。

如果您的游戏将同一个购买者脚本用于多个平台,应添加一项平台检查,确保Unity针对其他平台继续使用自己的IAP解决方案:

ConfigurationBuilder builder;

if(Application.platform==RuntimePlatform.Android)

{

builder=ConfigurationBuilder.Instance(

Google.Play.Billing.GooglePlayStoreModule.Instance());

}

else



{

builder=ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

}



如果您在除Google Play商店以外的其他Android应用商店中发布游戏,则只有在选择Google Play商店时才应替换默认的Unity IAP实现:

ConfigurationBuilder builder;

if(Application.platform==RuntimePlatform.Android

&&SelectedAndoidAppStore==AppStore.GooglePlay)

{

builder=ConfigurationBuilder.Instance(

Google.Play.Billing.GooglePlayStoreModule.Instance());

}

else

{

builder=ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

}



在游戏中实现Google Play结算库功能

Google Play结算服务插件扩展了Unity IAP服务,因此您可以使用相同的Unity API管理通用的购买流程。请注意,由于结算库与其他应用商店的Unity标准IAP实现之间存在差异,因此API行为也发生了一些细微变化。如果您是Unity IAP API新手,请参阅Unity IAP教程中的“Making a Purchase Script”部分,通过示例了解如何实现基本购买流程。

结算库还包括一些Google Play商店独有的功能。您可以通过扩展接口访问这些功能。本部分的其余内容介绍了如何在游戏中实现这些独有的结算库功能。

启用推迟购买功能

Google Play支持推迟购买(也称为待处理的交易或待处理的购买交易),在这种情况下,用户可以创建购买交易并稍后在实体店中使用现金完成购买交易。

如需启用推迟购买功能,请在IAP构建器中调用EnableDeferredPurchase()方法修改模块配置:

//Create a builder using a GooglePlayStoreModule.

var configurationBuilder=

ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());

//Enable deferred purchases

configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()

.EnableDeferredPurchase();

接下来,使用Play商店扩展程序实现推迟购买回调:

//Get the plugin extensions for the Google Play Store.

_playStoreExtensions=

extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

//Set the deferred purchases callback.

_playStoreExtensions.SetDeferredPurchaseListener(

delegate(Product product)

{

//Do not grant the item here.Instead,record the purchase and remind

//the user to complete the transaction in the Play Store.

});

向Google Play传递经过混淆处理的帐号ID

您可以向Google Play传递经过混淆处理的用户帐号ID以方便检测滥用行为,例如检测是否有大量设备在短时间内使用同一帐号进行购买。

注意:此帐号ID也会与购买数据一起返回。如果您使用开发者载荷识别用户,则可以使用此帐号ID取而代之。

如需传递经过混淆处理的帐号ID,请从扩展程序API调用SetObfuscatedAccountId()方法:

//Get the plugin extensions for the Google Play Store.

_playStoreExtensions=

extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

//Pass an obfuscated account ID.茂名网站开发

_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);

向Google Play传递经过混淆处理的个人资料ID

您可以向Google Play传递经过混淆处理的个人资料ID以方便检测欺诈行为,例如检测是否有大量设备在短时间内使用同一帐号进行购买。这与传递经过混淆处理的用户帐号ID类似。在这两种情况下,ID都代表单个用户,但是个人资料ID可以帮助您从单个应用中的多份个人资料里唯一识别出单个用户。向Google Play传递经过混淆处理的个人资料ID后,您日后便可以在购买收据中检索此ID。

如需传递经过混淆处理的个人资料ID,请在IAP构建器中调用SetObfuscatedProfileId()方法修改模块配置:

//Get the plugin extensions for the Google Play Store.

_playStoreExtensions=

extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

//Pass an obfuscated profile ID.

_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);

确认订阅的价格变动

您可以通过Google Play更改有效订阅的价格。游戏的用户必须先确认任何价格变动,然后更改才能生效。如需提示用户确认其订阅的价格变动,请调用ConfirmSubscriptionPriceChange()方法:

//Get the plugin extensions for the Google Play Store.

_playStoreExtensions=

extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,

delegate(bool success)

{

//Returns whether the user has accepted the new price or not.

});

Unity API行为的变化

在您使用Google Play结算服务插件时,大多数API行为与其他应用商店的Unity标准IAP实现的行为相同。但在某些情况下,API的行为会有所不同。本部分介绍了这些行为差异。

不支持开发者载荷

Google Play已弃用开发者载荷,并用更有意义且更相关的替代方法代替它。因此,API不支持开发者载荷。如需详细了解替代方法,请参阅开发者载荷的相关页面。

您可以继续在其他应用商店中使用Unity标准IAP实现所定义的接口,包括IStoreControllor。当您提示购买时,您仍可使用IStoreControllor并调用InitiatePurchase()方法:

public void InitiatePurchase(Purchasing.Product product,string payload);

但是,您传入的任何载荷都不会生效(不会出现在最终收据中)。

不支持SubscriptionManager

Unity IAP提供了管理订阅的SubscriptionManager类。由于此类的Unity标准IAP实现使用开发者载荷,因此不支持此类。您仍然可以创建此类,但是当您使用该类的任何getter方法时,您可能会收到不可靠的数据。

UpdateSubscription出现细微的API变更

Google Play结算服务插件不支持使用SubscriptionManager.UpdateSubscription()和SubscriptionManager.UpdateSubscriptionInGooglePlayStore()方法升级和降级您的订阅。如果您的游戏调用了这些方法,系统会抛出GooglePlayStoreUnsupportedException。

结算库提供了一个替代API来代替这些方法。如需升级或降级订阅,请调用使用按比例计费模式的UpdateSubscription()方法:

void UpdateSubscription(Product oldProduct,Product newProduct,

GooglePlayStoreProrationMode prorationMode=GooglePlayStoreProrationMode.Unknown);

您可以用平台检查封装此方法调用,也可以在捕获GooglePlayStoreUnsupportedeException时将其封装在catch块中。

如需了解按比例计费模式的详细使用方法和示例,请参阅设置按比例计费模式。

在 Unity 项目中使用 Google Play 结算库

上一篇:Google Play 结算系统:开发者载荷
下一篇:Audience Network 原生、横幅和插屏版位 图片广告发


版权声明:以上主题为“在 Unity 项目中使用 Google Play 结算库"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    在 Unity 项目中使用 Google Play 结算库
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“在 Unity 项目中使用 Google Play 结算库”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通在 Unity 项目中使用 Google Play 结算库的相关事宜。

关键词:在,Unity,项目中使用,Googl

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号