העברת מידע לפעילות מהימנה באינטרנט באמצעות פרמטרים של שאילתות

כשמפתחים משתמשים בפעילות מאומתת באינטרנט באפליקציות שלהם, יכול להיות שהם יצטרכו להעביר מידע מהחלק המקורי של האפליקציה לאפליקציית ה-PWA (Progressive Web App).

תרחיש לדוגמה לשימוש באפשרות הזו הוא הטמעת פילוח ניתוח נתונים מותאם אישית כדי למדוד את מספר ההתקנות והסשנים שהתחילו מפעילות אינטרנט מהימנה. כדי להטמיע את האפשרות הזו, אפשר להוסיף פרמטרים של שאילתות לכתובת ה-URL של ההשקה.

שינוי כתובת ה-URL להתחלה

אם הפרמטר שמוענק ל-PWA יישאר זהה בכל המשתמשים וההשקות, אפשר לצרף את הפרמטר ישירות לכתובת ה-URL של ההשקה. דוגמה לשימוש כזה היא כשמפתחים רוצים למדוד את מספר סשני הניווט שנוצרו מפעילות אינטרנט מהימנה.

שימוש ב-Bubblewrap

Bubblewrap הוא כלי שנועד לעזור למפתחים ליצור פרויקט לאפליקציית Android שמפעילה אפליקציות PWA קיימות באמצעות פעילות מהימנה באינטרנט. הוא מכיל גם ספרייה וגם ממשק שורת פקודה (CLI).

יצירת פרויקט חדש

כשמשתמשים ב-Bubblewrap CLI, הפרויקט מופעל באמצעות הפקודה init, וערכי ברירת המחדל נוצרים מתוך מניפסט אינטרנט שסופק כפרמטר:

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

האשף ישתמש ב-start_url מ-Web Manifest כברירת מחדל ויבקש מהמשתמשים לאשר את הערך. כך למפתחים תהיה אפשרות להוסיף פרמטרים נוספים לכתובת ה-URL שמשמשת להפעלת אפליקציית ה-Progressive Web.

הצגת הפלט של CLI של Bubblewrap

שינוי של פרויקט קיים

כש-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.

שלב 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>

סיכום

אפשר להעביר מידע מהחלק המקורי לחלק האינטרנט של האפליקציה באמצעות פרמטרים של שאילתות. כשמוסיפים פרמטר למחרוזת השאילתה, הוא יהיה נגיש לסקריפטים שפועלים בדף, ויכול גם להיכלל בהפניה כשמשתמשים מנווטים לדף אחר או כשהמפתח מטמיע פעולת שיתוף.

מפתחים צריכים להיות מודעים להשלכות האלה, ויכולים לצמצם אותן באמצעות קישור rel=noreferrer או ניקוי כתובת ה-URL באמצעות ממשק ה-API למיקום הדף.

פרוטוקול Trusted Web Activity לא מספק כרגע מנגנון להעברת הודעות עם החלק המקורי של האפליקציה אחרי ההפעלה של החלק באתר.

אנחנו מאמינים שממשקי ה-API הקיימים או העתידיים של פלטפורמת האינטרנט מאפשרים את רוב התרחישים לדוגמה שנדרשים למפתחים. אם אתם מחפשים ממשקי Web API חדשים או תכונות חדשות שצפויות בקרוב, כדאי לעיין בדף הסטטוס של יכולות חדשות.