بنية قوالب In-App الأصلية
يتم عرض رسائل In-App الأصلية مباشرة بواسطة SDK. لا يتم استخدام WebView. بدلاً من صفحة index.html، يحمل مورد ZIP ملف native-config.json الذي يصف الرسالة كبيانات منظمة (نوع التخطيط، النصوص، الألوان، الصور، الأزرار). يقرأ SDK هذا الملف ويرسم العرض الأصلي المطابق، مما يوفر رسومًا متحركة أكثر سلاسة وأداء أفضل من صفحة ويب مضمنة.
يوثق هذا الدليل مخطط native-config.json: الحقول والأنواع والأمثلة لكل نوع عرض. للتنسيق الكلاسيكي القائم على HTML، راجع بنية قوالب الوسائط الغنية.
المتطلبات الأساسية
Anchor link toتتطلب رسائل In-App الأصلية:
- iOS: SDK 7.2.0 أو أحدث (7.2.1+ للبانر، الكاروسيل، والورقة)
- Android: SDK 6.10.0 أو أحدث (6.10.1+ للبانر، الكاروسيل، والورقة)
ليس كل نوع عرض متاحًا على كلا المنصتين بعد. تحقق من دعم المنصات قبل الاعتماد على تنسيق معين.
دعم المنصات
Anchor link to| نوع العرض | iOS | Android |
|---|---|---|
| modal | ✅ 7.2.0+ | ✅ 6.10.0+ |
| fullscreen | ✅ 7.2.0+ | ✅ 6.10.0+ |
| stories | ✅ 7.2.0+ | ✅ 6.10.0+ |
| banner | ✅ 7.2.1+ | ✅ 6.10.1+ |
| carousel | ✅ 7.2.1+ | ✅ 6.10.1+ |
| sheet | ✅ 7.2.1+ | ✅ 6.10.1+ |
| video | ✅ | غير متوفر بعد |
| pip | ✅ | غير متوفر بعد |
| scratchcard | ✅ | غير متوفر بعد |
| spinwheel | ✅ | غير متوفر بعد |
بنية القالب
Anchor link toقالب In-App الأصلي هو أرشيف ZIP، تمامًا مثل قالب الوسائط الغنية العادي، باستثناء أن الجذر يحتوي على ملف native-config.json بدلاً من index.html:
<template>.zip├── native-config.json ← مطلوب، التخطيط والمحتوى├── pushwoosh.json ← اختياري، الترجمة (انظر أدناه)يجب أن تكون الصور ومقاطع الفيديو المشار إليها من native-config.json (image, poster, fallback, url في pip/video) عناوين URL مطلقة ببروتوكول HTTPS. يقوم SDK بتحميلها عبر الشبكة. لا يقرأ الملفات المحلية من الأرشيف.
التكوين نفسه هو كائن JSON واحد:
{ "displayType": "<type>", "<type>": { /* كتلة المحتوى لهذا النوع */ } }يختار displayType أحد التنسيقات العشرة أدناه. يحتوي الكائن الموجود تحت المفتاح المطابق على محتوى هذا التنسيق. يعتبر التكوين الذي يحتوي على displayType غير معروف، أو كتلة محتوى مفقودة، أو قائمة مطلوبة فارغة (items لـ carousel/stories، segments لـ spinwheel) غير صالح. يتخطى SDK عرضه بدلاً من عرض تخطيط معطوب.
إعدادات التسليم (تواريخ البدء/الانتهاء وتحديد تكرار العرض) ليست جزءًا من native-config.json. يتم تكوينها بنفس طريقة أي رسالة In-App أخرى، في خطوة إعدادات العرض الخاصة بالحملة.
يحتاج تحديد تكرار العرض بالإضافة إلى ذلك إلى موافقة صريحة من جانب SDK ليصبح ساري المفعول على رسائل In-App الأصلية. راجع تكامل SDK.
الألوان
Anchor link toكل قيمة لون هي سلسلة CSS ست عشرية: #RGB، #RGBA، #RRGGBB، أو #RRGGBBAA. علامة # مطلوبة في جميع الأشكال الأربعة.
الكتل البنائية المشتركة
Anchor link toيتم إعادة استخدام هذه الكائنات الأصغر عبر عدة أنواع من العروض.
Text
Anchor link to| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
text | string | نعم | محتوى النص |
color | string | نعم | لون النص |
{ "text": "Spin for a garage perk", "color": "#FFFFFFFF" }Border
Anchor link to| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
color | string | نعم | لون الإطار |
radius | number | نعم | نصف قطر الزاوية، بالنقاط |
{ "color": "#0E72E5FF", "radius": 12 }Cover
Anchor link toصورة اختيارية فوق لون خلفية. تستخدم بواسطة fullscreen و scratchcard.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
image | string | لا | عنوان URL لصورة الغلاف |
background | string | نعم | لون الخلفية المعروض تحت (أو بدلاً من) الصورة |
{ "image": "https://example.com/cover.jpg", "background": "#1A1A1EFF" }Action
Anchor link toاتحاد مميز على type:
| المتغير | الحقول | الوصف |
|---|---|---|
{ "type": "close" } | لا شيء | يغلق رسالة In-App |
{ "type": "url", "url": string } | url مطلوب | يفتح عنوان URL أو رابطًا عميقًا |
{ "type": "url", "url": "pushwoosh://sale" }Button
Anchor link to| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
text | Text | نعم | تسمية الزر |
background | string | نعم | لون تعبئة الزر |
border | Border | نعم | إطار الزر |
action | Action | نعم | الإجراء الذي يتم تنفيذه عند النقر |
يستخدم spinButton (spinwheel) و revealButton (scratchcard) نفس الشكل بدون action. سلوكهما (تدوير العجلة، كشف البطاقة) مدمج.
{ "text": { "text": "Book a test drive", "color": "#FFFFFFFF" }, "background": "#0E72E5FF", "border": { "color": "#0E72E5FF", "radius": 12 }, "action": { "type": "url", "url": "pushwoosh://sale" }}Reward
Anchor link toلوحة الجائزة التي يعرضها scratchcard و spinwheel. تحتوي المكافأة الصالحة على title أو code.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
title | Text | لا | عنوان المكافأة |
message | Text | لا | وصف المكافأة |
code | string | لا | رمز ترويجي، يتم عرضه مع زر نسخ |
button | Button | لا | زر تأكيد مع إجراء خاص به |
{ "title": { "text": "20% off detailing", "color": "#111111FF" }, "message": { "text": "Valid for any full-detail booking this month.", "color": "#555555FF" }, "code": "APEX20", "button": { "text": { "text": "Book detailing", "color": "#FFFFFFFF" }, "background": "#B3227CFF", "border": { "color": "#B3227CFF", "radius": 12 }, "action": { "type": "url", "url": "pushwoosh://detailing" } }}أنواع العرض
Anchor link tobanner
Anchor link toشريط مدمج مثبت في الحافة العلوية أو السفلية من الشاشة.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
position | top | bottom | نعم | حافة الشاشة |
background | string | نعم | لون خلفية الشريط |
image | string | لا | صورة مصغرة على اليسار |
title | Text | لا | عنوان من سطر واحد، يتم اقتطاعه بنقاط حذف |
message | Text | لا | نص أساسي، يصل إلى سطرين |
action | Action | نعم | يتم تنفيذه عند النقر على الشريط نفسه |
autoDismiss | number | لا | إغلاق تلقائي بعد هذا العدد من الثواني. اتركه فارغًا لإبقائه حتى يتم إغلاقه |
{ "displayType": "banner", "banner": { "showClose": true, "position": "bottom", "background": "#4B5057FF", "image": "https://example.com/thumb.jpg", "title": { "text": "Alpine A110 just dropped", "color": "#FFFFFFFF" }, "message": { "text": "The featherweight icon — tap to see the build", "color": "#FFFFFFFF" }, "action": { "type": "url", "url": "pushwoosh://product/x6f" }, "autoDismiss": 6 }}carousel
Anchor link toمجموعة من البطاقات بملء الشاشة قابلة للتمرير مع نقاط مؤشر للصفحة.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
items | Item[] | نعم | البطاقات (1 على الأقل) |
عنصر الكاروسيل:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
title | Text | لا | عنوان البطاقة |
message | Text | لا | عنوان فرعي للبطاقة |
image | string | لا | صورة البطاقة |
action | Action | لا | يتم تنفيذه عند النقر على البطاقة |
{ "displayType": "carousel", "carousel": { "showClose": true, "items": [ { "image": "https://example.com/card-1.jpg", "title": { "text": "AMG GT R", "color": "#FFFFFFFF" }, "message": { "text": "585 hp biturbo V8 — just landed", "color": "#FFFFFFFF" }, "action": { "type": "url", "url": "pushwoosh://product/n6fx" } }, { "image": "https://example.com/card-2.jpg", "title": { "text": "Alpine A110", "color": "#FFFFFFFF" }, "message": { "text": "Featherweight icon — limited allocation", "color": "#FFFFFFFF" }, "action": { "type": "url", "url": "pushwoosh://product/x6f" } } ] }}fullscreen
Anchor link toصورة غلاف من الحافة إلى الحافة مع نص وأزرار في الأعلى.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
cover | Cover | نعم | صورة الخلفية واللون |
title | Text | لا | العنوان |
message | Text | لا | النص الأساسي |
buttons | Button[] | نعم | الأزرار في الأسفل (يمكن أن تكون فارغة) |
{ "displayType": "fullscreen", "fullscreen": { "showClose": true, "cover": { "image": "https://example.com/hero.jpg", "background": "#1A1A1EFF" }, "title": { "text": "Pure Maranello", "color": "#FFFFFFFF" }, "message": { "text": "The prancing horse, reimagined.", "color": "#EBEBEBFF" }, "buttons": [ { "text": { "text": "Reserve now", "color": "#FFFFFFFF" }, "background": "#0E72E5FF", "border": { "color": "#0E72E5FF", "radius": 8 }, "action": { "type": "url", "url": "pushwoosh://sale" } }, { "text": { "text": "Not now", "color": "#FFFFFFFF" }, "background": "#00000000", "border": { "color": "#FFFFFF99", "radius": 8 }, "action": { "type": "close" } } ] }}modal
Anchor link toبطاقة في المنتصف.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
dimBackground | boolean | نعم | تعتيم الشاشة خلف البطاقة |
background | string | نعم | لون خلفية البطاقة |
image | string | لا | صورة الغلاف |
title | Text | لا | العنوان |
message | Text | لا | النص الأساسي |
buttons | Button[] | نعم | الأزرار أسفل النص (يمكن أن تكون فارغة) |
{ "displayType": "modal", "modal": { "showClose": true, "dimBackground": true, "background": "#FFFFFFFF", "image": "https://example.com/cover.jpg", "title": { "text": "The GT R has landed", "color": "#4B5057FF" }, "message": { "text": "585 hp — now in the showroom.", "color": "#4B5057FF" }, "buttons": [ { "text": { "text": "Book a test drive", "color": "#FFFFFFFF" }, "background": "#0E72E5FF", "border": { "color": "#0E72E5FF", "radius": 12 }, "action": { "type": "url", "url": "pushwoosh://sale" } }, { "text": { "text": "Not now", "color": "#4B5057FF" }, "background": "#FFFFFFFF", "border": { "color": "#4B5057FF", "radius": 12 }, "action": { "type": "close" } } ] }}نافذة فيديو عائمة “صورة داخل صورة” مثبتة في زاوية الشاشة.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
position | bottom-right | bottom-left | top-right | top-left | نعم | زاوية الشاشة |
loop | boolean | نعم | تكرار التشغيل |
muted | boolean | نعم | البدء بكتم الصوت |
url | string | نعم | عنوان URL للفيديو |
poster | string | لا | ملصق يظهر قبل بدء التشغيل |
fallback | string | لا | صورة تظهر إذا فشل تشغيل الفيديو |
width | number | نعم | عرض النافذة كنسبة مئوية من عرض الشاشة، محصورة بين 15-70 |
aspectRatio | number | نعم | نسبة ارتفاع النافذة إلى عرضها |
borderRadius | number | لا | نصف قطر زاوية النافذة، بالنقاط |
action | Action | لا | يتم تنفيذه عند النقر على النافذة نفسها |
لا توجد أزرار قابلة للتكوين في pip. عناصر التحكم في النافذة (التوسيع إلى ملء الشاشة، كتم الصوت، الإغلاق) يوفرها النظام.
{ "displayType": "pip", "pip": { "showClose": true, "position": "bottom-right", "loop": true, "muted": true, "url": "https://example.com/teaser.mp4", "poster": "https://example.com/poster.jpg", "width": 40, "aspectRatio": 0.5625, "action": { "type": "url", "url": "pushwoosh://product/x6f" } }}scratchcard
Anchor link toبطاقة مع مكافأة مخفية تحت طبقة رقائق قابلة للخدش.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
background | string | string[] | نعم | لون خلفية البطاقة، أو نقاط التدرج |
revealThreshold | number | نعم | جزء من الرقاقة يجب خدشه (0-1) قبل كشف المكافأة |
cover | Cover | نعم | طبقة الرقاقة. بدون image، يظهر تلميح “اخدش هنا” على لون الخلفية |
revealButton | Button (no action) | لا | زر “كشف فوري” |
title | Text | لا | العنوان |
message | Text | لا | النص الأساسي |
reward | Reward | نعم | الجائزة المخفية تحت الرقاقة |
{ "displayType": "scratchcard", "scratchcard": { "showClose": true, "background": ["#3A1C71FF", "#B3227CFF", "#E0503AFF"], "revealThreshold": 0.55, "cover": { "background": "#C9CDD6FF" }, "revealButton": { "text": { "text": "Reveal without scratching", "color": "#3A1C71FF" }, "background": "#F2DFF5FF", "border": { "color": "#F2DFF5FF", "radius": 10 } }, "title": { "text": "Your loyalty reward", "color": "#FFFFFFFF" }, "message": { "text": "Scratch the foil to reveal this week's garage perk.", "color": "#F2DFF5FF" }, "reward": { "title": { "text": "20% off detailing", "color": "#111111FF" }, "message": { "text": "Valid for any full-detail booking this month.", "color": "#555555FF" }, "code": "APEX20", "button": { "text": { "text": "Book detailing", "color": "#FFFFFFFF" }, "background": "#B3227CFF", "border": { "color": "#B3227CFF", "radius": 12 }, "action": { "type": "url", "url": "pushwoosh://detailing" } } } }}sheet
Anchor link toبطاقة مثبتة في الحافة السفلية، مع مقبض سحب.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
dimBackground | boolean | نعم | تعتيم الشاشة خلف الورقة |
background | string | نعم | لون خلفية الورقة |
image | string | لا | صورة الغلاف |
title | Text | لا | العنوان |
message | Text | لا | النص الأساسي |
buttons | Button[] | نعم | الأزرار أسفل النص (يمكن أن تكون فارغة) |
{ "displayType": "sheet", "sheet": { "showClose": true, "dimBackground": true, "background": "#FFFFFFFF", "image": "https://example.com/cover.jpg", "title": { "text": "Your quote is ready", "color": "#000000FF" }, "message": { "text": "Guaranteed buyout for your A110: $68,500.", "color": "#000000FF" }, "buttons": [ { "text": { "text": "Get guaranteed quote", "color": "#FFFFFFFF" }, "background": "#0E72E5FF", "border": { "color": "#0E72E5FF", "radius": 12 }, "action": { "type": "url", "url": "pushwoosh://sale" } } ] }}spinwheel
Anchor link toعجلة حظ مع شرائح مرجحة وزر محور مركزي.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
background | string | string[] | نعم | لون خلفية البطاقة، أو نقاط التدرج |
winIndex | number | نعم | فهرس (يبدأ من 0) للشريحة الفائزة |
spinButton | Button (no action) | نعم | زر المحور المركزي |
title | Text | لا | العنوان |
message | Text | لا | النص الأساسي |
reward | Reward | نعم | مكافأة الدورة الفائزة (احتياطية للشرائح التي لا تملك مكافأة خاصة بها) |
loseTitle | Text | لا | عنوان يظهر عند الخسارة |
segments | Segment[] | نعم | شرائح العجلة (يتوقع SDK 2-12) |
Segment:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
message | Text | نعم | تسمية الشريحة |
color | string | لا | لون الشريحة. اتركه فارغًا لاستخدام لوحة ألوان احتياطية تطبق حول العجلة |
weight | number | نعم | حجم الشريحة النسبي |
reward | Reward | لا | مكافأة خاصة بالشريحة |
{ "displayType": "spinwheel", "spinwheel": { "showClose": true, "background": ["#1B1B46FF", "#5B2B8FFF", "#B0338AFF"], "winIndex": 1, "spinButton": { "text": { "text": "SPIN", "color": "#1B1B46FF" }, "background": "#F2C94CFF", "border": { "color": "#D9A02BFF", "radius": 36 } }, "title": { "text": "Spin for a garage perk", "color": "#FFFFFFFF" }, "message": { "text": "One spin — every slice wins this week.", "color": "#E3D9F2FF" }, "reward": { "title": { "text": "You won a garage perk!", "color": "#FFFFFFFF" }, "code": "APEXPERK", "button": { "text": { "text": "Claim", "color": "#FFFFFFFF" }, "background": "#5B2B8FFF", "border": { "color": "#5B2B8FFF", "radius": 12 }, "action": { "type": "close" } } }, "segments": [ { "message": { "text": "5% off", "color": "#FFFFFFFF" }, "color": "#5856D6FF", "weight": 1 }, { "message": { "text": "20% off", "color": "#FFFFFFFF" }, "color": "#30B0C7FF", "weight": 1, "reward": { "title": { "text": "20% off your next service", "color": "#FFFFFFFF" }, "code": "SPIN20", "button": { "text": { "text": "Claim service deal", "color": "#FFFFFFFF" }, "background": "#30B0C7FF", "border": { "color": "#30B0C7FF", "radius": 12 }, "action": { "type": "url", "url": "pushwoosh://service" } } } }, { "message": { "text": "Free wash", "color": "#FFFFFFFF" }, "color": "#FF2D55FF", "weight": 1 } ] }}stories
Anchor link toشرائح بملء الشاشة مع أشرطة تقدم في الأعلى، تشبه قصص وسائل التواصل الاجتماعي.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
loop | boolean | نعم | إعادة التشغيل من الشريحة الأولى بعد الأخيرة |
items | Item[] | نعم | الشرائح (1 على الأقل) |
عنصر القصص:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
title | Text | لا | العنوان |
message | Text | لا | العنوان الفرعي |
image | string | لا | صورة خلفية الشريحة |
buttons | Button[] | نعم | أزرار الدعوة لاتخاذ إجراء في الأسفل (يمكن أن تكون فارغة) |
duration | number | نعم | مدة الشريحة، بالثواني |
{ "displayType": "stories", "stories": { "showClose": true, "loop": false, "items": [ { "image": "https://example.com/slide-1.jpg", "title": { "text": "AMG GT R", "color": "#FFFFFFFF" }, "message": { "text": "The Green Hell special", "color": "#FFFFFFFF" }, "buttons": [ { "text": { "text": "Configure yours", "color": "#FFFFFFFF" }, "background": "#0F0F0FFF", "border": { "color": "#0F0F0FFF", "radius": 26 }, "action": { "type": "url", "url": "pushwoosh://product/n6fx" } } ], "duration": 4 }, { "image": "https://example.com/slide-2.jpg", "title": { "text": "Alpine A110", "color": "#FFFFFFFF" }, "message": { "text": "The featherweight legend, reborn", "color": "#FFFFFFFF" }, "buttons": [], "duration": 4 } ] }}video
Anchor link toفيديو بملء الشاشة مع نص وأزرار في الأعلى.
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
showClose | boolean | نعم | إظهار زر إغلاق (✕) |
loop | boolean | نعم | تكرار التشغيل |
muted | boolean | نعم | البدء بكتم الصوت |
url | string | نعم | عنوان URL للفيديو (HLS أو MP4) |
poster | string | لا | ملصق يظهر قبل بدء التشغيل |
fallback | string | لا | صورة تظهر إذا فشل تشغيل الفيديو |
title | Text | لا | العنوان |
message | Text | لا | النص الأساسي |
buttons | Button[] | نعم | أزرار الدعوة لاتخاذ إجراء في الأسفل (يمكن أن تكون فارغة) |
{ "displayType": "video", "video": { "showClose": true, "loop": true, "muted": true, "url": "https://example.com/reveal.mp4", "poster": "https://example.com/poster.jpg", "title": { "text": "The reveal", "color": "#FFFFFFFF" }, "message": { "text": "Watch it move before anyone else.", "color": "#EBEBEBFF" }, "buttons": [ { "text": { "text": "Shop the lineup", "color": "#FFFFFFFF" }, "background": "#0E72E5FF", "border": { "color": "#0E72E5FF", "radius": 14 }, "action": { "type": "url", "url": "pushwoosh://sale" } } ] }}الترجمة
Anchor link toتعيد رسائل In-App الأصلية استخدام نفس آلية الترجمة تمامًا مثل وسائط HTML الغنية: يمكن أن تحمل قيم السلاسل النصية في native-config.json عناصر نائبة {{key|type|default}}، وتوجد الترجمات في ملف pushwoosh.json بجانبه، بنفس التنسيق الموضح في إضافة pushwoosh.json. يمكن أن يظهر العنصر النائب في أي حقل سلسلة نصية، على أي عمق (عنوان، تسمية زر، عنوان URL لصورة، عنوان URL لإجراء).
المحتوى الديناميكي
Anchor link toتقبل حقول النص — title، message، text للزر، reward.title/reward.message، وmessage للعنصر/الشريحة — أيضًا المحتوى الديناميكي وبنية Liquid: نفس الاختصار {Tag|modifier|default} وعلامات Liquid {% %}/{{ }} المستخدمة في محتوى الإشعارات والبريد الإلكتروني. يقوم Pushwoosh بحل هذه لكل مستلم قبل إرسال الرسالة، بنفس الطريقة التي يفعلها مع الإشعارات والبريد الإلكتروني.
عند إنشاء قالب في محرر In-App الأصلي في لوحة التحكم، يتم عرض الرموز المدرجة كرقائق في المعاينة المباشرة، ويتم حظر الحفظ إذا لم يتم تحليل Liquid في حقل نصي.
تكامل SDK
Anchor link toبمجرد إضافة وحدة SDK لرسائل In-App الأصلية إلى تطبيقك، يتم عرض الرسائل تلقائيًا. لا يلزم وجود كود إضافي لإظهار الرسائل التي يتم تشغيلها بواسطة إشعار، أو Customer Journey، أو postEvent، أو صندوق الوارد.
يعرض SDK أيضًا واجهة برمجة تطبيقات صغيرة للتحكم اليدوي:
- iOS:
Pushwoosh.inApp(وحدةPushwooshInApp) - Android:
PushwooshInAppUi(وحدةpushwoosh-inapp-ui)
| القدرة | iOS | Android |
|---|---|---|
| عرض تكوين مباشرة (للاختبار/الاستخدام اليدوي) | Pushwoosh.inApp.present(config) | PushwooshInAppUi.present(configJson) |
| مراقبة دورة الحياة والنقرات | delegate (PWInAppMessageDelegate) | delegate (InAppMessageDelegate) |
| التحقق مما إذا كان هناك شيء على الشاشة | isPresenting | isPresenting |
| إغلاق كل ما هو معروض حاليًا | dismiss() | dismiss() |
| إيقاف / استئناف العرض | isPaused | isPaused |
فرض تحديد maxDisplays / cooldown | setFrequencyCapEnabled(_:) | setFrequencyCapEnabled(...) |
استدعاءات المندوب (جميعها تنفذ على الخيط الرئيسي): shouldDisplay (أرجع false لقمع رسالة واحدة قبل ظهورها، على سبيل المثال على شاشة الدفع)، willPresent، didPresent، didClose، و clickedAction (تنفذ عندما ينقر المستخدم على إجراء url، قبل فتح عنوان URL).
يقوم iOS بالإضافة إلى ذلك بالإبلاغ عن rewardRevealed و rewardClaimed لقوالب scratchcard و spinwheel الممتعة.
// iOSPushwoosh.inApp.delegate = selfPushwoosh.inApp.setFrequencyCapEnabled(true)// AndroidPushwooshInAppUi.delegate = thisPushwooshInAppUi.setFrequencyCapEnabled(true)