是否可以从Xamarin Android应用程序直接使用Google Play BillingClient?

Bri*_*Rak 2 android subscriptions xamarin.android google-play xamarin

我正在努力将订阅集成到Xamarin Android应用中。我可以在网上找到特定于Xamarin的所有示例均使用Plugin.InAppBillingMontemagno等人的。

这当然非常方便,但是仅出于适当注意的目的,我想看看直接使用BillingClient类所需要的内容,如Google文档中所述(例如,在这里:https : //developer.android.com / google / play / billing / billing_java_kotlin)。

奇怪的是,Xamarin文档显示了如何直接使用iOS计费类,而不是Android计费类。我以为Xamarin.GooglePlayServicesNuGet软件包可能包含我需要的软件包,但是我没有看到似乎与计费直接相关的软件包。

任何指针将不胜感激。

Sus*_*ver 5

TL; DR:是的,您可以...(我用它...)

“实施Google Play结算”文档中显示的类是包装器类,这些类最终使用了结算AIDL。该AIDL接口是实际的计费API,并且AIDL定义了对其的IPC调用(这不仅用于跨进程方法调用,而且还用于安全性)...

当您将Billing API依赖项添加到build.gradle文件中时,Android Studio通过Gradle自动导入计费包装器和AIDL并为您进行所有设置。(当然,这不是通过Visual Studio和MSBuild的选择...)

Montemagno的Android应用内结算直接使用AIDL接口方法,并以跨平台方式包装这些方法...

要使用Java包装器类,基本步骤是billing-1.1.aar从Jcenter Maven存储库中获取aar(),创建一个Xamarin.Android绑定库,添加aar,修正警告(如果需要,还可以命名空间)并在该库中引用该库。您的Xamarin.Android应用程序项目...

现在,您可以通过一些次要的Xamarin.Android/C#规范化直接使用Google文档,即:

// I did not alter the original Java namespace in the binding lib
using Com.Android.Billingclient.Api; 

~~~

var billingClient = BillingClient
    .NewBuilder(this)
    .SetListener(this)
    .Build();

~~~

var flowParams = BillingFlowParams
    .NewBuilder()
    .SetSku("StackOverflowXamarinTag")
    .SetType("Answer")
    .Build();
Run Code Online (Sandbox Code Playgroud)