如何从 Android Capacitor 中的嵌入式 WebView 导航到应用程序

Cés*_*rca 6 angular capacitor

我们正在将支付系统与我们的应用程序集成。它在 iOS 上完美运行,但在 Android 中导航回应用程序不起作用。我们想在我们的应用程序内打开支付系统网页。为此,我们在以下位置设置了此配置capacitor.config.json

{
  "server": {
    "allowNavigation": ["sis-t.redsys.es", "*.redsys.es"]
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,集成系统有点棘手。我们需要一个触发帖子的表单组件:

{
  "server": {
    "allowNavigation": ["sis-t.redsys.es", "*.redsys.es"]
  }
}
Run Code Online (Sandbox Code Playgroud)

在我们的代码中app.component.ts,有以下代码:

<form ngNoForm #myFormPost action="https://sis-t.redsys.es:25443/sis/realizarPago" method="post">
  <input type="hidden" name="Ds_SignatureVersion" [value]="dsSignatureVersion" />
  <input type="hidden" name="Ds_MerchantParameters" [value]="dsMerchantParameters" />
  <input type="hidden" name="Ds_Signature" [value]="dsSignature" />
</form>
Run Code Online (Sandbox Code Playgroud)

所有这些都有效,因为它打开了支付系统应用程序。现在,该系统允许我们设置重定向页面以便导航回我们的应用程序。我们已经定了capacitor://localhost/store?r=ko。正如文档中所述,iOS 的方案是capacitor://,Android 的方案是http://。因此,当我们完成操作并尝试通过单击 iOS 上的按钮返回应用程序时,它会完美地返回到应用程序,但 Android 则不会。

我们尝试在 iOS 中将 url 设置为 ,capacitor://localhost/store?r=ko在 Android 中设置为http://localhost/store?r=ko,但是在 Android 中,它会尝试打开浏览器,这是我们不希望的。

我们尝试将 设为androidSchemecapacitor但它破坏了 http 请求。我们还尝试将AndroidManifest.xml属性更改android:launchMode本期singleTop所述。我们尝试将文档中所述更改为以下内容:strings.xml

<?xml version='1.0' encoding='utf-8'?>
<resources>
    <string name="app_name">app</string>
    <string name="title_activity_main">app</string>
    <string name="package_name">com.app</string>
    <string name="custom_url_scheme">com.app</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

并将回调 url 设置为com.app://localhost/store?r=ko空。

我们尝试了一些带有深层链接的配置,但由于我们位于应用程序内部,因此它不会导航到该应用程序,因为我们不是来自外部站点。

atr*_*con 0

也许您可以创建一个代理 GET 后端端点来接收 dsSignature、dsMerchantData 和 dsSignatureVersion 作为查询参数。然后您应该将您的请求从后端重定向到 Redsys。

使用此方法深层链接可以正常工作,因为初始 URL 是外部 GET 站点。