เมื่อใช้กิจกรรมบนเว็บที่เชื่อถือได้ในแอปพลิเคชัน นักพัฒนาแอปอาจต้องส่งข้อมูลจากส่วนที่เป็นเนทีฟของแอปพลิเคชันไปยัง Progressive Web App (PWA)
กรณีการใช้งานที่พบบ่อยสําหรับกรณีนี้คือการใช้การแบ่งกลุ่มข้อมูลวิเคราะห์ที่กําหนดเองเพื่อวัดการติดตั้งและเซสชันที่เริ่มต้นจากกิจกรรมบนเว็บที่เชื่อถือได้ คุณสามารถเพิ่มพารามิเตอร์การค้นหาลงใน URL การเปิดใช้งานเพื่อใช้ฟีเจอร์นี้ได้
การแก้ไข URL เริ่มต้น
หากพารามิเตอร์ที่ส่งไปยัง PWA จะยังคงเหมือนเดิมสำหรับผู้ใช้และการเปิดตัวต่างๆ คุณสามารถเพิ่มพารามิเตอร์ต่อท้าย URL การเปิดตัวได้โดยตรง ตัวอย่างการใช้งานนี้คือเมื่อนักพัฒนาแอปต้องการวัดจํานวนเซสชันการนําทางที่สร้างจากกิจกรรมในเว็บที่เชื่อถือได้
การใช้บับเบิ้ลแรป
Bubblewrap เป็นเครื่องมือที่สร้างขึ้นเพื่อช่วยนักพัฒนาแอปในการสร้างโปรเจ็กต์สําหรับแอปพลิเคชัน Android ที่เปิด PWA ที่มีอยู่โดยใช้กิจกรรมในเว็บซึ่งเชื่อถือได้ โดยมีทั้งไลบรารีและอินเทอร์เฟซบรรทัดคำสั่ง (CLI)
การสร้างโปรเจ็กต์ใหม่
เมื่อใช้ Bubblewrap CLI ระบบจะเริ่มต้นโปรเจ็กต์ด้วยคำสั่ง init
และสร้างค่าเริ่มต้นจากไฟล์ Manifest ของเว็บซึ่งระบุเป็นพารามิเตอร์ ดังนี้
bubblewrap init --manifest https://material.money/manifest.json
วิซาร์ดจะใช้ start_url จากไฟล์ Manifest ของเว็บเป็นค่าเริ่มต้น และจะขอให้ผู้ใช้ยืนยันค่าดังกล่าว ซึ่งจะช่วยให้นักพัฒนาแอปมีโอกาสเพิ่มพารามิเตอร์เพิ่มเติมลงใน URL ที่ใช้เพื่อเริ่ม Progressive Web App
การแก้ไขโปรเจ็กต์ที่มีอยู่
เมื่อ 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 โดยใช้ page location API
ปัจจุบันโปรโตคอลกิจกรรมบนเว็บที่เชื่อถือได้ไม่มีกลไกในการแลกเปลี่ยนข้อความกับส่วนที่เป็นของแอปพลิเคชันเองหลังจากที่เรียกใช้ส่วนที่เป็นเว็บ
เราเชื่อว่า Web Platform API ที่มีอยู่หรือที่กำลังจะเปิดตัวจะช่วยให้นักพัฒนาแอปใช้กรณีการใช้งานส่วนใหญ่ที่ต้องการได้ หากกำลังมองหา Web API ใหม่หรือที่กำลังจะเปิดตัว โปรดดูหน้าสถานะความสามารถใหม่