Я пытаюсь реализовать (в биллинге приложений) для решения форм Xamarin с помощью плагина InAppBilling Я не смог найти полный пример кода или документацию для этого плагина, кроме this Я следую инструкциям шаг за шагом, но когда я запускаю свой код, я получил это исключение
{System.NullReferenceException: Current Context / Activity имеет значение null, убедитесь, что файл MainApplication.cs устанавливает CurrentActivity в вашем исходном коде, чтобы биллинг в приложении мог использовать его.в Plugin.InAppBilling.InAppBillingImplementation.get_Context () [0x00000] в C: \ projects \ inappbillingplugin \ src \ Plugin.InAppBilling.Android \ InAppBillingImplementation.cs: 59 в Plugin.InAppBilling.InAppBillingIntApp.In.pp.itemType) [0x00000] в C: \ projects \ inappbillingplugin \ src \ Plugin.InAppBilling.Android \ InAppBillingImplementation.cs: 372 в myproject.MainPage + d__28.MoveNext () [0x00051] в C: \ Users \ xuser \ source \ repos\ myproject \ MainPage.xaml.cs: 415}
Мой пример кодаЭтот код в (Shared / Portable Class Libraries / .NET Standard)
MainPage.xaml.cs
public partial class MainPage : ContentPage
{
void OnPurchased(object sender, EventArgs e)
{
InAppBilling();
}
async void InAppBilling()
{
try
{
var productId = "xxxxx.xxxx_appbilling";
var connected = await CrossInAppBilling.Current.ConnectAsync();
if (!connected)
{
//Couldn't connect to billing, could be offline, alert user
return;
}
//try to purchase item
var purchase = await CrossInAppBilling.Current.PurchaseAsync(productId, ItemType.InAppPurchase, "apppayload");
if (purchase == null)
{
//Not purchased, alert the user
}
else
{
//Purchased, save this information
var id = purchase.Id;
var token = purchase.PurchaseToken;
var state = purchase.State;
}
}
catch (Exception ex)
{
//Something bad has occurred, alert user
}
finally
{
//Disconnect, it is okay if we never connected
await CrossInAppBilling.Current.DisconnectAsync();
}
}
}
И этот код вDroid Project
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
InAppBillingImplementation.HandleActivityResult(requestCode, resultCode, data);
}
}