# إصلاح تسجيل إشعارات PlusCash — الإصدار `pushfix3`

ارفع **محتويات هذا المجلد** إلى جذر الموقع مع الاستبدال والحفاظ على نفس المسارات. لا تحتاج إلى استيراد SQL مرة أخرى.

الإصلاح يضيف ملف `manifest.json` الذي كان يعيد صفحة 404 على الموقع، ويجعل إنشاء اشتراك Push يتم فقط عند ضغط المستخدم، وينظف تسجيلات عامل الخدمة القديمة قبل إعادة تسجيل `/push-sw.js` على النطاق `/`. توصي واجهة Push بأن يتم `subscribe()` بعد تفعيل عامل خدمة ومن خلال ضغطة مستخدم، ويحتاج Chrome إلى مفتاح VAPID من نوع P-256.[1]

بعد الرفع، افتح إعدادات Chrome في الموبايل، ثم **Site settings → pluscash.live → Clear & reset**. بعد ذلك افتح الموقع وسجّل الدخول واضغط **Enable & test** ثم **Allow**. يجب أن يظهر صف في جدول `push_subscriptions` ويصل إشعار الاختبار.

إذا استمرت الرسالة نفسها حرفيًا: `Registration failed - push service error` بعد مسح بيانات الموقع، فهذا يعني أن المتصفح لم يصل إلى مزود Push قبل أن يتصل بكود PHP؛ وقد سُجل هذا الخطأ كعطل خاص ببعض الأجهزة أو إعدادات الخصوصية حتى مع صحة الموقع والمفاتيح.[2] حدّث Chrome وGoogle Play services، أوقف VPN أو مانع الإعلانات مؤقتًا، أو جرّب Firefox Android.

## الملفات

| الملف | الغرض |
|---|---|
| `manifest.json` | Manifest صالح بدل استجابة 404 السابقة |
| `push-sw.js` | استقبال Push وعرض الإشعار في الخلفية |
| `assets/js/vie/push-notifications.js` | تنظيف التسجيلات القديمة وإعادة الاشتراك والحفظ والاختبار |
| `application/views/user_template/template.php` | تحميل manifest والسكربت بإصدار يكسر الكاش |
| `application/controllers/Push_notifications.php` | حفظ الاشتراك وإرسال اختبار للحساب الحالي |
| `application/models/M_push_notification.php` | تخزين الاشتراكات وتشخيص أخطاء قاعدة البيانات |
| `application/config/routes.php` | مسارات API الخاصة بالاشتراك والاختبار |

## References

[1]: https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe "MDN — PushManager.subscribe()"
[2]: https://github.com/web-push-libs/web-push/issues/574 "web-push issue — Registration failed: push service error"
