هنگام استفاده از فعالیت های وب قابل اعتماد در برنامه های خود ، توسعه دهندگان ممکن است نیاز به انتقال اطلاعات از قسمت بومی برنامه به برنامه وب پیشرو (PWA) داشته باشند.
یک مورد استفاده مشترک برای این کار ، اجرای تقسیم بندی های تجزیه و تحلیل سفارشی برای اندازه گیری تاسیسات و جلسات شروع شده از فعالیت وب قابل اعتماد است. برای پیاده سازی این امر می توان پارامترهای پرس و جو را به URL راه اندازی اضافه کرد.
تغییر URL شروع
اگر پارامتر منتقل شده به PWA در بین کاربران یکسان باشد و راه اندازی شود ، این پارامتر می تواند مستقیماً به URL پرتاب اضافه شود. نمونه ای از این استفاده زمانی است که توسعه دهندگان می خواهند تعداد جلسات پیمایش ایجاد شده از یک فعالیت وب مورد اعتماد را اندازه گیری کنند.
استفاده از Bubblewrap
Bubblewrap ابزاری است که برای کمک به توسعهدهندگان برای ایجاد یک پروژه برای یک برنامه Android ایجاد شده است که یک PWA موجود را با استفاده از یک فعالیت وب مورد اعتماد راهاندازی میکند. این شامل یک کتابخانه و یک رابط خط فرمان (CLI) است.
ایجاد یک پروژه جدید
When using the Bubblewrap CLI , a project is initialized with the init
command, and creates default values from a Web Manifest, provided as a parameter:
bubblewrap init --manifest https://material.money/manifest.json
جادوگر از start_url از Web Manifest به عنوان پیشفرض استفاده میکند و از کاربران میخواهد مقدار را تأیید کنند، و به توسعهدهندگان این فرصت را میدهد تا پارامترهای اضافی را به آدرس اینترنتی مورد استفاده برای راهاندازی برنامه وب پیشرو اضافه کنند.
اصلاح پروژه موجود
هنگامی که Bubblewrap یک پروژه را تولید می کند، اطلاعات مربوط به آن پروژه خاص در فایلی به نام twa-manifest.json
در پوشه پروژه ذخیره می شود. برای تغییر url شروع پروژه موجود، توسعه دهندگان باید فایل را اصلاح کنند:
{
...
"startUrl": "/?utm_source=trusted-web-activity",
...
}
سپس، فایل های پروژه را دوباره تولید کنید و URL شروع جدید را اعمال کنید
bubblewrap update
استفاده از اندروید استودیو
هنگام استفاده از 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 برنامه برای ارسال آن به برنامه وب پیشرفته است.
مرحله 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 مکان صفحه، آنها را کاهش دهند.
پروتکل Trusted Web Activity در حال حاضر مکانیزمی برای تبادل پیام با بخش اصلی برنامه پس از فراخوانی بخش وب ارائه نمی دهد.
ما معتقدیم APIهای پلتفرم وب موجود یا آینده اکثر موارد استفاده مورد نیاز توسعه دهندگان را فعال می کنند. اگر به دنبال API های وب جدید یا آینده هستید، صفحه وضعیت قابلیت های جدید را بررسی کنید.