لديك موقع ويب وتريده على هواتف الناس كتطبيق. ابحث عن طريقة فعل ذلك وستصادف ثلاثة مصطلحات مرارًا وتكرارًا: PWA وTWA وWebView. تبدو متشابهة، وكلها تعرض صفحات ويب، وغالبًا ما تُشرح بشكل سيئ.
في الحقيقة هي مختلفة تمامًا، واختيار المناسب منها يوفّر عليك الكثير من إعادة العمل. إليك ما هو كل واحد منها، وما يستطيع فعله وما لا يستطيع، ومتى يكون منطقيًا.
الخيار 1: تطبيق ويب تقدّمي (PWA)
PWA موقع ويب يتصرف أكثر كتطبيق. لديه ملف web app manifest (ملف JSON صغير فيه الاسم والأيقونة والألوان) وعادةً service worker، وهو سكربت يمكنه تخزين الملفات مؤقتًا حتى يعمل الموقع دون اتصال. عندما يزور شخص ما PWA في متصفح يدعمه، يمكنه تثبيته على الشاشة الرئيسية. بعدها يُفتح في نافذته الخاصة دون شريط العنوان.
ما هو جيد: لا يوجد تطبيق منفصل لإنشائه. تحدّث موقعك فيحصل كل مستخدم على النسخة الجديدة فورًا. ومع service worker يمكنك جعله يعمل دون اتصال.
ما هو محدود: على الناس أن يجدوا موقعك أولًا ثم يضغطوا تثبيت، وكثيرون لا يفعلون ذلك أبدًا. PWA العادي ليس ملفًا يمكنك رفعه إلى Google Play، وليس ملف APK يمكنك إعطاؤه لأحد. الوصول إلى ميزات الهاتف يعتمد على ما يتيحه المتصفح عبر واجهات API للويب.
مناسب لـ: المواقع التي يزورها الناس كثيرًا بالفعل، حيث يكون التثبيت ميزة إضافية لا الهدف الأساسي.
الخيار 2: Trusted Web Activity (TWA)
Trusted Web Activity تطبيق Android صغير يفتح PWA الخاص بك بملء الشاشة باستخدام متصفح المستخدم، مثل Chrome. وهو مبني على بروتوكول Custom Tabs، لذا تُعرض الصفحة بواسطة المتصفح نفسه لا بواسطة التطبيق.
هناك شرطان. أولًا، يجب إثبات أن موقعك وتطبيقك ملك للمالك نفسه. يتم ذلك عبر Digital Asset Links: تضع ملفًا في /.well-known/assetlinks.json على نطاقك يذكر اسم حزمة تطبيقك وبصمة شهادة التوقيع. ثانيًا، تقول وثائق Google إن موقعك يجب أن يستوفي معايير الإضافة إلى الشاشة الرئيسية، وهذا يعني عمليًا PWA سليمًا مع manifest. أداة Google لإنشاء TWA هي Bubblewrap، أداة سطر أوامر لـ Node.js.
إذا فشل التحقق، أو كان المتصفح لا يدعم TWA، تقول Google إنه يعود إلى Custom Tab بشريط أدوات متصفح بسيط بدل ملء الشاشة. هذه أكثر مفاجأة شائعة يواجهها الناس.
ما هو جيد: تحصل على تطبيق Android حقيقي يمكن نشره على Google Play، والمحتوى هو PWA المباشر الخاص بك، فتظهر تحديثات الويب فورًا.
ما هو محدود: تحتاج إلى PWA يعمل وإلى التحكم في النطاق لاستضافة ملف asset links. يجب أن تطابق البصمة في ذلك الملف المفتاح الذي يوقّع التطبيق الذي يثبّته المستخدمون فعلًا، ومع Play App Signing تكون النسخة من Google Play موقّعة بمفتاح توقيع التطبيق من Google، لذا تقترح Google إدراج بصمتي ذلك المفتاح ومفتاح الرفع الخاص بك. ميزات الهاتف لا تزال فقط ما يقدّمه المتصفح عبر واجهات API للويب. والتطبيق يعتمد على وجود متصفح داعم مثبّت.
مناسب لـ: الفرق التي لديها بالفعل PWA متين على نطاقها الخاص وتريده في Play Store بأقل قدر من الكود الإضافي.
الخيار 3: تطبيق WebView
تطبيق WebView تطبيق Android أصلي يعرض محتوى ويب داخل نافذته الخاصة باستخدام مكوّن WebView في Android. WebView محرّك متصفح بدون المتصفح من حوله: لا شريط عنوان، ولا تبويبات، فقط صفحتك. تصفه وثائق Google بأنه الخيار لعرض محتوى الويب الخاص بك عندما تريد مرونة في واجهة المستخدم.
الفرق الكبير عن TWA هو التحكم. التطبيق يقرّر ما يحدث عند زر الرجوع، وشكل شاشة البداية، وهل توجد قوائم أصلية، وما يُعرض عند انقطاع الشبكة، وأي الروابط تُفتح داخل التطبيق. كما يتيح Android لتطبيق WebView ربط JavaScript بالكود الأصلي عبر addJavascriptInterface، فتستطيع صفحتك استدعاء ميزات هاتف حقيقية غير متاحة على الويب. وتضيف وثائق Google تحذيرًا مهمًا: لا تُتح هذا الجسر إلا لـ HTML وJavaScript الذي كتبته بنفسك.
ما هو جيد: يعمل مع أي موقع ويب أو مجلد من ملفات HTML، دون الحاجة إلى PWA أو manifest أو ملف asset links. يمكن تضمين الصفحات داخل التطبيق فتُفتح فورًا دون اتصال. الميزات الأصلية متاحة عبر جسر.
ما هو محدود: للتطبيق تخزينه الخاص، لذا فتسجيل دخول المستخدم إلى موقعك في Chrome لا ينتقل إليه. إذا غلّفت موقعًا مباشرًا، فأنت مسؤول عن تحديث التطبيق عندما يحتاج شيء أصلي إلى تغيير.
مناسب لـ: تطبيقات HTML، والألعاب، والأدوات، ومواقع الأعمال الصغيرة، والتطبيقات الداخلية للشركات، وأي شيء يستفيد من الإضافات الأصلية.
جنبًا إلى جنب
ميزات الهاتف
- PWA: أي واجهات API للويب يدعمها المتصفح.
- TWA: الشيء نفسه، لأن المتصفح هو الذي يعرض الصفحة.
- تطبيق WebView: واجهات API للويب بالإضافة إلى أي شيء يتيحه التطبيق عبر جسر JavaScript.
دون اتصال
- PWA وTWA: العمل دون اتصال ممكن إذا كان service worker يخزّن مؤقتًا ما يلزم.
- تطبيق WebView: الصفحات المضمّنة تعمل دون اتصال بدون service worker؛ وتطبيقات المواقع يمكنها عرض شاشة عدم اتصال خاصة بها.
Google Play
- PWA: ليس وحده. تحتاج إلى تحزيمه، عادةً كـ TWA.
- TWA وتطبيق WebView: كلاهما تطبيق Android عادي ويمكن نشره كملف AAB.
قاعدة واحدة من Play تنطبق على TWA وتطبيقات WebView على حد سواء. سياسة الرسائل غير المرغوب فيها في Google Play لا تسمح بالتطبيقات التي هدفها الأساسي عرض موقع ويب داخل webview دون إذن من مالك الموقع. غلّف موقعك أنت، أو موقعًا لديك إذن به. كما لا يسمح Play بالتطبيقات ذات الوظائف المحدودة جدًا، لذا أعطِ الناس سببًا لتثبيت التطبيق بدل الاكتفاء بإشارة مرجعية.
أيها تختار؟
- تريد فقط زر تثبيت على موقعك: PWA.
- لديك PWA ناضج على نطاقك الخاص وتريده على Play بمحتوى ويب مباشر: TWA.
- تريد ميزات أصلية، وHTML يعمل دون اتصال، وقوائم، وتحكمًا كاملًا، أو ليس لديك PWA: تطبيق WebView.
كيف يفعل Free HTML to APK ذلك
ينشئ Free HTML to APK تطبيقات WebView. يمكنك البدء من رابط موقع ويب أو ملفات HTML أو ملف ZIP أو مجلد، والحصول على ملف APK موقّع بالإضافة إلى ملف AAB لـ Google Play. أداة الإنشاء على موقع freehtmltoapk.com مجانية، ولا تحتاج إلى حساب، ولا تضيف علامة مائية، وتطبيق Android «HTML to APK: Website to App» يفعل الشيء نفسه على هاتفك.
يمكن لصفحاتك استخدام جسر JavaScript المدمج FreeApp لميزات الهاتف مثل الاهتزاز، والإشعارات، والكاميرا، ومسح رموز QR والباركود، والموقع، ومشاركة الملفات. الاستدعاء بسيط مثل هذا:
<button onclick="FreeApp.vibrate(30)">Tap</button>
تطبيقات HTML المضمّنة تعمل بالكامل دون اتصال، وتطبيقات المواقع تعرض صفحة ودّية عند عدم الاتصال وتعيد الاتصال عند عودة الشبكة. ولأنه تطبيق WebView، لا يوجد ملف Digital Asset Links لإعداده. إذا كان لديك PWA بالفعل، فإن service worker الخاص به يستمر في العمل عندما يحمّله التطبيق عبر الرابط.
اقرأ المزيد في PWA إلى APK أو من موقع ويب إلى تطبيق، واختر الطريق الذي يناسب مشروعك.