नेटिव इन-ऐप टेम्प्लेट सिंटैक्स
नेटिव इन-ऐप्स सीधे SDK द्वारा रेंडर किए जाते हैं। इसमें कोई WebView शामिल नहीं है। index.html पेज के बजाय, ZIP रिसोर्स में एक native-config.json फ़ाइल होती है जो संदेश को संरचित डेटा (लेआउट प्रकार, टेक्स्ट, रंग, चित्र, बटन) के रूप में वर्णित करती है। SDK इस फ़ाइल को पढ़ता है और मेल खाने वाले नेटिव व्यू को ड्रॉ करता है, जो एम्बेडेड वेब पेज की तुलना में स्मूथ एनिमेशन और बेहतर प्रदर्शन देता है।
यह गाइड native-config.json स्कीमा का दस्तावेजीकरण करती है: प्रत्येक डिस्प्ले प्रकार के लिए फ़ील्ड, प्रकार और उदाहरण। क्लासिक HTML-आधारित प्रारूप के लिए, रिच मीडिया टेम्प्लेट सिंटैक्स देखें।
पूर्वापेक्षाएँ
Anchor link toनेटिव इन-ऐप्स के लिए आवश्यक है:
- 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एक नेटिव इन-ऐप टेम्प्लेट एक ZIP आर्काइव है, जो एक नियमित रिच मीडिया टेम्प्लेट के समान है, सिवाय इसके कि रूट में index.html के बजाय एक native-config.json फ़ाइल होती है:
<template>.zip├── native-config.json ← आवश्यक, लेआउट और सामग्री├── pushwoosh.json ← वैकल्पिक, स्थानीयकरण (नीचे देखें)native-config.json (image, poster, fallback, url पर pip/video) से संदर्भित चित्र और वीडियो पूर्ण HTTPS URL होने चाहिए। SDK उन्हें नेटवर्क पर लोड करता है। यह आर्काइव से स्थानीय फ़ाइलों को नहीं पढ़ता है।
कॉन्फ़िग स्वयं एक एकल JSON ऑब्जेक्ट है:
{ "displayType": "<type>", "<type>": { /* इस प्रकार के लिए सामग्री ब्लॉक */ } }displayType नीचे दिए गए दस प्रारूपों में से एक का चयन करता है। मेल खाने वाली कुंजी के तहत ऑब्जेक्ट उस प्रारूप की सामग्री रखता है। एक अज्ञात displayType, एक अनुपलब्ध सामग्री ब्लॉक, या एक खाली आवश्यक सूची (items के लिए carousel/stories, segments के लिए spinwheel) वाला कॉन्फ़िग अमान्य है। SDK टूटे हुए लेआउट को रेंडर करने के बजाय इसे दिखाना छोड़ देता है।
डिलीवरी सेटिंग्स (प्रारंभ/अंतिम तिथियां और फ़्रीक्वेंसी कैपिंग) native-config.json का हिस्सा नहीं हैं। उन्हें किसी भी अन्य इन-ऐप के लिए उसी तरह कॉन्फ़िगर किया जाता है, अभियान के डिस्प्ले सेटिंग्स चरण में।
फ़्रीक्वेंसी कैपिंग को नेटिव इन-ऐप्स पर प्रभावी होने के लिए एक स्पष्ट SDK-साइड ऑप्ट-इन की भी आवश्यकता होती है। SDK एकीकरण देखें।
प्रत्येक रंग मान एक CSS हेक्स स्ट्रिंग है: #RGB, #RGBA, #RRGGBB, या #RRGGBBAA। चारों रूपों में अग्रणी # आवश्यक है।
साझा बिल्डिंग ब्लॉक्स
Anchor link toये छोटे ऑब्जेक्ट कई डिस्प्ले प्रकारों में पुन: उपयोग किए जाते हैं।
टेक्स्ट
Anchor link to| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
text | string | हाँ | टेक्स्ट सामग्री |
color | string | हाँ | टेक्स्ट का रंग |
{ "text": "Spin for a garage perk", "color": "#FFFFFFFF" }बॉर्डर
Anchor link to| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
color | string | हाँ | बॉर्डर का रंग |
radius | number | हाँ | कोने की त्रिज्या, पॉइंट्स में |
{ "color": "#0E72E5FF", "radius": 12 }एक पृष्ठभूमि रंग के ऊपर एक वैकल्पिक छवि। fullscreen और scratchcard द्वारा उपयोग किया जाता है।
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
image | string | नहीं | कवर छवि URL |
background | string | हाँ | छवि के नीचे (या बजाय) दिखाया गया पृष्ठभूमि रंग |
{ "image": "https://example.com/cover.jpg", "background": "#1A1A1EFF" }एक्शन
Anchor link totype पर एक विभेदित संघ:
| संस्करण | फ़ील्ड | विवरण |
|---|---|---|
{ "type": "close" } | कोई नहीं | इन-ऐप बंद करता है |
{ "type": "url", "url": string } | url आवश्यक | एक URL या डीप लिंक खोलता है |
{ "type": "url", "url": "pushwoosh://sale" }| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
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" }}इनाम
Anchor link toscratchcard और 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 toबैनर
Anchor link toस्क्रीन के ऊपरी या निचले किनारे पर डॉक किया गया एक कॉम्पैक्ट बार।
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
showClose | boolean | हाँ | एक बंद (✕) बटन दिखाएं |
position | top | bottom | हाँ | स्क्रीन का किनारा |
background | string | हाँ | बार का पृष्ठभूमि रंग |
image | string | नहीं | बाईं ओर थंबनेल |
title | Text | नहीं | एकल-पंक्ति शीर्षक, एक इलिप्सिस के साथ छोटा किया गया |
message | Text | नहीं | बॉडी टेक्स्ट, 2 पंक्तियों तक |
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 }}कैरोसेल
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" } } ] }}फुलस्क्रीन
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" } } ] }}मोडल
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" } }}स्क्रैचकार्ड
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" } } } }}एक कार्ड जो निचले किनारे पर पिन किया गया है, जिसमें एक ड्रैग हैंडल है।
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
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" } } ] }}स्पिनव्हील
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 की अपेक्षा करता है) |
खंड:
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
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 } ] }}स्टोरीज़
Anchor link toसोशल मीडिया स्टोरीज़ के समान, शीर्ष पर प्रगति बार के साथ पूर्ण-स्क्रीन स्लाइड।
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
showClose | boolean | हाँ | एक बंद (✕) बटन दिखाएं |
loop | boolean | हाँ | अंतिम स्लाइड के बाद पहली स्लाइड से पुनरारंभ करें |
items | Item[] | हाँ | स्लाइड (कम से कम 1) |
स्टोरीज़ आइटम:
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
title | Text | नहीं | शीर्षक |
message | Text | नहीं | उपशीर्षक |
image | string | नहीं | स्लाइड पृष्ठभूमि छवि |
buttons | Button[] | हाँ | नीचे CTA बटन (खाली हो सकते हैं) |
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 } ] }}वीडियो
Anchor link toऊपर टेक्स्ट और बटन के साथ पूर्ण-स्क्रीन वीडियो।
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
showClose | boolean | हाँ | एक बंद (✕) बटन दिखाएं |
loop | boolean | हाँ | प्लेबैक लूप करें |
muted | boolean | हाँ | म्यूट करके शुरू करें |
url | string | हाँ | वीडियो URL (HLS या MP4) |
poster | string | नहीं | प्लेबैक शुरू होने से पहले दिखाया गया पोस्टर |
fallback | string | नहीं | वीडियो चलाने में विफल होने पर दिखाई गई छवि |
title | Text | नहीं | शीर्षक |
message | Text | नहीं | बॉडी टेक्स्ट |
buttons | Button[] | हाँ | नीचे CTA बटन (खाली हो सकते हैं) |
{ "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नेटिव इन-ऐप्स HTML रिच मीडिया के समान ही स्थानीयकरण तंत्र का पुन: उपयोग करते हैं: native-config.json में स्ट्रिंग मान {{key|type|default}} प्लेसहोल्डर ले जा सकते हैं, और अनुवाद इसके बगल में एक pushwoosh.json फ़ाइल में रहते हैं, उसी प्रारूप में जैसा कि pushwoosh.json जोड़ना में वर्णित है। एक प्लेसहोल्डर किसी भी स्ट्रिंग फ़ील्ड में, किसी भी गहराई पर (एक शीर्षक, एक बटन लेबल, एक छवि URL, एक एक्शन URL) दिखाई दे सकता है।
गतिशील सामग्री
Anchor link toटेक्स्ट फ़ील्ड — title, message, बटन text, reward.title/reward.message, और आइटम/सेगमेंट message — गतिशील सामग्री और लिक्विड सिंटैक्स को भी स्वीकार करते हैं: पुश और ईमेल सामग्री में उपयोग किए जाने वाले समान {Tag|modifier|default} शॉर्टहैंड और {% %}/{{ }} लिक्विड टैग। Pushwoosh संदेश भेजे जाने से पहले इन्हें प्रति प्राप्तकर्ता हल करता है, उसी तरह जैसे यह पुश और ईमेल के लिए करता है।
कंट्रोल पैनल नेटिव इन-ऐप एडिटर में एक टेम्प्लेट बनाते समय, डाले गए टोकन लाइव पूर्वावलोकन में चिप्स के रूप में प्रस्तुत होते हैं, और यदि किसी टेक्स्ट फ़ील्ड का लिक्विड पार्स नहीं होता है तो सहेजें अवरुद्ध हो जाता है।
SDK एकीकरण
Anchor link toएक बार जब आप अपने ऐप में नेटिव इन-ऐप SDK मॉड्यूल जोड़ लेते हैं, तो संदेश स्वचालित रूप से प्रदर्शित होते हैं। पुश, Customer Journey, postEvent, या इनबॉक्स द्वारा ट्रिगर किए गए संदेशों को दिखाने के लिए किसी अतिरिक्त कोड की आवश्यकता नहीं है।
SDK मैन्युअल नियंत्रण के लिए एक छोटा API भी उजागर करता है:
- 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 अतिरिक्त रूप से गेमिफाइड scratchcard और spinwheel टेम्प्लेट के लिए rewardRevealed और rewardClaimed की रिपोर्ट करता है।
// iOSPushwoosh.inApp.delegate = selfPushwoosh.inApp.setFrequencyCapEnabled(true)// AndroidPushwooshInAppUi.delegate = thisPushwooshInAppUi.setFrequencyCapEnabled(true)