如何隐藏PWA中的URL栏?

时间:2019-07-23 20:54:32

标签: android progressive-web-apps trusted-web-activity

我正在构建PWA,它遵循所有规则,甚至具有HTTPS URL:

https://toastmasterstimer.tk

但是URL栏仍然出现:

preview

该应用程序可以安装,因为它符合所有规则,并且我已经通过Android手机在Chrome中对其进行了测试:

preview 2

这是我的成绩

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "tk.supernovaic.tmtimer.go"
        minSdkVersion 20
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        manifestPlaceholders = [
                hostName: "toastmasterstimer.tk",
                defaultUrl: "https://toastmasterstimer.tk",
                launcherName: "Toastmasters Timer - Go",
                assetStatements: '[{ "relation": ["delegate_permission/common.handle_all_urls"], ' +
                        '"target": {"namespace": "web", "site": "https://toastmasterstimer.tk"}}]'
        ]

        resValue "color", "colorPrimary", "#272838"
    }
    buildTypes {
        release {
            minifyEnabled false
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.github.GoogleChrome.custom-tabs-client:customtabs:e849e45c90'
}

这是我的 AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.placeholder">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="${launcherName}"
        android:supportsRtl="true"
        android:theme="@style/Theme.TwaSplash">

        <meta-data
            android:name="asset_statements"
            android:value="${assetStatements}" />

        <activity android:name="android.support.customtabs.trusted.LauncherActivity"
            android:label="${launcherName}">
            <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
                android:value="${defaultUrl}" />

            <meta-data
                android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR"
                android:resource="@color/colorPrimary" />

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <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:scheme="https"
                    android:host="${hostName}"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

这是 style.xml

<resources>
    <style name="Theme.TwaSplash" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>
</resources>

我遵循了此教程

Trusted Web Activity - PWA to Play Store Guide

有人知道我想念什么吗?谢谢。

4 个答案:

答案 0 :(得分:0)

构建APK时,您将使用密钥存储区对应用进行签名。

创建密钥存储区后,您将需要获取sha256 fingerprint

要获取sha256,您需要运行:

keytool -list -v -keystore /keystore-location/pwa-keystore.ks

然后,请确保您的网络应用程序中包含以下路径的路由,其中​​包含上面生成的sha256指纹。

www.example.com/.well-known/assetlinks.json

    {
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "scapeq",
        "package_name": "org.electrobooth.twa.scapeq",
        "sha256_cert_fingerprints": ["sha256_FINGER_PRINT_GOES_HERE"]
      }
    }
  ]

答案 1 :(得分:0)

toastmasterstimer.tk似乎缺少数字资产链接文件,这对于验证所有权和启用全屏是必需的。

该文件必须位于https://toastmasterstimer.tk/.well-known/assetlinks.json

您可以使用Statement List Generator and Tester来生成assetlinks.json文件。

文档的section提供了更多信息,包括如何从签名密钥中提取SHA-256指纹。

答案 2 :(得分:0)

是您在web / .well-known / assetlinks.json中输入的sha256指纹 与在Google Play控制台中输入的相同? (在“发布管理” /“应用签名”“应用签名证书”上)

product_action                RECORD NULLABLE
product_action.action_type    INTEGER NULLABLE
product_action.checkout_step  INTEGER NULLABLE

google play console screenshot

答案 3 :(得分:-1)

将其添加到清单中,然后再移植到android:

     "display": "standalone"