|
|
|
|
| إضافة إهداء |
|
|||||||
| مكتبة النخبة التقنية كل ما يخص الإنترنت القديم، والمنتديات، وتطوير المواقع، والاستضافة، والأرشفة والذكاء الاصطناعي |
![]() |
|
|
أدوات الموضوع | إبحث في الموضوع | تقييم الموضوع | انواع عرض الموضوع |
|
#1
|
||||
|
||||
شرح تركيب وتفعيل إشعارات Push لموقعك أو منتداك طريقة إضافة إشعارات حقيقية للموقع واستقبالها على الكمبيوتر والآيفون تقدر تضيف لموقعك أو منتداك ميزة إشعارات Web Push، بحيث يظهر للزائر خيار تفعيل الإشعارات، وبعد موافقته تقدر ترسل له تنبيه عن موضوع جديد أو خبر أو تحديث بالموقع. الإشعارات تعتمد على تقنية Push API و Service Worker، ويستطيع الموقع استقبال الإشعار حتى عندما لا تكون صفحة الموقع مفتوحة أمام المستخدم. ـــــــــــــــــــــــــ ـــــــــــ شكل طلب تفعيل الإشعارات في الموقع ![]() ـــــــــــــــــــــــــ ـــــــــــ المتطلبات • الموقع يعمل على HTTPS • إمكانية رفع ملفات PHP و JavaScript • Composer على السيرفر أو الكمبيوتر • إنشاء مفاتيح VAPID • ملف Service Worker • مكان لحفظ اشتراكات الزوار ـــــــــــــــــــــــــ ـــــــــــ أولاً: تثبيت مكتبة Web Push إذا كان موقعك يعمل بـ PHP، نستخدم مكتبة Web Push. من خلال Composer شغل الأمر التالي: كود:
composer require minishlink/web-push كود:
vendor كود:
require DIR . ‘/vendor/autoload.php’; ـــــــــــــــــــــــــ ـــــــــــ ثانياً: إنشاء مفاتيح VAPID الإشعارات تحتاج مفتاحين: • Public Key • Private Key المفتاح العام يوضع في JavaScript ويمكن أن يظهر للزوار. أما Private Key فلا تضعه داخل JavaScript ولا تنشره، ويجب أن يبقى داخل السيرفر فقط. بعد إنشاء المفاتيح احتفظ بها لأننا سنستخدمها في الاشتراك وإرسال الإشعارات. ـــــــــــــــــــــــــ ـــــــــــ ثالثاً: إنشاء ملف Service Worker أنشئ ملف باسم مثلاً: كود:
sw.js مثال بسيط: كود:
self.addEventListener(‘push’, function(event) {
let data = {};
if (event.data) {
data = event.data.json();
}
const title = data.title || 'إشعار جديد';
const options = {
body: data.body || '',
icon: data.icon || '/icon.png',
badge: data.badge || '/icon.png',
data: {
url: data.url || '/'
}
};
event.waitUntil(
self.registration.showNotification(title, options)
);
});
self.addEventListener(‘notificationclick’, function(event) {
event.notification.close();
const url = event.notification.data.url || '/';
event.waitUntil(
clients.openWindow(url)
);
});
ـــــــــــــــــــــــــ ـــــــــــ رابعاً: تسجيل Service Worker نضيف JavaScript داخل الموقع: كود:
if (‘serviceWorker’ in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(function(registration) {
console.log('Service Worker تم تسجيله');
})
.catch(function(error) {
console.log('خطأ:', error);
});
}
ـــــــــــــــــــــــــ ـــــــــــ خامساً: زر تمكين الإشعارات الأفضل ألا تطلب الإذن من الزائر مباشرة عند فتح الموقع. ضع له زر واضح مثل: كود:
تمكين الإشعارات كود:
document.getElementById(‘enableNotifications’).onclick = async function() {
const permission = await Notification.requestPermission();
if (permission === 'granted') {
alert('تم تفعيل الإشعارات');
}
};
ـــــــــــــــــــــــــ ـــــــــــ سادساً: إنشاء اشتراك Push بعد موافقة الزائر يجب إنشاء اشتراك للمتصفح. ضع المفتاح العام الخاص بك مكان: كود:
YOUR_PUBLIC_VAPID_KEY كود:
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(
‘YOUR_PUBLIC_VAPID_KEY’
)
});
كود:
function urlBase64ToUint8Array(base64String) {
const padding = '='.repeat(
(4 - base64String.length % 4) % 4
);
const base64 = (base64String + padding)
.replace(/-/g, '+')
.replace(/_/g, '/');
const rawData = window.atob(base64);
return Uint8Array.from(
[...rawData].map(char => char.charCodeAt(0))
);
}
ـــــــــــــــــــــــــ ـــــــــــ سابعاً: حفظ اشتراك الزائر مثلاً نرسل الاشتراك إلى: كود:
save-subscription.php كود:
await fetch(’/save-subscription.php’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’
},
body: JSON.stringify(subscription)
});
كل متصفح أو جهاز سيملك اشتراكاً خاصاً به. ـــــــــــــــــــــــــ ـــــــــــ ثامناً: إرسال إشعار من PHP مثال أساسي: كود:
<?php
require __DIR__ . '/vendor/autoload.php';
use Minishlink\WebPush\WebPush;
use Minishlink\WebPush\Subscription;
$auth = [
'VAPID' => [
'subject' => 'https://example.com',
'publicKey' => 'PUBLIC_KEY',
'privateKey' => 'PRIVATE_KEY'
]
];
$webPush = new WebPush($auth);
$subscription = Subscription::create([
'endpoint' => 'ENDPOINT',
'publicKey' => 'P256DH_KEY',
'authToken' => 'AUTH_KEY'
]);
$payload = json_encode([
'title' => 'موضوع جديد',
'body' => 'تم إضافة موضوع جديد في المنتدى',
'url' => 'https://example.com/topic',
'icon' => 'https://example.com/icon.png'
]);
$webPush->queueNotification(
$subscription,
$payload
);
foreach ($webPush->flush() as $report) {
if ($report->isSuccess()) {
echo 'تم إرسال الإشعار';
} else {
echo 'فشل الإرسال';
}
}
ـــــــــــــــــــــــــ ـــــــــــ طريقة تفعيل الإشعارات على الآيفون إذا ظهر للمستخدم تنبيه يطلب منه إضافة الموقع إلى الشاشة الرئيسية، يتبع الخطوات التالية: 1- افتح الموقع بواسطة Safari 2- اضغط زر المشاركة 3- اختر إضافة إلى الشاشة الرئيسية 4- افتح الموقع من الأيقونة الجديدة 5- اضغط تمكين الإشعارات ![]() ![]() وهنا أصبح الموقع موجوداً على الشاشة الرئيسية ويمكن فتحه مثل أي تطبيق. ـــــــــــــــــــــــــ ـــــــــــ ملاحظات مهمة • لا تنشر Private VAPID Key • لا تطلب الإذن من الزائر بطريقة مزعجة • الأفضل وضع زر خاص لتفعيل الإشعارات • احذف الاشتراكات المنتهية أو غير الصالحة من قاعدة البيانات • استخدم الإشعارات للمواضيع المهمة ولا تكثر منها • اختبر الإشعارات على أكثر من متصفح وجهاز ـــــــــــــــــــــــــ ـــــــــــ النتيجة الزائر يوافق على الإشعارات مرة واحدة، وبعدها تستطيع إرسال تنبيه يحتوي على عنوان ونص ورابط، وعند الضغط عليه ينتقل مباشرة إلى الصفحة أو الموضوع المطلوب. وتصلح الطريقة للمواقع المبنية بـ PHP وكذلك المنتديات القديمة مثل vBulletin مع بعض التعديل البسيط على أماكن الأكواد. منتديات النخبة | ZMZM.NET التوقيع
✦ إدارة منتديات النخبة ✦ حيث الذكريات تعود من جديد ![]() |
![]() |
| الكلمات الدلالية (Tags) |
| push notifications ، ترايدنت , vbulletin , web push , إشعارات push , إشعارات المواقع , تفعيل الإشعارات |
|
|
| مضى على تأسيس شبكة النخبة |
|
سنة
|
شهر
|
يوم
|