تنظیم امکان بازگشت و رفتار دکمه بازگشت در اپسان

مقدمه

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


استفاده از رفتار پیش‌فرض

رفتار پیش‌فرض اپسان بر اساس تعداد صفحات موجود در تاریخچه عمل می‌کند:

  1. بسته شدن اپلیکیشن: اگر تعداد صفحات موجود در تاریخچه ≤ 1 باشد، اپلیکیشن بسته می‌شود.
  2. بازگشت به صفحه قبلی: اگر تاریخچه بیشتر از 1 صفحه داشته باشد، به صفحه قبلی بازمی‌گردد. در صورت تعریف customBackHandler، این تابع به جای رفتار پیش‌فرض اجرا می‌شود.

پاک کردن تاریخچه

برای پاک کردن تاریخچه و تنظیم تعداد صفحات موجود، می‌توانید از تابع پیش‌فرض clearBackStack استفاده کنید:

AppsanWeb.getAvailableHistoryCountProvider()?.clearBackStack();

قابلیت customBackHandler در AppsanWeb

  1. تعریف customBackHandler: این متغیر می‌تواند تابع شما را ذخیره کند که هنگام فشار دادن دکمه بازگشت اجرا می‌شود.
  2. متد setCustomBackHandler: برای تنظیم تابع سفارشی استفاده می‌شود:
    AppsanWeb.setCustomBackHandler(() => {
      // handle back here your way
    });

توجه: هنگام استفاده از تابع سفارشی، رفتار پیش‌فرض اجرا نمی‌شود و می‌توانید با اکشن app/forceback بازگشت انجام دهید.


سفارشی‌سازی امکان بازگشت

برای تعریف رفتار خاص بازگشت، یک کلاس جدید از رابط AvailableBackCountProvider پیاده‌سازی کنید. این رابط شامل متدهای زیر است:

  • getAvailableHistoryCount(): تعداد صفحات موجود را برمی‌گرداند.
  • clearBackStack(): تاریخچه را پاک و بازنشانی می‌کند.

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

import { AppsanWeb, AvailableBackCountProvider } from "./AppsanWeb";

export class DisableBackAndCloseProvider implements AvailableBackCountProvider { getAvailableHistoryCount(): number { return 1; } clearBackStack(): void {} }

با بازگرداندن ۱ در getAvailableHistoryCount()، بازگشت غیرفعال و مینی‌اپ بسته می‌شود.

نمونه پیاده‌سازی ارائه‌دهنده سفارشی تأیید قبل از بازگشت

import { AppsanWeb, AvailableBackCountProvider } from "./AppsanWeb";

export class ConfirmableBackCountProvider implements AvailableBackCountProvider { private availableHistoryCount = 1;

constructor() { const self = this; (function (h: any) { const push = h.pushState; h.pushState = function(state: any) { self.onPushState(); return push.apply(h, arguments); }; })(window.history); window.addEventListener("popstate", () => this.onPopState()); AppsanWeb.setCustomBackHandler(() => this.showConfirmationDialog()); }

onPushState() { this.availableHistoryCount++; (AppsanWeb as any).instance.post((AppsanWeb as any).MESSAGE_TYPE_AVAILABLE_HISTORY_COUNT, this.availableHistoryCount); } onPopState() { this.availableHistoryCount--; (AppsanWeb as any).instance.post((AppsanWeb as any).MESSAGE_TYPE_AVAILABLE_HISTORY_COUNT, this.availableHistoryCount); }

getAvailableHistoryCount(): number { return this.availableHistoryCount; } clearBackStack(): void { this.availableHistoryCount = 1; (AppsanWeb as any).instance.post((AppsanWeb as any).MESSAGE_TYPE_AVAILABLE_HISTORY_COUNT, 1); }

private showConfirmationDialog(): void { if (confirm("آیا مطمئن هستید می‌خواهید بازگشت کنید؟")) history.back(); } }

نحوه استفاده

  1. نمونه سازنده را بسازید:
    const backHandler = new ConfirmableBackCountProvider();
  2. کلاس به‌طور خودکار customBackHandler را تنظیم می‌کند.