การส่งข้อมูลไปยังกิจกรรมบนเว็บที่เชื่อถือได้โดยใช้พารามิเตอร์การค้นหา

เมื่อใช้กิจกรรมบนเว็บที่เชื่อถือได้ในแอปพลิเคชัน นักพัฒนาแอปอาจต้องส่งข้อมูลจากส่วนเนทีฟของแอปพลิเคชันไปยัง Progressive Web App (PWA)

กรณีการใช้งานที่พบบ่อยสำหรับวิธีนี้คือการใช้การแบ่งกลุ่มข้อมูลวิเคราะห์ที่กำหนดเองเพื่อวัดการติดตั้งและเซสชันที่เริ่มต้นจากกิจกรรมบนเว็บและเว็บที่เชื่อถือได้ คุณสามารถเพิ่มพารามิเตอร์การค้นหาลงใน URL เปิดใช้งาน เพื่อดำเนินการนี้

การแก้ไข URL เริ่มต้น

หากพารามิเตอร์ที่ส่งไปยัง PWA ยังคงเหมือนเดิมสำหรับผู้ใช้และการเปิดใช้งาน คุณจะเพิ่มพารามิเตอร์ต่อท้าย URL การเปิดตัวได้โดยตรง ตัวอย่างของการใช้งานลักษณะนี้คือเมื่อนักพัฒนาซอฟต์แวร์ต้องการวัดจำนวนเซสชันการนำทางที่สร้างขึ้นจากกิจกรรมบนเว็บที่เชื่อถือได้

การใช้ Bubblewrap

Bubblewrap เป็นเครื่องมือที่สร้างขึ้นเพื่อช่วยให้นักพัฒนาสร้างโปรเจ็กต์สำหรับแอปพลิเคชัน Android ที่เปิด PWA ที่มีอยู่โดยใช้กิจกรรมบนเว็บที่เชื่อถือได้ ซึ่งจะมีทั้งไลบรารีและ Command Line Interface (CLI)

กำลังสร้างโปรเจ็กต์ใหม่

เมื่อใช้ Bubblewrap CLI โปรเจ็กต์จะเริ่มต้นด้วยคำสั่ง init และสร้างค่าเริ่มต้นจากไฟล์ Manifest ของเว็บที่ระบุเป็นพารามิเตอร์ดังนี้

bubblewrap init --manifest https://material.money/manifest.json

วิซาร์ดจะใช้ start_url จากไฟล์ Manifest ของเว็บเป็นค่าเริ่มต้น และจะขอให้ผู้ใช้ยืนยันค่า เพื่อให้นักพัฒนาซอฟต์แวร์มีโอกาสเพิ่มพารามิเตอร์ลงใน URL ที่ใช้ในการเริ่มต้น Progressive Web App

กำลังแสดงเอาต์พุต Bubblewrap CLI

การแก้ไขโปรเจ็กต์ที่มีอยู่

เมื่อ Bubblewrap สร้างโปรเจ็กต์ ระบบจะเก็บข้อมูลสำหรับโปรเจ็กต์นั้นไว้ในไฟล์ที่ชื่อว่า twa-manifest.json ในโฟลเดอร์โปรเจ็กต์ หากต้องการแก้ไข URL เริ่มต้นสำหรับโปรเจ็กต์ที่มีอยู่ นักพัฒนาซอฟต์แวร์จะต้องแก้ไขไฟล์ ดังนี้

{
  ...
  "startUrl": "/?utm_source=trusted-web-activity",
  ...
}

จากนั้นสร้างไฟล์โครงการอีกครั้งและใช้ URL เริ่มต้นใหม่

bubblewrap update

การใช้ Android Studio

เมื่อใช้ Android Studio และ LauncherActivity เริ่มต้น ระบบจะกำหนด startUrl เป็นเมตาแท็กภายใน AndroidManifest.xml และเราสามารถเปลี่ยน URL ที่ใช้ในการเปิดกิจกรรมบนเว็บที่เชื่อถือได้โดยการแก้ไขดังนี้

<activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://svgomg.firebaseapp.com/?utm_source=trusted-web-activity" />
    ...
</activity>

การแก้ไข URL เริ่มต้นแบบไดนามิก

ในกรณีอื่นๆ นักพัฒนาซอฟต์แวร์อาจต้องการสร้างพารามิเตอร์ที่เปลี่ยนแปลงตามผู้ใช้หรือเซสชันต่างๆ เช่น ในกรณีส่วนใหญ่ การดำเนินการนี้จะรวมถึงการรวบรวมรายละเอียดจากฝั่ง Android ของแอปพลิเคชันเพื่อส่งไปยัง Progressive Web App

ขั้นตอนที่ 1: สร้าง LauncherActivity ที่กำหนดเอง

public class CustomQueryStringLauncherActivity extends LauncherActivity {
    private String getDynamicParameterValue() {
        return String.valueOf((int)(Math.random() * 1000));
    }

    @Override
    protected Uri getLaunchingUrl() {
        // Get the original launch Url.
        Uri uri = super.getLaunchingUrl();

        // Get the value we want to use for the parameter value
        String customParameterValue = getDynamicParameterValue();

        // Append the extra parameter to the launch Url
        return uri
                .buildUpon()
                .appendQueryParameter("my_parameter", customParameterValue)
                .build();
    }
}

ขั้นตอนที่ 2: แก้ไข AndroidManifest.xml เพื่อใช้ LauncherActivity ที่กำหนดเอง

<activity android:name="com.myapp.CustomQueryStringLauncherActivity"
    android:label="@string/app_name">
    ...
    <meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://squoosh.app/?utm_source=trusted-web-activity" />
    ...
</activity>

บทสรุป

การส่งข้อมูลจากส่วนเนทีฟไปยังเว็บพาร์ทของแอปพลิเคชันสามารถทำได้โดยใช้พารามิเตอร์การค้นหา เมื่อเพิ่มพารามิเตอร์ไปยังสตริงการค้นหา สคริปต์ที่ทำงานในหน้าเว็บจะสามารถเข้าถึงพารามิเตอร์ดังกล่าว และอาจเป็นส่วนหนึ่งของการอ้างอิงเมื่อผู้ใช้ไปยังหน้าอื่นหรือนักพัฒนาซอฟต์แวร์ใช้การดำเนินการแชร์

นักพัฒนาแอปต้องตระหนักถึงผลที่ตามมา และลดความเสี่ยงนี้ได้โดยใช้ link rel=noreferrer หรือล้าง URL โดยใช้ API ตำแหน่งหน้าเว็บ

ปัจจุบันโปรโตคอลกิจกรรมบนเว็บที่เชื่อถือได้จะไม่มีกลไกในการแลกเปลี่ยนข้อความกับส่วนเดิมของแอปพลิเคชันหลังจากเรียกใช้ส่วนเว็บ

เราเชื่อว่า API แพลตฟอร์มเว็บที่มีอยู่หรือที่กำลังจะเปิดตัวจะช่วยให้เกิดกรณีการใช้งานส่วนใหญ่ที่นักพัฒนาซอฟต์แวร์ต้องการ หากคุณกำลังมองหา Web API ใหม่ๆ หรือที่กําลังจะเปิดตัว โปรดดูหน้าสถานะความสามารถใหม่