منتديات النخبة
أدوات النخبة :  |  قص الصور  |  تحويل WebP  |  ضغط الصور  |  تغيير الحجم  |  علامة مائية  |  مولد Favicon  |  تحميل مقاطع تيك توك  |  البحث بالمواضيع القديمة
إضافة إهداء drkmoon [ الجنسية : سعودية ] كيف ألومك والخطا ماهو خطاك، الخطا من قلبي اللي دلعك، قلبي اللي كل ما تطلب عطاك وطلعك فوق السحاب ودلعك | شَـــنَــكَــوٍتَ [ الجنسية : كويتي ] شلونكم شخباركم إن شاء الله كلكم تمام | احزان شهرزاد [ الجنسية : إماراتية ] اللهم ارحمها واغفر لها | الــبــيــرق [ الجنسية : سعودي ] اللهم نسألك العفو والعافية | drkmoon [ الجنسية : سعودي ] إخواني الأعزاء، سيتوقف المنتدى غداً السبت لمدة 12 ساعة بسبب تحديثات في السيرفر، ويعاد إن شاء الله فور انتهاء التحديثات، هذا للتنويه

العودة   منتديات النخبة > °o.O ( مـنـتـديــات الـنخـبـة الـعـامـــة ) O.o° > مكتبة النخبة التقنية

مكتبة النخبة التقنية كل ما يخص الإنترنت القديم، والمنتديات، وتطوير المواقع، والاستضافة، والأرشفة والذكاء الاصطناعي

إضافة رد
 
أدوات الموضوع إبحث في الموضوع تقييم الموضوع انواع عرض الموضوع
  #1  
قديم
admin
من الزمن الجميل
admin admin غير متواجد حالياً
★ ZMZM ★
 
تاريخ التسجيل: Jun 2005
Thumbs up شرح تركيب الإشعارات للمواقع والمنتديات وإرسال التنبيهات للزوار


شرح تركيب وتفعيل إشعارات 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
وفي ملفات PHP نحتاج استدعاء:

كود:
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))
);

}
بعدها نرسل بيانات الاشتراك إلى ملف PHP ليتم حفظها.


ـــــــــــــــــــــــــ ـــــــــــ

سابعاً: حفظ اشتراك الزائر

مثلاً نرسل الاشتراك إلى:

كود:
save-subscription.php
بالطريقة التالية:

كود:
await fetch(’/save-subscription.php’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’
},
body: JSON.stringify(subscription)
});
داخل ملف PHP تستطيع حفظ بيانات الاشتراك في قاعدة البيانات.

كل متصفح أو جهاز سيملك اشتراكاً خاصاً به.


ـــــــــــــــــــــــــ ـــــــــــ

ثامناً: إرسال إشعار من 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- اضغط تمكين الإشعارات


بعد إضافة الموقع للشاشة الرئيسية سيظهر كأنه تطبيق مستقل.


وهنا أصبح الموقع موجوداً على الشاشة الرئيسية ويمكن فتحه مثل أي تطبيق.
ـــــــــــــــــــــــــ ـــــــــــ
ملاحظات مهمة
• يجب أن يعمل الموقع بشهادة HTTPS
• لا تنشر Private VAPID Key
• لا تطلب الإذن من الزائر بطريقة مزعجة
• الأفضل وضع زر خاص لتفعيل الإشعارات
• احذف الاشتراكات المنتهية أو غير الصالحة من قاعدة البيانات
• استخدم الإشعارات للمواضيع المهمة ولا تكثر منها
• اختبر الإشعارات على أكثر من متصفح وجهاز

ـــــــــــــــــــــــــ ـــــــــــ
النتيجة
بعد تطبيق الخطوات يصبح موقعك أو منتداك يدعم إشعارات Push الحديثة.
الزائر يوافق على الإشعارات مرة واحدة، وبعدها تستطيع إرسال تنبيه يحتوي على عنوان ونص ورابط، وعند الضغط عليه ينتقل مباشرة إلى الصفحة أو الموضوع المطلوب.
وتصلح الطريقة للمواقع المبنية بـ PHP وكذلك المنتديات القديمة مثل vBulletin مع بعض التعديل البسيط على أماكن الأكواد.

منتديات النخبة | ZMZM.NET
التوقيع
✦ إدارة منتديات النخبة ✦

حيث الذكريات تعود من جديد


رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
push notifications ، ترايدنت , vbulletin , web push , إشعارات push , إشعارات المواقع , تفعيل الإشعارات


تعليمات المشاركة
تستطيع إضافة مواضيع جديدة
تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

مضى على تأسيس شبكة النخبة
سنة | شهر | يوم

ZMZM.NET - منتديات النخبة
ذكريات ومواضيع منتديات النخبة
Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. TranZ By Almuhajir
© 2026 ZMZM.NET - منتدى النخبة
يرغب منتديات النخبة في الحصول على إذن منك لتمكين الإشعارات.