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

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

تمهيد الإشعارات الفورية (push primer) هو مربع حوار اشتراك اختياري ناعم (soft opt-in) تعرضه قبل مطالبة نظام iOS بإذن الإشعارات الفورية. يعرض نظام iOS مطالبة النظام مرة واحدة فقط لكل تثبيت — إذا نقر المستخدم على عدم السماح (Don’t Allow)، فسيتم فقدان الإشعارات الفورية حتى يعيد تمكينها في الإعدادات (Settings). يتيح لك التمهيد شرح القيمة أولاً والسؤال في اللحظة المناسبة، بحيث تستخدم مطالبة النظام ذات الفرصة الواحدة على المستخدمين الذين وافقوا بالفعل.

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

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

كيف يعمل

Anchor link to

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

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

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

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

Anchor link to

قم بتكوين التمهيد باستخدام منشئ سلس (fluent builder) واستدع present. يتطلب الإعداد الأدنى عنوانًا ورسالة وعناوين الزرين.

import PushwooshFramework
Pushwoosh.configure.pushPrimer
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present()

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

Anchor link to

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

القيمةالوصف
.alertوحدة تحكم تنبيه النظام UIAlertController. يتم تجاهل الموضع.
.sheet + .bottomورقة سفلية تنزلق لأعلى، مع مقبض وأزرار بعرض كامل (افتراضي).
.sheet + .topلافتة مدمجة تسقط من الأعلى، مثل إشعار.
.sheet + .centerمربع حوار متمركز يتدرج ويظهر تدريجياً.
Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.top)
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present()
تمهيد الإشعارات الفورية في المواضع السفلية والعلوية والمركزية

التخصيص

Anchor link to

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

Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.center)
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.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 / imageURLصورة UIImage محلية أو عنوان 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("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present { outcome in
switch outcome {
case .accepted: break // تم عرضه، وافق المستخدم، تم طلب مطالبة النظام
case .declined: break // تم عرضه، رفض المستخدم
case .suppressed: break // لم يتم عرضه (مرخص بالفعل، أو تم تقييده)
case .redirectedToSettings: break // حالة الرفض، تم إرسال المستخدم إلى الإعدادات
@unknown default: break
}
}

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

المراجع

Anchor link to