تحسينات تطبيقات الويب التقدمية PWA
بعد التحسينات التي أُعلن عنها في وقت سابق من هذا الأسبوع، لدينا مجموعة أخرى من التحسينات لنقدمها لكم اليوم، بفضل @digitalpoint مجددًا! هذه المرة سنركز على بعض التحسينات لتطبيقات الويب التقدمية والتي قد يكون البعض منكم مألوفًا بها إذا كنتم تستخدمون إضافة [DigitalPoint] PWA.
تحرير مظهر تطبيق الويب
لقد كنا نستخدم مظهر تطبيق الويب منذ فترة، ولكن مع بدء إصدار XenForo 2.4، ستتمكن من تعديل مظهر تطبيق الويب باستخدام خيار

بالإضافة إلى إضافة خصائص إضافية، يمكنك أيضًا استبدال الخصائص الحالية. هناك موارد متعددة توثق الخيارات المتوافقة (والتجريبية!).
تسجيل الدخول التلقائي بعد تثبيت PWA
يحتوي مظهر الويب الآن على رمز فريد خاص داخل خاصية start_url، مما يسمح للمستخدمين عبر جميع المتصفحات بتسجيل الدخول تلقائيًا بعد تثبيت PWA.
تحديثات تلقائية لعداد الشارات
سواء كنت تتنقل بين علامات التبويب في متصفح عادي أو تقوم بإطلاق تطبيق PWA المثبت، ستعمل هذه العملية الآن على تحديث عدادات الشارات -- مما يعني أنه لا يلزم إعادة تحميل الصفحة أو التنقل لتحديث أحدث حسابات الصندوق الوارد والتنبيهات.
إشعار إشعارات الدفع بشكل أكثر بروزًا
عند تثبيت PWA للمرة الأولى، سيتم عرض إشعار إشعارات الدفع بشكل أكثر بروزًا.
اشتراكات إشعارات الدفع الأكثر موثوقية
في بعض الحالات، قد "تفقد" بعض المتصفحات اشتراكات إشعارات الدفع تحت ظروف معينة. يحدث هذا بشكل أساسي على Safari (macOS و iOS) ولكن، من الناحية النظرية، قد يصل هذا السلوك في النهاية إلى محركات متصفحات أخرى بما في ذلك المتصفحات المعتمدة على Chromium و Firefox. يتعلق ذلك بالحاجة إلى اشتراكات إشعارات الدفع التي تتطلب إيماءات فعلية من المستخدم بدلاً من أن يتم تفعيلها برمجيًا. لقد تم إعادة تصميم منطق اشتراك إشعارات الدفع بالكامل في XenForo 2.4، مما سيتجنب هذه السيناريوهات - خاصة عندما يتم تفعيل أشياء مثل التحقق من الهوية الثنائية (2FA).
هل يمكن إرسال إشعارات دفع من لوحة التحكم الإدارية؟
من الناحية الفنية، لم يتم تنفيذ ذلك بعد. على الرغم من أننا نود معرفة آرائكم حول ما إذا كانت هذه ستكون إضافة مفيدة. تسمح إضافة PWA الخاصة بـ DigitalPoint للمسؤولين بإرسال إشعارات دفع إلى المستخدمين بناءً على معايير معينة. هذا مشابه لـ "تنبيه المستخدمين"، "إرسال بريد إلكتروني للمستخدمين" و "مراسلة المستخدمين". إنه متكرر إلى حد ما مع "تنبيه المستخدمين" حيث يتم بالفعل إرسال إشعارات دفع بالإضافة إلى التنبيهات لأي مستخدمين قاموا بتمكين إشعارات الدفع. يمكن تنفيذ "دفع المستخدمين" من الإضافة إذا كانت هناك حالات استخدام معقولة لذلك. فقط دعنا نعرف أدناه!
تعزيز حماية CSRF
بينما تُعتبر هذه أيضًا ميزة من إضافة @digitalpoint، فإننا نبرزها بشكل منفصل حيث قمنا بتوسيع نطاقها لتغطية المزيد من حالات الاستخدام. إنها أيضًا تغيير تقني أكثر خلف الكواليس بدلاً من أن تكون شيئًا يواجه المستخدم.
في المتصفحات المدعومة، نستخدم الآن Metadata Fetch للحد من هجمات تزوير الطلب عبر المواقع (CSRF)، مستبدلين النهج التقليدي القائم على الرموز. هذه ميزة جديدة نسبيًا، ولكنها مدعومة من قبل جميع المتصفحات الحديثة. ستعود المتصفحات القديمة بسلاسة إلى طريقة الرموز القديمة. يساعد هذا التغيير في تجنب المشاكل الشائعة مع الرموز المنتهية الصلاحية، خاصةً على الهواتف المحمولة، أو عند استخدام تخزين الذاكرة المؤقتة مثل Cloudflare لتقديم محتوى الضيوف.
بالإضافة إلى ذلك، قمنا بإلغاء استخدام وضع الرموز في الطلبات
بالنسبة للمطورين
كما ذُكر، هناك معالج جديد
لقد قمنا أيضًا بتقديم إضافة وحدة تحكم
أخيرًا، يتم الآن استخدام Fetch Metadata لمنع تضمين عناوين URL كصور. هذه الحماية تلقائية، حتى بدون استدعاء طريقة
المصدر :
xenforo.com
بعد التحسينات التي أُعلن عنها في وقت سابق من هذا الأسبوع، لدينا مجموعة أخرى من التحسينات لنقدمها لكم اليوم، بفضل @digitalpoint مجددًا! هذه المرة سنركز على بعض التحسينات لتطبيقات الويب التقدمية والتي قد يكون البعض منكم مألوفًا بها إذا كنتم تستخدمون إضافة [DigitalPoint] PWA.
تحرير مظهر تطبيق الويب
لقد كنا نستخدم مظهر تطبيق الويب منذ فترة، ولكن مع بدء إصدار XenForo 2.4، ستتمكن من تعديل مظهر تطبيق الويب باستخدام خيار
additionalWebAppManifest الجديد.
بالإضافة إلى إضافة خصائص إضافية، يمكنك أيضًا استبدال الخصائص الحالية. هناك موارد متعددة توثق الخيارات المتوافقة (والتجريبية!).
JSON:
{
"name": "XF 2.4",
"short_name": "XF 2.4",
"description": "Community platform by XenForo®",
"icons": [
{
"src": "/data/assets/logo/xenforo-icon-large.png",
"sizes": "192x192",
"purpose": "any"
},
{
"src": "/data/assets/logo/xenforo-icon-large.png",
"sizes": "192x192",
"purpose": "maskable"
},
{
"src": "/data/assets/logo/xenforo-icon-large.png",
"sizes": "512x512",
"purpose": "any"
},
{
"src": "/data/assets/logo/xenforo-icon-large.png",
"sizes": "512x512",
"purpose": "maskable"
}
],
"lang": "en-US",
"dir": "ltr",
"display": "standalone",
"scope": "/",
"id": "/?_pwa=1",
"start_url": "/?_pwa=BkGzMt_ojcv1jsEts8Rl26Zca2M1IH9y",
"background_color": "#ebebeb",
"theme_color": "#0f578a",
"orientation": "portrait",
"categories": [
"social",
"lifestyle"
]
}
تسجيل الدخول التلقائي بعد تثبيت PWA
يحتوي مظهر الويب الآن على رمز فريد خاص داخل خاصية start_url، مما يسمح للمستخدمين عبر جميع المتصفحات بتسجيل الدخول تلقائيًا بعد تثبيت PWA.
تحديثات تلقائية لعداد الشارات
سواء كنت تتنقل بين علامات التبويب في متصفح عادي أو تقوم بإطلاق تطبيق PWA المثبت، ستعمل هذه العملية الآن على تحديث عدادات الشارات -- مما يعني أنه لا يلزم إعادة تحميل الصفحة أو التنقل لتحديث أحدث حسابات الصندوق الوارد والتنبيهات.
إشعار إشعارات الدفع بشكل أكثر بروزًا
عند تثبيت PWA للمرة الأولى، سيتم عرض إشعار إشعارات الدفع بشكل أكثر بروزًا.
اشتراكات إشعارات الدفع الأكثر موثوقية
في بعض الحالات، قد "تفقد" بعض المتصفحات اشتراكات إشعارات الدفع تحت ظروف معينة. يحدث هذا بشكل أساسي على Safari (macOS و iOS) ولكن، من الناحية النظرية، قد يصل هذا السلوك في النهاية إلى محركات متصفحات أخرى بما في ذلك المتصفحات المعتمدة على Chromium و Firefox. يتعلق ذلك بالحاجة إلى اشتراكات إشعارات الدفع التي تتطلب إيماءات فعلية من المستخدم بدلاً من أن يتم تفعيلها برمجيًا. لقد تم إعادة تصميم منطق اشتراك إشعارات الدفع بالكامل في XenForo 2.4، مما سيتجنب هذه السيناريوهات - خاصة عندما يتم تفعيل أشياء مثل التحقق من الهوية الثنائية (2FA).
هل يمكن إرسال إشعارات دفع من لوحة التحكم الإدارية؟
من الناحية الفنية، لم يتم تنفيذ ذلك بعد. على الرغم من أننا نود معرفة آرائكم حول ما إذا كانت هذه ستكون إضافة مفيدة. تسمح إضافة PWA الخاصة بـ DigitalPoint للمسؤولين بإرسال إشعارات دفع إلى المستخدمين بناءً على معايير معينة. هذا مشابه لـ "تنبيه المستخدمين"، "إرسال بريد إلكتروني للمستخدمين" و "مراسلة المستخدمين". إنه متكرر إلى حد ما مع "تنبيه المستخدمين" حيث يتم بالفعل إرسال إشعارات دفع بالإضافة إلى التنبيهات لأي مستخدمين قاموا بتمكين إشعارات الدفع. يمكن تنفيذ "دفع المستخدمين" من الإضافة إذا كانت هناك حالات استخدام معقولة لذلك. فقط دعنا نعرف أدناه!
تعزيز حماية CSRF
بينما تُعتبر هذه أيضًا ميزة من إضافة @digitalpoint، فإننا نبرزها بشكل منفصل حيث قمنا بتوسيع نطاقها لتغطية المزيد من حالات الاستخدام. إنها أيضًا تغيير تقني أكثر خلف الكواليس بدلاً من أن تكون شيئًا يواجه المستخدم.
في المتصفحات المدعومة، نستخدم الآن Metadata Fetch للحد من هجمات تزوير الطلب عبر المواقع (CSRF)، مستبدلين النهج التقليدي القائم على الرموز. هذه ميزة جديدة نسبيًا، ولكنها مدعومة من قبل جميع المتصفحات الحديثة. ستعود المتصفحات القديمة بسلاسة إلى طريقة الرموز القديمة. يساعد هذا التغيير في تجنب المشاكل الشائعة مع الرموز المنتهية الصلاحية، خاصةً على الهواتف المحمولة، أو عند استخدام تخزين الذاكرة المؤقتة مثل Cloudflare لتقديم محتوى الضيوف.
بالإضافة إلى ذلك، قمنا بإلغاء استخدام وضع الرموز في الطلبات
GET للإجراءات التي تغير الحالة (مثل تسجيل الخروج). للحفاظ على نفس تجربة المستخدم، يتم الآن تفعيل هذه الإجراءات من خلال طلبات POST التي يبدأها JavaScript. كما قمنا بدمج تدهور عملي سلس. إذا كانت JavaScript غير مفعلة أو تم الوصول إلى رابط مباشرة، سيُعرض على المستخدمين نموذج تأكيد احتياطي.بالنسبة للمطورين
كما ذُكر، هناك معالج جديد
XF.LinkPostClick الذي يسمح للرابط بالتسبب في طلبات POST. على سبيل المثال:
HTML:
<a href="{{ link('route') }}" data-xf-click="link-post">Change state</a>
لقد قمنا أيضًا بتقديم إضافة وحدة تحكم
RedirectPlugin، والتي تعرض نموذجًا تداخليًا يتم تقديمه تلقائيًا عند التحويل إلى إجراء يغير الحالة. على سبيل المثال:
PHP:
$redirectPlugin = $this->plugin(\XF\ControllerPlugin\RedirectPlugin::class);
return $redirectPlugin->actionPost($this->buildLink('route'));
أخيرًا، يتم الآن استخدام Fetch Metadata لمنع تضمين عناوين URL كصور. هذه الحماية تلقائية، حتى بدون استدعاء طريقة
assertNotEmbeddedImageRequest القديمة. إذا كنت بحاجة إلى السماح بالتضمين (كما نفعل مع المرفقات)، يمكنك التراجع عن ذلك عن طريق تجاوز الطريقة الاختيارية isAllowedMediaEmbedAction. على سبيل المثال:
PHP:
public function isAllowedMediaEmbedAction(
string $action,
ParameterBag|null $params = null
): bool
{
return strtolower($action) === 'index';
}
المصدر :
XF 2.4 - PWA Improvements and Enhanced CSRF Protection
PWA Improvements Hot on the heels of the improvements announced earlier this week, we have another set of improvements to show you today, again, courtesy of @digitalpoint! This time we'll be focusing on some improvements to Progressive Web Apps which some of you will be familiar with if you're...
