انتقل إلى المحتوى

تمهيد الإشعارات الفورية لنظام iOS

تمهيد الإشعارات الفورية هو مربع حوار اشتراك اختياري ناعم تعرضه قبل مطالبة نظام iOS بإذن الإشعارات الفورية. يعرض نظام iOS مطالبة النظام مرة واحدة فقط لكل تثبيت — إذا نقر المستخدم على عدم السماح، فسيتم فقدان الإشعارات الفورية حتى يعيد تمكينها في الإعدادات. يتيح لك التمهيد شرح القيمة أولاً والسؤال في اللحظة المناسبة، بحيث تستخدم مطالبة النظام التي تظهر مرة واحدة فقط على المستخدمين الذين وافقوا بالفعل.

متوفر منذ الإصدار 7.1.1. التمهيد هو جزء من PushwooshFramework؛ لا يلزم وجود وحدة إضافية.

مربع حوار تمهيد الإشعارات يظهر قبل مطالبة النظام بالإذن
تمهيد الإشعارات يظهر قبل مطالبة نظام iOS بإذن الإشعارات الفورية

كيف يعمل

Anchor link to

يدرك التمهيد الحالة بالكامل. يقرأ حالة تفويض الإشعارات الحالية ويقرر ما يجب فعله، لذا من الآمن استدعاؤه عند كل تشغيل:

  • غير محدد — يعرض التمهيد؛ عند القبول، فإنه يطلق مطالبة النظام بالإذن.
  • مصرح به أو مؤقت — يكبت التمهيد بصمت (لا يتم عرض أي شيء).
  • مرفوض — يعرض التمهيد؛ عند القبول، فإنه يوجه المستخدم إلى إعدادات إشعارات التطبيق (عند تمكين fallbackToSettings).

أنت تقرر متى تستدعي التمهيد (على سبيل المثال بعد عملية الإعداد أو بعد إجراء رئيسي). لا يفرض SDK أي توقيت خاص به، باستثناء التقييد الاختياري minInterval الموضح أدناه.

الاستخدام الأساسي

Anchor link to

قم بتكوين التمهيد باستخدام واجهة بناء سلسة واستدعِ present. يتطلب الإعداد الأدنى عنوانًا ورسالة وعناوين للزرين.

import PushwooshFramework
Pushwoosh.configure.pushPrimer
.title("ابق على اطلاع")
.message("كن أول من يتلقى إشعارات حول الصفقات وتحديثات الطلبات")
.acceptButton("تمكين الإشعارات")
.declineButton("ليس الآن")
.present()

الأنماط والمواضع

Anchor link to

استخدم style للاختيار بين تنبيه النظام وورقة مخصصة، و position لوضع الورقة المخصصة. كل موضع له تصميمه الافتراضي الخاص.

القيمةالوصف
.alertتنبيه نظام UIAlertController. يتم تجاهل الموضع.
.sheet + .bottomورقة سفلية تنزلق لأعلى، مع مقبض وأزرار بعرض كامل (الافتراضي).
.sheet + .topلافتة مدمجة تنزل من الأعلى، مثل إشعار.
.sheet + .centerمربع حوار متمركز يتوسع ويتلاشى للظهور.
Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.top)
.title("ابق على اطلاع")
.message("كن أول من يتلقى إشعارات حول الصفقات وتحديثات الطلبات")
.acceptButton("تمكين الإشعارات")
.declineButton("ليس الآن")
.present()
تمهيد الإشعارات في المواضع السفلية والعلوية والوسطى

التخصيص

Anchor link to

جميع الإعدادات المرئية اختيارية — احذفها لاستخدام القيم الافتراضية الأصلية التي تتكيف مع الوضع الفاتح والداكن.

Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.center)
.title("ابق على اطلاع")
.message("كن أول من يتلقى إشعارات حول الصفقات وتحديثات الطلبات")
.acceptButton("تمكين الإشعارات")
.declineButton("ليس الآن")
.image(UIImage(named: "PrimerHero")) // صورة محلية، أو .imageURL("https://…")
.backgroundColor(.systemBackground)
.titleColor(.label)
.messageColor(.secondaryLabel)
.acceptButtonColor(.systemBlue)
.acceptButtonTextColor(.white)
.declineButtonColor(.clear)
.declineButtonTextColor(.secondaryLabel)
.cornerRadius(24)
.buttonCornerRadius(14)
.buttonBorderColor(.separator)
.present()

مرجع التخصيص:

المُعيِّن (Setter)الوصف
image / imageURLUIImage محلي أو عنوان URL بعيد. يتم عرضه كدائرة في التخطيطات الوسطى والسفلية، وكأيقونة في اللافتة العلوية. الصورة المحلية لها الأسبقية على عنوان URL.
backgroundColorلون خلفية البطاقة الصلب.
backgroundGradientمصفوفة من الألوان يتم عرضها كتدرج لوني ناعم متعدد الألوان. يتجاوز backgroundColor.
titleColor / messageColorألوان نص العنوان والرسالة.
acceptButtonColor / acceptButtonTextColorألوان خلفية ونص زر القبول. لون القبول يلون أيضًا الأيقونة الافتراضية.
declineButtonColor / declineButtonTextColorألوان خلفية ونص زر الرفض.
cornerRadiusنصف قطر زاوية البطاقة.
buttonCornerRadius / buttonBorderColorنصف قطر الزاوية ولون حدود كلا الزرين.

إعدادات السلوك

Anchor link to

الرجوع إلى الإعدادات

Anchor link to

بشكل افتراضي، عندما تكون الإشعارات مرفوضة بالفعل، يتم عرض التمهيد ويأخذ زر القبول المستخدم إلى إعدادات إشعارات التطبيق. مرر false لكبت التمهيد بالكامل في حالة الرفض بدلاً من ذلك.

.fallbackToSettings(false)

تكرار العرض

Anchor link to

بشكل افتراضي، لا يحتوي التمهيد على أي تقييد مدمج — يظهر كلما استدعيت present (ويتم كبته تلقائيًا بمجرد تفويض الإشعارات). استخدم minInterval لتحديد عدد مرات ظهور التمهيد. يتم الاحتفاظ بآخر وقت عرض عبر عمليات التشغيل.

.minInterval(7 * 24 * 60 * 60) // إظهاره مرة واحدة في الأسبوع على الأكثر

التعامل مع النتيجة

Anchor link to

مرر دالة إكمال (completion) إلى present للتفاعل مع النتيجة.

Pushwoosh.configure.pushPrimer
.title("ابق على اطلاع")
.message("كن أول من يتلقى إشعارات حول الصفقات وتحديثات الطلبات")
.acceptButton("تمكين الإشعارات")
.declineButton("ليس الآن")
.present { outcome in
switch outcome {
case .accepted: break // تم عرضه، قبل المستخدم، تم طلب مطالبة النظام
case .declined: break // تم عرضه، رفض المستخدم
case .suppressed: break // لم يتم عرضه (مصرح به بالفعل، أو تم تقييده)
case .redirectedToSettings: break // حالة الرفض، تم إرسال المستخدم إلى الإعدادات
@unknown default: break
}
}

تصل نتيجة مطالبة النظام النهائية (حالة المنح/الرفض ورمز الجهاز) من خلال استدعاءات التسجيل العادية — يعيد التمهيد استخدام registerForPushNotifications عند القبول ولا يكرر تلك السلسلة.

المراجع

Anchor link to