برنامه نویسی

برنامه های وب پیشرو (PWA): تغییر تجربه وب

برنامه‌های وب پیشرو (PWA) برنامه‌های کاربردی وب هستند که از قابلیت‌های وب مدرن برای ارائه تجربه‌ای شبیه برنامه به کاربران استفاده می‌کنند. آنها بهترین برنامه های وب و تلفن همراه را با هم ترکیب می کنند و ویژگی هایی مانند دسترسی آفلاین، اعلان های فشاری و امکان نصب برنامه در صفحه اصلی کاربر را ارائه می دهند.

ویژگی های کلیدی PWA ها

  1. عملکرد آفلاین: PWA ها از سرویس دهنده ها برای ذخیره منابع و فعال کردن دسترسی آفلاین استفاده می کنند.
  2. Push Notifications: PWA ها می توانند اعلان های فشاری را برای تعامل با کاربران ارسال کنند.
  3. قابلیت نصب: کاربران می‌توانند بدون مراجعه به فروشگاه برنامه، PWA را روی دستگاه‌های خود نصب کنند.
  4. طراحی پاسخگو: PWA ها برای کارکرد یکپارچه در دستگاه ها و اندازه های صفحه نمایش مختلف طراحی شده اند.

مزایای PWA ها

  • عملکرد بهبود یافته: زمان بارگذاری سریعتر و تعاملات روانتر.
  • تعامل کاربر پیشرفته: نرخ حفظ بالاتر به دلیل اعلان‌های فشاری و دسترسی آفلاین.
  • توسعه مقرون به صرفه: یک پایگاه کد برای همه پلتفرم ها.

کد مثال برای ساخت PWA

بیایید یک PWA ساده از ابتدا با HTML، CSS و جاوا اسکریپت بسازیم.

1. ساختار HTML


 lang="en">

 charset="UTF-8">
 name="viewport" content="width=device-width, initial-scale=1.0">
</span>My PWA<span class="nt"/>
<span class="nt"><link/> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"styles.css"</span><span class="nt">></span>
<span class="nt"/>
<span class="nt"/>
<span class="nt"/>Welcome to My PWA<span class="nt"/>
<span class="nt"/>This is a simple Progressive Web App.<span class="nt"/>
<span class="nt"><script><![CDATA[<span class="na">src=]]></script></span><span class="s">"app.js"</span><span class="nt">></span>
<span class="nt"/>
<span class="nt"/>
</span></span></span></span></code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action">
    <svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewbox="0 0 24 24" class="highlight-action crayons-icon highlight-action--fullscreen-on"><title>وارد حالت تمام صفحه شوید
    

از حالت تمام صفحه خارج شوید

2. CSS Styling

body {
    font-family: Arial, sans-serif;
    text-align: center;
    margin: 0;
    padding: 0;
    background-color: #f0f0f0;
}

h1 {
    color: #333;
}

p {
    color: #666;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. جاوا اسکریپت برای کارگران خدمات

یک فایل به نام ایجاد کنید service-worker.js:

const CACHE_NAME = 'my-pwa-cache-v1';
consturlsToCache = [
    '/',
    '/styles.css',
    '/app.js'
];

self.addEventListener('install', event => {
event.waitUntil(
caches.open(CACHE_NAME)
            .then(cache => {
                return cache.addAll(urlsToCache);
            })
    );
});

self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request)
            .then(response => {
                return response || fetch(event.request);
            })
    );
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. ثبت نام کارگر خدماتی

کد زیر را به آن اضافه کنید app.js:

if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js')
            .then(registration => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
            })
            .catch(error => {
console.log('ServiceWorker registration failed: ', error);
            });
    });
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. مانیفست برنامه وب

یک فایل به نام ایجاد کنید manifest.json:

{
    "name": "My PWA",
    "short_name": "PWA",
    "start_url": "https://dev.to/",
    "display": "standalone",
    "background_color": "#ffffff",
    "theme_color": "#000000",
    "icons": [
        {
            "src": "icon.png",
            "sizes": "192x192",
: "type": "image/png"
        }
    ]
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اضافه کردن Push Notifications به PWA شما

اکنون که همه چیز را در مورد PWA می دانیم، بیایید نحوه اضافه کردن اعلان های فشاری را بدانیم. اعلان‌های فشاری به شما این امکان را می‌دهند که حتی زمانی که کاربران فعالانه از برنامه شما استفاده نمی‌کنند، پیام ارسال کنید. این می تواند به افزایش تعامل و حفظ کاربر کمک کند.

راه اندازی Push Notifications

  1. درخواست مجوز اعلان ابتدا، باید برای ارسال اعلان‌ها از کاربر اجازه درخواست کنید. کد زیر را به آن اضافه کنید app.js:
if ('Notification' in window &&navigator.serviceWorker) {
Notification.requestPermission(status => {
console.log('Notification permission status:', status);
    });
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ثبت نام برای Push Notifications در مرحله بعد، باید برای Push Notifications با سرویس Push ثبت نام کنید. این مثال از Push API استفاده می کند:
function subscribeUserToPush() {
navigator.serviceWorker.ready.then(registration => {
constsubscribeOptions = {
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(
                'YOUR_PUBLIC_VAPID_KEY'
            )
        };

        return registration.pushManager.subscribe(subscribeOptions);
    }).then(pushSubscription => {
console.log('Received PushSubscription:', JSON.stringify(pushSubscription));
        // Send the subscription to your server
    }).catch(error => {
console.error('Error during getSubscription()', error);
    });
}

function urlBase64ToUint8Array(base64String) {
const padding = '='.repeat((4 - base64String.length % 4) % 4);
const base64 = (base64String + padding)
        .replace(/-/g, '+')
        .replace(/_/g, '/');

constrawData = window.atob(base64);
constoutputArray = new Uint8Array(rawData.length);

    for (let i = 0; i<rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
    }
    return outputArray;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

جایگزین کردن 'YOUR_PUBLIC_VAPID_KEY' با کلید VAPID عمومی واقعی شما.

  1. مدیریت رویدادهای فشاری در Service Worker کد زیر را به آن اضافه کنید service-worker.js برای رسیدگی به رویدادهای فشار:
self.addEventListener('push', event => {
const data = event.data.json();
const options = {
        body: data.body,
        icon: 'icon.png',
        badge: 'badge.png'
    };

event.waitUntil(
self.registration.showNotification(data.title, options)
    );
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ارسال اعلان‌های فشاری از سرور برای ارسال اعلان‌های فشاری، باید یک درخواست POST با جزئیات اشتراک به سرویس فشار ارسال کنید. در اینجا یک مثال با استفاده از Node.js و the آورده شده است web-push کتابخانه:
constwebPush = require('web-push');

constvapidKeys = {
publicKey: 'YOUR_PUBLIC_VAPID_KEY',
privateKey: 'YOUR_PRIVATE_VAPID_KEY'
};

webPush.setVapidDetails(
    'mailto:your-email@example.com',
vapidKeys.publicKey,
vapidKeys.privateKey
);

constpushSubscription = {
    endpoint: 'USER_SUBSCRIPTION_ENDPOINT',
    keys: {
auth: 'USER_AUTH_KEY',
        p256dh: 'USER_P256DH_KEY'
    }
};

const payload = JSON.stringify({
    title: 'Hello!',
    body: 'This is a push notification.'
});

webPush.sendNotification(pushSubscription, payload)
    .then(response =>console.log('Push notification sent:', response))
    .catch(error =>console.error('Error sending push notification:', error));
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لطفا تعویض کنید 'YOUR_PUBLIC_VAPID_KEY'، 'YOUR_PRIVATE_VAPID_KEY'، 'USER_SUBSCRIPTION_ENDPOINT'، 'USER_AUTH_KEY'، و 'USER_P256DH_KEY' با ارزش های واقعی شما

نتیجه

با افزودن اعلان‌های فشاری به PWA خود، می‌توانید کاربران را درگیر و در جریان به‌روزرسانی‌ها یا محتوای جدید نگه دارید. این می تواند به افزایش حفظ کاربر و بهبود تجربه کلی کاربر کمک کند. کد نویسی مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا