اضافه کردن اعلان‌های فشار به یک برنامه وب

پیام‌رسانی فشاری راهی ساده و مؤثر برای تعامل مجدد با کاربران شما فراهم می‌کند. در این کد لبه، یاد خواهید گرفت که چگونه اعلان‌های فشاری را به برنامه وب خود اضافه کنید.

چیزی که یاد خواهید گرفت

  • نحوه عضویت و لغو اشتراک کاربر برای پیام‌رسانی فشاری
  • نحوه رسیدگی به پیام های فشار ورودی
  • نحوه نمایش اعلان
  • چگونه به کلیک های اعلان پاسخ دهیم

آنچه شما نیاز دارید

  • Chrome 52 یا بالاتر
  • وب سرور برای Chrome ، یا وب سرور انتخابی شما
  • یک ویرایشگر متن
  • دانش اولیه HTML، CSS، جاوا اسکریپت و ابزار توسعه کروم
  • کد نمونه (به راه اندازی مراجعه کنید.)

نمونه کد را دانلود کنید

شما دو گزینه برای دریافت کد نمونه این کد لبه دارید:

  • کلون کردن مخزن Git:
git clone https://github.com/GoogleChrome/push-notifications.git
  • دانلود فایل ZIP:

کد منبع را دانلود کنید

اگر منبع را به عنوان یک فایل ZIP دانلود کنید، با باز کردن آن یک پوشه root push-notifications-master اختیار شما قرار می گیرد.

وب سرور را نصب و تأیید کنید

اگرچه شما آزاد هستید که از وب سرور خود استفاده کنید، اما این کد لبه طوری طراحی شده است که با برنامه Web Server for Chrome به خوبی کار کند. اگر هنوز آن برنامه را نصب نکرده‌اید، می‌توانید آن را از فروشگاه وب Chrome دریافت کنید:

وب سرور را برای کروم نصب کنید

پس از نصب وب سرور برای برنامه کروم، روی میانبر Apps در نوار نشانک ها کلیک کنید:

در پنجره برنامه ها، روی نماد وب سرور کلیک کنید:

در ادامه این گفتگو را خواهید دید که به شما امکان می دهد وب سرور محلی خود را پیکربندی کنید:

روی دکمه Choose folder کلیک کنید و پوشه app را در پوشه push-notifications که دانلود کرده اید انتخاب کنید. این به شما امکان می‌دهد تا کارهای در حال انجام خود را از طریق URL نشان داده شده در بخش URL(های) وب سرور در گفتگو ارائه دهید.

در زیر گزینه ها ، کادر کنار نشان دادن خودکار index.html را علامت بزنید ، همانطور که در زیر نشان داده شده است:

سپس با کشیدن وب سرور: STARTED سرور را متوقف کرده و مجدداً راه اندازی کنید.

روی URL سرور وب کلیک کنید تا از سایت خود در مرورگر وب خود بازدید کنید. شما باید صفحه ای را ببینید که شبیه این است - اگرچه نسخه شما ممکن است 127.0.0.1:8887 را به عنوان آدرس نشان دهد:

00-push-codelab.png

همیشه کارگر سرویس را به روز کنید

در طول توسعه، اطمینان از اینکه کارمند خدمات شما همیشه به‌روز است و آخرین تغییرات را دارد، مفید است.

برای تنظیم این مورد در کروم:

  1. به تب Push Codelab بروید.
  2. DevTools را باز کنید: Ctrl-Shift-I در ویندوز و لینوکس، Cmd-Option-I در macOS.
  3. پنل Application را انتخاب کنید، روی تب Service Workers کلیک کنید و کادر بررسی Update on Reload را علامت بزنید. وقتی این چک باکس فعال باشد، هر بار که صفحه مجدداً بارگیری می شود، سرویس کار به اجبار به روز می شود.

کد تکمیل شده

در فهرست app خود، توجه کنید که یک فایل خالی به نام sw.js . این فایل خدمتکار شما خواهد بود. در حال حاضر، می تواند خالی بماند. بعداً به آن کد اضافه خواهید کرد.

ابتدا باید این فایل را به عنوان سرویس دهنده خود ثبت کنید.

صفحه app/index.html شما scripts/main.js را بارگیری می کند. شما سرویس دهنده خود را در این فایل جاوا اسکریپت ثبت می کنید.

کد زیر را به scripts/main.js اضافه کنید:

if ('serviceWorker' in navigator && 'PushManager' in window) {
  console.log('Service Worker and Push are supported');

  navigator.serviceWorker.register('sw.js')
  .then(function(swReg) {
    console.log('Service Worker is registered', swReg);

    swRegistration = swReg;
  })
  .catch(function(error) {
    console.error('Service Worker Error', error);
  });
} else {
  console.warn('Push messaging is not supported');
  pushButton.textContent = 'Push Not Supported';
}

این کد بررسی می کند که آیا سرویس دهنده ها و پیام های فشاری توسط مرورگر شما پشتیبانی می شوند یا خیر. اگر آنها پشتیبانی شوند، کد فایل sw.js شما را ثبت می کند.

آن را امتحان کنید

با رفرش کردن تب Push Codelab در مرورگر، تغییرات خود را بررسی کنید.

بررسی کنید که کنسول در Chrome DevTools for a Service Worker is registered message ، مانند:

کلیدهای سرور برنامه را دریافت کنید

برای کار با این کد لبه، باید کلیدهای سرور برنامه را تولید کنید. می توانید این کار را در سایت همراه انجام دهید: web-push-codelab.glitch.me

در اینجا می توانید یک جفت کلید عمومی و خصوصی ایجاد کنید.

push-codelab-04-companion.png

کلید عمومی خود را به جای مقدار <Your Public Key> در scripts/main.js کپی کنید:

const applicationServerPublicKey = '<Your Public Key>';

مهم: هرگز نباید کلید خصوصی خود را در برنامه وب خود قرار دهید!

کد تکمیل شده

در حال حاضر، دکمه فعال کردن برنامه وب غیرفعال است و نمی توان روی آن کلیک کرد. این به این دلیل است که تمرین خوبی است که دکمه فشاری را به طور پیش‌فرض غیرفعال کنید و بعد از اینکه متوجه شدید که پیام‌رسانی فشاری توسط مرورگر پشتیبانی می‌شود و بتوانید بررسی کنید که کاربر در حال حاضر مشترک پیام‌رسانی است یا خیر، آن را فعال کنید.

شما باید دو تابع در scripts/main.js ایجاد کنید:

  • initializeUI ، برای بررسی اینکه آیا کاربر در حال حاضر مشترک است یا خیر
  • updateBtn ، برای فعال کردن دکمه خود و تغییر متن بسته به اینکه کاربر مشترک است یا خیر

یک تابع initializeUI را به main.js اضافه کنید:

function initializeUI() {
  // Set the initial subscription value
  swRegistration.pushManager.getSubscription()
  .then(function(subscription) {
    isSubscribed = !(subscription === null);

    if (isSubscribed) {
      console.log('User IS subscribed.');
    } else {
      console.log('User is NOT subscribed.');
    }

    updateBtn();
  });
}

روش جدید Yor از swRegistration مرحله قبل استفاده می کند، ویژگی pushManager را از آن دریافت می کند و getSubscription() را روی آن فراخوانی می کند.

pushManager . getSubscription() را برمی‌گرداند که در صورت وجود، با اشتراک فعلی حل می‌شود. در غیر این صورت، null را برمی گرداند. با این کار، می توانید بررسی کنید که آیا کاربر قبلاً مشترک شده است یا خیر، مقدار isSubscribed را تنظیم کنید و سپس updateBtn() را برای به روز رسانی دکمه فراخوانی کنید.

تابع updateBtn() را به main.js اضافه کنید:

function updateBtn() {
  if (isSubscribed) {
    pushButton.textContent = 'Disable Push Messaging';
  } else {
    pushButton.textContent = 'Enable Push Messaging';
  }

  pushButton.disabled = false;
}

این عملکرد دکمه را فعال می کند و بسته به اینکه کاربر مشترک باشد یا خیر، متن دکمه را تغییر می دهد.

آخرین کاری که باید انجام دهید این است که وقتی سرویس کار شما در main.js ثبت شده است، initializeUI() را فراخوانی کنید:

navigator.serviceWorker.register('sw.js')
.then(function(swReg) {
  console.log('Service Worker is registered', swReg);

  swRegistration = swReg;
  initializeUI();
})

آن را امتحان کنید

برگه Push Codelab را رفرش کنید. باید ببینید که دکمه Enable Push Messaging اکنون فعال است (می توانید روی آن کلیک کنید) و باید ببینید User is NOT subscribed است.

با پیشروی در بقیه این کدها، هر زمان که مشترک شوید یا لغو اشتراک کنید، باید متن دکمه را تغییر دهید.

کد تکمیل شده

در حال حاضر، دکمه Enable Push Messaging شما کار خاصی انجام نمی دهد. بیایید آن را درست کنیم.

در تابع initializeUI() ، یک کلیک شنونده برای دکمه خود اضافه کنید:

function initializeUI() {
  pushButton.addEventListener('click', function() {
    pushButton.disabled = true;
    if (isSubscribed) {
      // TODO: Unsubscribe user
    } else {
      subscribeUser();
    }
  });

  // Set the initial subscription value
  swRegistration.pushManager.getSubscription()
  .then(function(subscription) {
    isSubscribed = !(subscription === null);

    updateSubscriptionOnServer(subscription);

    if (isSubscribed) {
      console.log('User IS subscribed.');
    } else {
      console.log('User is NOT subscribed.');
    }

    updateBtn();
  });
}

وقتی کاربر روی دکمه کلیک می‌کند، دکمه را غیرفعال می‌کنید تا مطمئن شوید کاربر نمی‌تواند برای بار دوم روی آن کلیک کند، زیرا اشتراک در پیام‌رسانی فشاری ممکن است مدتی طول بکشد.

سپس در صورتی که کاربر در حال حاضر مشترک نباشد، subscribeUser() را فراخوانی می کنید. برای این کار، باید کد زیر را در scripts/main.js قرار دهید:

function subscribeUser() {
  const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
  swRegistration.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: applicationServerKey
  })
  .then(function(subscription) {
    console.log('User is subscribed.');

    updateSubscriptionOnServer(subscription);

    isSubscribed = true;

    updateBtn();
  })
  .catch(function(error) {
    console.error('Failed to subscribe the user: ', error);
    updateBtn();
  });
}

بیایید به این موضوع بپردازیم که این کد چه کاری انجام می دهد و چگونه کاربر را برای ارسال پیام های فشاری مشترک می کند.

ابتدا، کلید عمومی سرور برنامه را که با URL ایمن کدگذاری شده Base64 است، می گیرید و آن را به UInt8Array تبدیل می کنید، زیرا این ورودی مورد انتظار فراخوانی subscribe() است. تابع urlB64ToUint8Array() در بالای scripts/main.js قرار دارد.

پس از اینکه مقدار را تبدیل کردید، متد subscribe() را در pushManager خود فراخوانی می‌کنید و کلید عمومی سرور برنامه خود و مقدار userVisibleOnly: true را ارسال می‌کنید.

const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
swRegistration.pushManager.subscribe({
  userVisibleOnly: true,
  applicationServerKey: applicationServerKey
})

پارامتر userVisibleOnly تضمینی است که هر بار که یک پیام فشار ارسال می شود، یک اعلان نشان می دهد. در حال حاضر، این مقدار مورد نیاز است و باید درست باشد.

فراخوانی subscribe() یک وعده را برمی گرداند که پس از مراحل زیر برطرف می شود:

  1. کاربر اجازه نمایش اعلان ها را داده است.
  2. مرورگر یک درخواست شبکه به یک سرویس فشار ارسال کرده است تا داده های مورد نیاز برای ایجاد یک PushSubscription را دریافت کند.

در صورت موفقیت آمیز بودن این مراحل، وعده subscribe() با یک PushSubscription حل خواهد شد. اگر کاربر مجوز اعطا نکند یا مشکلی برای عضویت کاربر وجود داشته باشد، قول با خطا رد می شود. این به شما زنجیره وعده زیر را در لبه کد شما می دهد:

swRegistration.pushManager.subscribe({
  userVisibleOnly: true,
  applicationServerKey: applicationServerKey
})
.then(function(subscription) {
  console.log('User is subscribed.');

  updateSubscriptionOnServer(subscription);

  isSubscribed = true;

  updateBtn();

})
.catch(function(err) {
  console.log('Failed to subscribe the user: ', err);
  updateBtn();
});

با این کار، یا یک اشتراک دریافت می‌کنید و کاربر را به عنوان مشترک رفتار می‌کنید یا با خطا مواجه می‌شوید و آن را به کنسول وارد می‌کنید. در هر دو حالت، updateBtn() را فراخوانی می کنید تا مطمئن شوید که دکمه دوباره فعال شده و متن مناسبی دارد.

در یک برنامه واقعی، تابع updateSubscriptionOnServer() جایی است که می‌توانید داده‌های اشتراک خود را به پشتیبان ارسال کنید، اما برای Codelab شما به سادگی اشتراک را در UI خود نمایش می‌دهید. تابع زیر را به scripts/main.js اضافه کنید:

function updateSubscriptionOnServer(subscription) {
  // TODO: Send subscription to application server

  const subscriptionJson = document.querySelector('.js-subscription-json');
  const subscriptionDetails =
    document.querySelector('.js-subscription-details');

  if (subscription) {
    subscriptionJson.textContent = JSON.stringify(subscription);
    subscriptionDetails.classList.remove('is-invisible');
  } else {
    subscriptionDetails.classList.add('is-invisible');
  }
}

آن را امتحان کنید

به زبانه Push Codelab بروید، صفحه را رفرش کنید و روی دکمه کلیک کنید. شما باید یک دستور مجوز مانند این را ببینید:

در صورت اعطای مجوز، باید مشاهده کنید User is subscribed شده و به کنسول وارد شده است. متن دکمه به غیرفعال کردن پیام‌رسانی فشاری تغییر می‌کند و می‌توانید اشتراک را به‌عنوان داده‌های JSON در پایین صفحه مشاهده کنید.

کد تکمیل شده

یکی از مواردی که شما هنوز به آن رسیدگی نکرده اید این است که اگر کاربر درخواست مجوز را مسدود کند چه اتفاقی می افتد. این نیاز به توجه منحصر به فردی دارد زیرا اگر کاربر مجوز را مسدود کند، برنامه وب شما نمی تواند درخواست مجوز را دوباره نشان دهد و نمی تواند کاربر را مشترک کند. حداقل باید دکمه فشاری را غیرفعال کنید تا کاربر بداند که نمی توان از آن استفاده کرد.

مکان آشکار برای رسیدگی به این سناریو در تابع updateBtn() است. تنها کاری که باید انجام دهید این است که مقدار Notification.permission را بررسی کنید، مانند:

function updateBtn() {
  if (Notification.permission === 'denied') {
    pushButton.textContent = 'Push Messaging Blocked';
    pushButton.disabled = true;
    updateSubscriptionOnServer(null);
    return;
  }

  if (isSubscribed) {
    pushButton.textContent = 'Disable Push Messaging';
  } else {
    pushButton.textContent = 'Enable Push Messaging';
  }

  pushButton.disabled = false;
}

می‌دانید که اگر مجوز denied شود، کاربر نمی‌تواند مشترک شود و دیگر کاری نمی‌توانید انجام دهید، بنابراین غیرفعال کردن دائمی دکمه بهترین روش است.

آن را امتحان کنید

از آنجایی که قبلاً از مرحله قبل مجوز برنامه وب خود را صادر کرده اید، باید روی i در یک دایره در نوار URL کلیک کنید و مجوز اعلان ها را به استفاده از پیش فرض جهانی (پرسش) تغییر دهید.

بعد از اینکه این تنظیمات را تغییر دادید، صفحه را بازخوانی کنید و روی دکمه Enable Push Messaging کلیک کنید و Block را در گفتگوی مجوز انتخاب کنید. دکمه غیرفعال می شود و متن Push Messaging Blocked را نشان می دهد.

با این تغییر، اکنون می توانید با مراقبت از سناریوهای مجوز احتمالی، کاربر را مشترک کنید.

کد تکمیل شده

قبل از اینکه یاد بگیرید چگونه یک پیام فشار را از باطن خود ارسال کنید، باید در نظر بگیرید که وقتی یک کاربر مشترک یک پیام فشار دریافت می کند، واقعاً چه اتفاقی می افتد.

هنگامی که یک پیام فشار را راه اندازی می کنید، مرورگر پیام فشار را دریافت می کند، متوجه می شود که این فشار برای کدام سرویس دهنده است، آن سرویس دهنده را بیدار می کند و یک رویداد فشار ارسال می کند. باید به این رویداد گوش دهید و در نتیجه یک اعلان نشان دهید.

کد زیر را به فایل sw.js خود اضافه کنید:

self.addEventListener('push', function(event) {
  console.log('[Service Worker] Push Received.');
  console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);

  const title = 'Push Codelab';
  const options = {
    body: 'Yay it works.',
    icon: 'images/icon.png',
    badge: 'images/badge.png'
  };

  event.waitUntil(self.registration.showNotification(title, options));
});

بیایید از طریق این کد قدم برداریم. با افزودن یک شنونده رویداد، به رویدادهای push در کارمند خدمات خود گوش می دهید:

self.addEventListener('push', ... );

(مگر اینکه قبلاً با Web Workers بازی کرده باشید، self احتمالاً جدید است. در یک فایل Service Worker، self به خود Service Worker ارجاع می دهد.)

هنگامی که یک پیام فشار دریافت می‌شود، شنونده رویداد فراخوانی می‌شود و شما با فراخوانی showNotification() در ویژگی registration سرویس‌کار، یک اعلان ایجاد می‌کنید. showNotification() نیاز به title دارد. شما همچنین می توانید یک شی options برای تنظیم پیام بدن، نماد و نشان به آن بدهید. (در زمان نوشتن این نشان فقط در اندروید استفاده می شود.)

const title = 'Push Codelab';
const options = {
  body: 'Yay it works.',
  icon: 'images/icon.png',
  badge: 'images/badge.png'
};
self.registration.showNotification(title, options);

آخرین چیزی که باید در مدیریت رویداد push پوشش دهید، event.waitUntil() است. این روش قول می دهد که مرورگر را قادر می سازد تا سرویس دهنده شما را زنده نگه دارد و تا زمانی که وعده داده شده حل و فصل نشده است کار کند.

برای اینکه درک کد بالا کمی ساده تر شود، می توانید آن را به این صورت بازنویسی کنید:

const notificationPromise = self.registration.showNotification(title, options);
event.waitUntil(notificationPromise);

اکنون که از رویداد فشار عبور کرده اید، بیایید یک رویداد فشار را آزمایش کنیم.

آن را امتحان کنید

با مدیریت رویداد فشار در سرویس‌کار، می‌توانید یک رویداد فشار جعلی را راه‌اندازی کنید تا آزمایش کنید هنگام دریافت پیام چه اتفاقی می‌افتد.

در برنامه وب خود، مشترک پیام‌رسانی فشاری شوید و مطمئن شوید که User IS subscribed شده است. در پنل Application در DevTools، در زیر تب Service Workers ، روی دکمه Push کلیک کنید:

بعد از اینکه روی Push کلیک کردید، یک اعلان مانند زیر را مشاهده خواهید کرد:

توجه: اگر این مرحله جواب نداد، با پیوند Unregister در پنل DevTools Application، سرویس کارمند خود را لغو ثبت نام کنید، منتظر بمانید تا service worker متوقف شود و سپس صفحه را دوباره بارگیری کنید.

کد تکمیل شده

اگر روی یکی از این اعلان ها کلیک کنید، متوجه می شوید که هیچ اتفاقی نمی افتد. می‌توانید با گوش دادن به رویدادهای notificationclick کلیک در سرویس‌کار خود، کلیک‌های اعلان را مدیریت کنید.

با افزودن یک شنونده notificationclick کلیک در sw.js کنید:

self.addEventListener('notificationclick', function(event) {
  console.log('[Service Worker] Notification click received.');

  event.notification.close();

  event.waitUntil(
    clients.openWindow('https://developers.google.com/web')
  );
});

هنگامی که کاربر روی اعلان کلیک می کند، شنونده رویداد notificationclick فراخوانی می شود.

کد ابتدا اعلانی را که روی آن کلیک شده بود می بندد:

event.notification.close();

سپس یک پنجره یا برگه جدید باز می شود که URL https://developers.google.com/web را بارگیری می کند. با خیال راحت این را تغییر دهید.

event.waitUntil(
    clients.openWindow('https://developers.google.com/web/')
  );

event.waitUntil() تضمین می کند که مرورگر قبل از نمایش پنجره یا برگه جدید سرویس Worker را خاتمه نمی دهد.

آن را امتحان کنید

دوباره یک پیام فشار را در DevTools فعال کنید و روی اعلان کلیک کنید. اکنون می بینید که اعلان بسته می شود و یک برگه جدید باز می شود.

مشاهده کرده اید که برنامه وب شما قادر به نمایش اعلان با استفاده از DevTools است و به نحوه بستن اعلان با یک کلیک نگاه کرده اید. مرحله بعدی ارسال یک پیام فشار واقعی است.

به طور معمول، این امر مستلزم ارسال یک اشتراک از یک صفحه وب به یک باطن است. سپس باطن با برقراری تماس API با نقطه پایانی اشتراک، یک پیام فشار ایجاد می کند.

این خارج از محدوده این Codelab است، اما می‌توانید از سایت همراه ( web-push-codelab.glitch.me ) برای راه‌اندازی یک پیام فشار واقعی استفاده کنید. اشتراک را در پایین صفحه خود جایگذاری کنید:

سپس این را در سایت همراه در ناحیه متن اشتراک برای ارسال به جایگذاری کنید:

در قسمت Text to Send ، هر رشته ای را که می خواهید با پیام فشار ارسال کنید اضافه کنید.

روی دکمه Send push message کلیک کنید.

سپس باید یک پیام فشار دریافت کنید. متنی که استفاده کردید به کنسول وارد می شود.

این به شما فرصتی می دهد تا ارسال و دریافت داده را آزمایش کنید و در نتیجه اعلان ها را دستکاری کنید.

برنامه همراه فقط یک سرور گره است که از کتابخانه web-push برای ارسال پیام استفاده می کند. ارزش آن را دارد که web-push-libs org را در GitHub مرور کنید تا ببینید چه کتابخانه هایی برای ارسال پیام های فشار برای شما در دسترس هستند. این بسیاری از جزئیات را برای راه اندازی پیام های فشاری کنترل می کند.

می توانید تمام کدهای سایت همراه را اینجا ببینید .

کد تکمیل شده

تنها چیزی که وجود ندارد، امکان لغو اشتراک کاربر از فشار است. برای انجام این کار باید unsubscribe() را در یک PushSubscription کنید.

به فایل scripts/main.js خود بازگردید، شنونده کلیکی pushButton در initicializeUI initializeUI() را به شکل زیر تغییر دهید:

pushButton.addEventListener('click', function() {
  pushButton.disabled = true;
  if (isSubscribed) {
    unsubscribeUser();
  } else {
    subscribeUser();
  }
});

توجه داشته باشید که اکنون می خواهید یک تابع جدید unsubscribeUser() را فراخوانی کنید. در این تابع، اشتراک فعلی را دریافت می‌کنید و unsubscribe() را روی آن فراخوانی می‌کنید. کد زیر را به scripts/main.js اضافه کنید:

function unsubscribeUser() {
  swRegistration.pushManager.getSubscription()
  .then(function(subscription) {
    if (subscription) {
      return subscription.unsubscribe();
    }
  })
  .catch(function(error) {
    console.log('Error unsubscribing', error);
  })
  .then(function() {
    updateSubscriptionOnServer(null);

    console.log('User is unsubscribed.');
    isSubscribed = false;

    updateBtn();
  });
}

اجازه دهید از طریق این تابع قدم بگذاریم.

ابتدا با فراخوانی getSubscription() اشتراک فعلی را دریافت می کنید:

swRegistration.pushManager.getSubscription()

این یک وعده را برمی گرداند که در صورت وجود، با PushSubscription حل می شود. در غیر این صورت، null را برمی گرداند. اگر اشتراکی وجود دارد، unsubscribe() را روی آن فراخوانی می‌کنید که باعث می‌شود PushSubscription نامعتبر باشد.

swRegistration.pushManager.getSubscription()
.then(function(subscription) {
  if (subscription) {
    // TODO: Tell application server to delete subscription
    return subscription.unsubscribe();
  }
})
.catch(function(error) {
  console.log('Error unsubscribing', error);
})

فراخوانی unsubscribe() یک وعده را برمی گرداند، زیرا ممکن است مدتی طول بکشد تا تکمیل شود. شما آن وعده را برمی گردانید تا next then() در زنجیره منتظر شود تا unsubscribe() تمام شود. همچنین در صورتی که فراخوانی unsubscribe() منجر به خطا شود، یک کنترل کننده catch اضافه می‌کنید. پس از این، می توانید رابط کاربری خود را به روز کنید.

.then(function() {
  updateSubscriptionOnServer(null);

  console.log('User is unsubscribed.');
  isSubscribed = false;

  updateBtn();
})

آن را امتحان کنید

باید بتوانید فعال کردن پیام‌رسانی فشاری یا غیرفعال کردن پیام‌رسانی فشاری را در برنامه وب خود فشار دهید، و گزارش‌ها اشتراک و لغو اشتراک کاربر را نشان می‌دهند.

بابت تکمیل این کد لبه به شما تبریک می گویم!

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

اگر می‌خواهید اعلان‌های فشاری را در سایت خود مستقر کنید، ممکن است علاقه مند باشید که برای مرورگرهای قدیمی یا مرورگرهای غیرمنطبق با استانداردهایی که از GCM استفاده می‌کنند، پشتیبانی اضافه کنید. اینجا بیشتر بیاموزید

بیشتر خواندن

پست های وبلاگ مرتبط