أحب الموسيقى المعدنية من مختلف الاتجاهات. لتتبع المنتجات الجديدة ، قمت بعمل محلل يبحث عن ألبومات جديدة ووضعها في قاعدة البيانات. أثناء وجود التطبيق ، كاد أنامس المحلل اللغوي ، على الرغم من أنه بعيد عن المثالية ، لكن الواجهة الأمامية تم إعادة بنائها عدة مرات.

تحت القطة هي قصة حول كيفية نسخ التطبيق من رد الفعل الأصلي إلى Svelte ونشرته على Google Play.
إنشاء التطبيق
تم كتابة الإصدار الأول من Metalz في رد فعل و mobx الدولة شجرة . ثم أردت وضع التطبيق على Google Play وإعادة صياغة كل شيء على رد الفعل الأصلي باستخدام قالب المعرض . عندما طلبت Google ، المعرضة لخطر الحذف ، إصدار 64 بت ، أعيد كتابة كل شيء على Svelte . للمقارنة ، وزن البناء على رد الفعل ~ 300 كيلو بايت ، والبناء على Svelte ~ 90 كيلو بايت. لم أقم بإجراء أي تحسينات للتجميع ، بل القوالب القياسية فقط.
الإعلان الإعلاني
في تطبيق رد الفعل الأصلي ، استخدمت إعلانات الغوغاء الإعلانية ، لكنها لا تدعم منصة الويب. قررت توصيل AdSence ، لكنني لم أتجاوز الإشراف. أشار الرفض إلى عدم وجود محتوى على موقعي وتم تقديم توصيات لكتابة مقالات ذات جودة. وأنا ، كما كان ، ليس لدي مقالات ، لذلك فشل الاستئناف أيضًا. اضطررت لتغيير مزود الإعلانات. وقع الاختيار على شبكة إعلانات ياندكس. قمت بعمل مكون Svelte ، في الوحدة النمطية التي يتم إخراج عداد كتلة الإعلانات منها. إنه واحد لجميع مثيلات المكون ، بحيث يمكنك استخدام هذا الخيار في أشرطة مع التمرير لانهائي.
Ad.svelte<script context="module"> let id = 1; </script> <script> import { onMount } from "svelte"; const internalId = id; onMount(() => { id += 1; (function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "RA--1", renderTo: `yandex_rtb_R-A--${internalId}`, async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(window, window.document, "yandexContextAsyncCallbacks"); }); </script> <div id={`yandex_rtb_R-A--${internalId}`} />
مضيفا وظائف PWA
بعد كتابة الطلب ، كان لدي سؤال حول التجميع. لا يمكن أن يضيف القالب svelte علامة تجزئة إلى حزمة. لم أقم بإعداد المجمع ، لكنني أخذت سابر على الفور. من خارج الصندوق ، حصلت على مجموعة حزم مع التجزئة ، SSR ، PWA ، والتوجيه. يمكنك قراءة المزيد في الوثائق .
بناء apk
تبين أن بناء التطبيق بسيط للغاية. لقد استخدمت هذه التعليمات .
لا تنسَ استبدال الرموز بأيقوناتك ، فهذا لم يرد ذكره في البرنامج التعليمي.
حجم apk مع PWA داخل تحولت ~ 1.3mb. وزن حزمة رد الفعل الأصلي ~ 16.4 ميغابايت. لم أقم بإجراء أي تحسينات للتجميع.
نشر إلى Google Play
بعد إرسال طلب التحقق ، تلقيت رفضًا للنشر بسبب انتهاك الشروط.
حالة التطبيق MetalZ - إصدارات موسيقى معدنية جديدة (com.az67128.metalz): تم تعليقها من Google Play بسبب انتهاك السياسة
أثناء المراجعة ، وجدنا أن تطبيقك ينتهك سياسة Webviews و Affiliate Spam . لا نسمح للتطبيقات التي يكون هدفها الأساسي هو توجيه حركة المرور التابعة إلى موقع ويب أو تقديم عرض ويب لموقع ويب دون إذن من مالك الموقع أو مسؤوله.
بعد ذلك ، تقدمت بطلب استئناف ، حيث أشرت إلى أن إجراء تأكيد TWA قد تم تنفيذه ، وأرفقت شاشة Generator List Generator and Tester ورابطًا إلى ملف originlinks.json.
تم إلغاء قفل التطبيق بعد يومين. عند القيام بذلك ، تلقيت نصيحة من الدعم:
في المستقبل ، إذا كان لديك دليل على استخدام الملكية الفكرية الخاصة بطرف ثالث ، فيمكنك إرسالها إلى فريقنا مسبقًا باستخدام هذا النموذج. يمكن أيضًا العثور على الرابط في صفحة سرد المتجر في قسم الوصف الكامل.
لذلك ، إذا كنت تخطط لنشر PWA وتريد تجنب المشكلات ، فأرسل إثبات ملكية النطاق مقدمًا.
إذا كنت تخطط للإعلان في التطبيق الخاص بك ، فقد يتم رفض نشر في غياب سياسة الاستخدام. ساعد منشئ سياسة الخصوصية التطبيق لي.
استنتاج
كان نشر تطبيق PWA على Google Play أسهل مما كنت أتوقع. من الايجابيات ، حصلت على:
- تطبيق خفيف الوزن
- قاعدة رمز واحد ؛
- تحديثات بدون Google Play.
يمكن الاطلاع على كود مصدر تطبيق Svelte في gitlab'e