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

كيف يعمل
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 / 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("ابق على اطلاع") .message("كن أول من يتلقى إشعارات حول الصفقات وتحديثات الطلبات") .acceptButton("تمكين الإشعارات") .declineButton("ليس الآن") .present { outcome in switch outcome { case .accepted: break // تم عرضه، قبل المستخدم، تم طلب مطالبة النظام case .declined: break // تم عرضه، رفض المستخدم case .suppressed: break // لم يتم عرضه (مصرح به بالفعل، أو تم تقييده) case .redirectedToSettings: break // حالة الرفض، تم إرسال المستخدم إلى الإعدادات @unknown default: break } }تصل نتيجة مطالبة النظام النهائية (حالة المنح/الرفض ورمز الجهاز) من خلال استدعاءات التسجيل العادية — يعيد التمهيد استخدام registerForPushNotifications عند القبول ولا يكرر تلك السلسلة.