如何将数据从我的TWA webapp发送到我的应用程序?

问题描述 投票:5回答:2

使用Crosswalk我有一个非常方便的javascript-to-app界面,所以我可以从javascript调用java函数并将数据从我的webapp共享到我的Android应用程序。

如何使用自定义选项卡(或可信Web活动)实现此目的?

似乎完全没有办法。应该有,特别是当我的应用程序和我的游戏/ webapp来自同一作者时。

例如,我不信任LocalStorage,特别是现在使用Custom Tabs,它可能会被清理,或者用户可能会卸载浏览器并安装另一个,因此保存的数据将丢失,用户将对应用程序感到生气丢失保存的数据,甚至不了解数据是在浏览器中,而不是在应用程序中。所以我曾经让我的webapps调用应用程序来保存数据。

另一个例子,当自定义选项卡使用Firefox而不是Chrome时,语音合成将无法使用。我可以在我的webapp中轻松检测到它。但我希望我的webapp可以调用应用程序并将其发送给发音。这就是我在Crosswalk上所做的事情,因为它既不支持演讲也不支持。

据我所知,webview比自定义标签更适合我使用,但是当webview无法在设备上使用时(尤其是Android <5),那么我的应用程序除了打开自定义标签之外没有很多其他选项(或可信的Web活动,如果可用)。我不能再使用Crosswalk,它已经停产,仍然充满了严重的错误。其他解决方案,如GeckoView或Alibaba Gcanvas尚未准备就绪。

编辑:

在这篇关于Trusted Web Activity https://developers.google.com/web/updates/2017/10/using-twa的文章我读过

不过,您可以通过在URL中向页面传递数据来协调Web内容(例如,通过查询参数,自定义HTTP标头和意图URI)。

编辑:

我一直在阅读很多页面,虽然对我来说意图和深层链接仍然模糊不清,但这是我尝试过的。

我为自定义操作添加了一个intent过滤器:

<receiver android:name=".OutgoingReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="custom_tabs_js_interface" />
    </intent-filter>
</receiver>

我为那个接收器创建了一个类:

public class OutgoingReceiver extends BroadcastReceiver {

    public static final String CUSTOM_INTENT = "custom_tabs_js_interface";

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "received" , Toast.LENGTH_SHORT).show();
    }

我用javascript调用它

location.href="intent:#Intent;action=custom_tabs_js_interface;end";

我现在甚至没有传递数据,我只是试着打电话给它。但没有任何反应......

android android-intent deep-linking chrome-custom-tabs trusted-web-activity
2个回答
0
投票

您可以使用混合解决方案:

  1. 根据需要使用自定义标签进行游戏。
  2. 您的服务器可以在需要时使用套接字编程或推送通知来调用您的应用程序,以获取您需要保存在应用程序中的数据。

此外,如果向您的应用程序发送数据不成功,您的游戏可以在游戏中向浏览器中的用户发出警告。


0
投票

尽可能鼓励支持旧的Android版本。在撰写这篇文章时,平台版本分发(https://developer.android.com/about/dashboards/)声明,如果您放弃对版本4的支持,您将丢失大约12.7%的设备。

考虑将最低版本提升到Lollipop,其中WebView被移动到APK并使用它。您将获得时间和实现的简单性,因为您可以调用@JavascriptInterface注释方法,同时让您的用户参与您的应用程序(https://developer.android.com/guide/webapps/webview_

© www.soinside.com 2019 - 2024. All rights reserved.