有没有办法从Xamarin.Forms推出Square POS Android应用程序?我注意到所有的SDK示例都是用Java编写的。该应用程序是否必须使用Java编写?
编辑:更新
我使用square android SDK aar文件在Visual Studio中创建了Bindings库。现在,它启动了销售点应用程序,但之后它没有将结果数据发送回应用程序。相反,它会进入错误屏幕,其中显示“网页不可用”
网页 intent#intent; action = com.squareup.pos.action.CHARGE(更多..) 无法加载,因为
net:ERROR_UNKNOWN_URL_SCHEME
我试图通过覆盖ShouldOverrideUrlLoading
在WebView中执行此操作public override bool ShouldOverrideUrlLoading(WebView view, string url)
{
if (url.StartsWith("http:") || url.StartsWith("https:"))
{
view.LoadUrl(url);
return false;
}
if (url.Contains("CHARGE"))
{
// Process Square Point-Of-Sale Transaction
ChargeRequest chargeRequest =
new ChargeRequest.Builder(1, CurrencyCode.Usd)
.Note("Test")
.RequestMetadata("WEB_CALLBACK_URI=mycallbackurl")
.RestrictTendersTo(ChargeRequest.TenderType.Card, ChargeRequest.TenderType.CardOnFile, ChargeRequest.TenderType.Cash)
.CustomerId("MyCustomerID")
.Build();
try
{
if (PosClient == null)
{
new AlertDialog.Builder(this.activity).SetMessage("Square Point-Of-Sale Client Error").Show();
}
Intent chargeIntent = PosClient.CreateChargeIntent(chargeRequest);
this.activity.StartActivityForResult(chargeIntent, CHARGE_REQUEST_CODE);
}
catch (ActivityNotFoundException e)
{
new AlertDialog.Builder(this.activity).SetMessage(e.Message).Show();
}
}
return false;
}
编辑:更新
我为OnRecieveError添加了一个覆盖
errorCode是
Android.Webkit.ClientError.Unsupported Scheme
在Webview对象中有这个
Java.Lang.NoSuchMethodError:没有非静态方法 “Landroid / webkit的/ web视图; .getRendererPriorityWaivedWhenNotVisible()Z” Java.Lang.NoSuchMethodError:没有非静态方法 “Landroid / webkit的/ web视图; .getRendererRequestedPriority()I”
编辑:更新
我现在有点工作了。在ShouldOverrideUrlLoading方法中,如果它正在处理事务,我将其更改为返回true。我还必须覆盖OnActivityResult并解析从Android应用程序返回的数据。它现在启动Square POS应用程序并将数据返回给调用应用程序。现在,我只是弄清楚如何从那里处理交易。