我现在已经设置了资产链接,如下所示:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.myapp.app",
"sha256_cert_fingerprints":
[
"so:me:de:bu:gs:ha",
"so:me:pr:od:sh:aa"
]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.myapp.app.staging",
"sha256_cert_fingerprints":
[
"so:me:de:bu:gs:ha",
"so:me:pr:od:sh:aa"
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
根据链接文档,该字段应该支持多个指纹,但我还没有找到任何如何格式化它的示例。鉴于它只是 JSON,我上面的格式化方式似乎应该可以正常工作,但是当我在该字段中有多个指纹时,我发现链接验证失败,而单个指纹似乎工作正常。
我在这里错过了一些非常明显的东西吗?
我在受信任的 Web 活动中打开我的页面,我想检测它何时在其中打开以自定义行为和用于分析目的。如何检测正在从 TWA 打开的页面?
我已按照本指南学习了如何使用可信网络活动。一切正常,但仍然显示地址栏。一开始我认为这是因为该应用程序正在寻找assetlinks.json时响应为404。已修复该问题,但删除地址栏没有运气。我想念什么吗?
Chrome版本: 72.0.3626.96
Android版本: 7.1.2(LineageOS 14.1)
assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "com.example.twa_test",
"sha256_cert_fingerprints": ["2A:32:7D:B7:4D:0B:A5:6A:72:47:86:A3:2F:A6:BB:D8:26:DE:AB:7E:8B:EA:C7:16:80:EA:C3:F1:50:E7:8E:D1"] }
}]
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.twa_test">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements" />
<activity android:name="android.support.customtabs.trusted.LauncherActivity">
<!-- Edit android:value to change the url opened by the TWA -->
<meta-data
android:name="android.support.customtabs.trusted.DEFAULT_URL"
android:value="https://slexom.gitlab.io/namya/" />
<!-- This intent-filter adds the TWA to the Android Launcher -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!--
This intent-filter …
Run Code Online (Sandbox Code Playgroud) 几天前,我在PlayStore中发布了一个满足TWA要求的应用程序。应用程序的行为就像本机应用程序一样,URL栏当然是隐藏的。
问题在于,首次启动应用程序时,该应用程序显示本机吐司“在Chrome中运行”。用户对此表示抱怨,并在Google Play上给了我们一些不好的注释。
有没有可能隐藏这种吐司?
可以理解的是,在用户访问支持的浏览器中的Web应用程序(我现在认为是Chrome)并点击"添加到主屏幕"后,渐进式网络应用程序(PWA)将添加到主屏幕.这适用于公共可用的PWA.
想想企业安卓应用程序,需要通过一些应用程序推送工具(如Airwatch)安装到数千台设备上,实际上不可能让某人打开浏览器,放入URL然后在所有数千台设备中添加到主屏幕.
有没有其他方法可以将此部署/添加图标自动化到Progressive Web应用程序的主屏幕,而不需要用户在浏览器中访问Web应用程序并单击"添加到主屏幕"?
我们想到的一个选择是包装在科尔多瓦.但试图找到没有这种包装的解决方案.
google-chrome progressive-enhancement google-chrome-app progressive-web-apps trusted-web-activity
使用Crosswalk,我有一个非常方便的javascript-app界面,因此我可以从javascript调用Java函数,并将Webapp的数据共享到android应用程序。
如何通过“自定义标签”(或“受信任的网络活动”)实现此目标?
似乎根本没有办法。应该有,尤其是当我的应用程序和游戏/网络应用程序来自同一作者时。
例如,我不信任LocalStorage,尤其是现在带有“自定义选项卡”的LocalStorage,它可能会被清理,或者用户可能会卸载浏览器并安装另一个浏览器,因此保存的数据将丢失,并且用户会对该应用程序感到恼火丢失保存的数据,甚至不了解数据在浏览器中,而不在应用程序中。所以我以前让我的Web应用程序调用该应用程序以保存数据。
另一个示例,当“自定义标签”使用Firefox而不是Chrome时,语音合成将不可用。我可以在我的webapp中轻松检测到它。但我希望我的Web应用程序调用该应用程序并将其发音发送给它。这就是我对Crosswalk所做的事情,因为它也不支持语音。
我知道Web视图比“自定义标签”更适合我使用,但是当无法在设备(尤其是Android <5)上使用Web视图时,除了打开“自定义标签”外,我的应用没有很多其他选择(或信任的网络活动,如果可用)。我再也不能使用Crosswalk了,它已经停产并且仍然充满严重的错误。其他解决方案(如GeckoView或阿里巴巴Gcanvas)尚未准备就绪。
编辑:
在这篇关于可信网络活动的文章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>
Run Code Online (Sandbox Code Playgroud)
我为该接收器创建了一个类:
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();
}
Run Code Online (Sandbox Code Playgroud)
我用javascript来称呼它
location.href="intent:#Intent;action=custom_tabs_js_interface;end";
Run Code Online (Sandbox Code Playgroud)
我什至不传递数据,我只是尝试调用它。但是什么也没发生...
android deep-linking android-intent chrome-custom-tabs trusted-web-activity
这是我们的android应用程序的screeenshot,但是当它打开时,地址栏是可见的,如图所示,如何使用可信的网络活动隐藏该url(地址栏)?
在此屏幕截图中, 我们还使用Chrome Dev作为默认浏览器,但是每次打开android应用程序时,它都不会崩溃。请为此提出解决方案。提前致谢!
我已经使用 TWA 和本教程成功地为我的网站创建了一个 apk。
https://developers.google.com/web/updates/2019/02/using-twa
但我不知道我应该如何为我的 apk 添加推送通知。有两种方法: 1. Web-push 2-android push。他们都有单独的SDK。
问题是,如果我使用 web-push,chrome 怎么知道它不应该去网站,而应该去 app.
而且我也有使用 android sdk 进行推送通知的问题。push 的教程说你应该在主要活动的 onCreate 事件中放置一些代码。我的项目(用 twa 教程制作)没有活动。
我目前正在按照Google 示例 TWA 项目中的指南构建一个 Android 应用程序作为 TWA,并且在尝试从 TWA 中打开外部链接时遇到了一个问题。
在我的 TWA 中,当打开外部链接(例如 Facebook 或 Instagram)并且我没有安装可以处理该链接的应用程序时,我希望该链接在我的应用程序之外在 Chrome 中单独打开。然而,TWA 实现是围绕并在 Google 的自定义选项卡中构建的,它似乎坚持在自定义选项卡上下文中加载链接。
像这样从我的应用程序中打开外部链接的问题是,当单击“关闭”图标时,它会关闭我的整个应用程序,而不仅仅是外部链接的视图,这显然是不可取的。
TL;DR 有没有一种方法可以强制从自定义选项卡上下文外部打开自定义选项卡内的外部链接?作为单独的 Chrome 活动或作为 Web 视图就足够了。
请注意,我的应用确实有一个意图过滤器和范围集:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.example.com"
android:pathPrefix="/mobile"
android:scheme="https" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud) android android-webview android-activity android-customtabs trusted-web-activity
我开发了一个渐进式 Web 应用程序,我想将它作为受信任的 Web 活动发布在 Play 商店中。这是https://www.bagnoadriatico.it
遵循本指南 https://developers.google.com/web/updates/2019/02/using-twa
我从https://github.com/GoogleChromeLabs/svgomg-twa下载了示例
我改变了配置
def twaManifest = [
applicationId: 'com.simovinci.bagnoadriatico',
hostName: 'www.bagnoadriatico.it', // The domain being opened in the TWA.
launchUrl: '/mobile', // The start path for the TWA. Must be relative to the domain.
name: 'BagnoAdriatico di Casalborsetti', // The name shown on the Android Launcher.
themeColor: '#ff5c14', // The color used for the status bar.
backgroundColor: '#ffff00' // The color used for the splash screen background.
]
Run Code Online (Sandbox Code Playgroud)
然后我签署了 …