iOS मोडल रिच मीडिया
Pushwoosh SDK संस्करण 6.7.5 से, आपके पास मोडल रिच मीडिया भेजने की क्षमता है।
हम नए मोडल रिच मीडिया पेश कर रहे हैं, जिन्हें कस्टमाइज़ किया जा सकता है। नए मोडल रिच मीडिया स्क्रीन को पूरी तरह से ब्लॉक नहीं करते हैं और स्क्रीन के विभिन्न हिस्सों (ऊपर, नीचे और केंद्र) में रखे जा सकते हैं।
रिच मीडिया पेजों पर अधिक जानकारी के लिए, कृपया हमारी गाइड देखें।
कॉन्फ़िगरेशन
Anchor link to//for silent push notificationsfunc application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { Pushwoosh.sharedInstance().handlePushReceived(userInfo) completionHandler(.noData)}- मोडल रिच मीडिया के प्रदर्शन को सक्षम करने के लिए, अपने info.plist में
Pushwoosh_RICH_MEDIA_STYLEपैरामीटर सेट करें और इसेMODAL_RICH_MEDIAमान असाइन करें।
Info.plist:
<key>Pushwoosh_RICH_MEDIA_STYLE</key><string>MODAL_RICH_MEDIA</string>- डिफ़ॉल्ट रूप से, मोडल रिच मीडिया स्क्रीन के केंद्र में नीचे से ऊपर की ओर दिखने वाले एनीमेशन के साथ प्रदर्शित होगा।
- मोडल रिच मीडिया के प्रदर्शन (स्क्रीन स्थिति, शो एनीमेशन, क्लोज एनीमेशन) को कॉन्फ़िगर करने के लिए, आपको निम्नलिखित विधि का उपयोग करने की आवश्यकता है:
// Modal Rich Media ConfigurationPWModalWindowConfiguration.shared().configureModalWindow(with: .PWModalWindowPositionCenter, present: .PWAnimationPresentFromBottom, dismiss: .PWAnimationDismissUp)मोडल रिच मीडिया की स्थिति
Anchor link toमोडल रिच मीडिया को तीन स्थानों पर रखा जा सकता है: ऊपर, नीचे या केंद्र।
/** Enum defining the possible positions for displaying a modal window.
- `PWModalWindowPositionTop`: The modal window appears at the top of the screen, within the safe area. - `PWModalWindowPositionCenter`: The modal window appears at the center of the screen, within the safe area. - `PWModalWindowPositionBottom`: The modal window appears at the bottom of the screen, within the safe area. - `PWModalWindowPositionBottomSheet`: The modal window appears at the very bottom of the screen, ignoring the safe area. - `PWModalWindowPositionDefault`: The default position is the center of the screen, within the safe area. */typedef NS_ENUM(NSInteger, ModalWindowPosition) { PWModalWindowPositionTop, // Appears at the top of the screen (within safe area) PWModalWindowPositionCenter, // Appears at the center of the screen (within safe area) PWModalWindowPositionBottom, // Appears at the bottom of the screen (within safe area) PWModalWindowPositionBottomSheet, // Appears at the very bottom of the screen (ignores safe area) PWModalWindowPositionFullScreen, // Fullscreen, ignores safe area insets PWModalWindowPositionDefault // Default position (center of the screen, within safe area)};नीचे दिया गया उदाहरण स्क्रीन के शीर्ष पर प्रदर्शित एक मोडल रिच मीडिया दिखाता है।
मोडल रिच मीडिया शो एनीमेशन में शामिल हैं:
typedef NS_ENUM(NSInteger, PresentModalWindowAnimation) { PWAnimationPresentFromBottom, PWAnimationPresentFromTop, PWAnimationPresentFromRight, PWAnimationPresentFromLeft, PWAnimationPresentNone};मोडल रिच मीडिया क्लोज एनीमेशन में शामिल हैं:
typedef NS_ENUM(NSInteger, DismissModalWindowAnimation) { PWAnimationDismissDown, PWAnimationDismissUp, PWAnimationDismissLeft, PWAnimationDismissRight, PWAnimationCurveEaseInOut, PWAnimationDismissNone,
/** * Default dismiss animation is `PWAnimationCurveEaseInOut` */ PWAnimationDismissDefault};नीचे दिया गया उदाहरण स्क्रीन के नीचे बाएं से दाएं शो एनीमेशन और दाईं ओर क्लोज एनीमेशन के साथ मोडल रिच मीडिया प्रदर्शित करता है:
मोडल रिच मीडिया के लिए अतिरिक्त पैरामीटर
Anchor link toमोडल रिच मीडिया को प्रदर्शित करने के लिए अतिरिक्त मापदंडों में कंपन प्रकार की हैप्टिक फीडबैक जोड़ना, स्वाइप जेस्चर को सक्षम करना, और एक निर्दिष्ट अवधि के बाद एक स्वचालित क्लोज टाइमर सेट करना जैसे विकल्प शामिल हैं।
// Haptic Feedback TypePWModalWindowConfiguration.shared().setPresent(.PWHapticFeedbackLight)
/**enum HapticFeedbackType
typedef NS_ENUM(NSInteger, HapticFeedbackType) { PWHapticFeedbackLight, // Light vibration feedback PWHapticFeedbackMedium, // Medium vibration feedback PWHapticFeedbackHard, // Strong vibration feedback
/** * Vibration is off by default. */ PWHapticFeedbackNone};*/
// Swipe directionslet directions: [NSNumber] = [ NSNumber(value: DismissSwipeDirection.PWSwipeDismissDown.rawValue), NSNumber(value: DismissSwipeDirection.PWSwipeDismissUp.rawValue)]PWModalWindowConfiguration.shared().setDismissSwipeDirections(directions)
/**typedef NS_ENUM(NSInteger, DismissSwipeDirection) { PWSwipeDismissDown, PWSwipeDismissUp, PWSwipeDismissLeft, PWSwipeDismissRight, PWSwipeDismissNone};*/
// Set Rich Media corner radiusPWModalWindowConfiguration.shared().setCornerType([.PWCornerTypeTopLeft, .PWCornerTypeBottomRight], withRadius: 30.0)
// Close Modal Rich Media after N secondsPWModalWindowConfiguration.shared().closeModalWindow(after: 3)PWRichMediaPresentingDelegate
Anchor link toमोडल रिच मीडिया की कतार को प्रबंधित करने के लिए, आपको PWRichMediaPresentingDelegate के डेलीगेट तरीकों को लागू करने की आवश्यकता है। इस कार्यक्षमता का उपयोग करते समय, मोडल रिच मीडिया क्रमिक रूप से प्रस्तुत किए जाते हैं, और अगला तब तक प्रदर्शित नहीं होगा जब तक कि उपयोगकर्ता वर्तमान को बंद नहीं कर देता। एक बार जब उपयोगकर्ता प्रस्तुत रिच मीडिया को बंद कर देता है, तो अगला, जो एक अलग पुश नोटिफिकेशन का हिस्सा था, दिखाया जाएगा।
इस कार्यक्षमता को लागू करने के लिए, नीचे दिए गए कोड का उपयोग करें:
import UIKitimport PushwooshFramework
class ViewController: UIViewController {
override func viewDidLoad() { super.viewDidLoad()
PWRichMediaManager.shared().delegate = ChainedRichMediaPresentingDelegate.init(queue: [], inApp: false) }}
class ChainedRichMediaPresentingDelegate: NSObject, PWRichMediaPresentingDelegate {
var queue: [PWRichMedia] var inAppIsPresenting: Bool
init(queue: [PWRichMedia], inApp: Bool) { self.queue = queue self.inAppIsPresenting = inApp super.init() // can actually be omitted in this example because will happen automatically. }
convenience override init() { self.init(queue: [], inApp: false) }
func richMediaManager(_ richMediaManager: PWRichMediaManager!, shouldPresent richMedia: PWRichMedia!) -> Bool { if !queue.contains(where: { $0 === richMedia }) { queue.append(richMedia) } return !inAppIsPresenting }
func richMediaManager(_ richMediaManager: PWRichMediaManager!, didPresent richMedia: PWRichMedia!) { inAppIsPresenting = true }
func richMediaManager(_ richMediaManager: PWRichMediaManager!, didClose richMedia: PWRichMedia!) { inAppIsPresenting = false
if let idx = queue.firstIndex(where: { $0 === richMedia }) { queue.remove(at: idx) }
if ((queue.count) != 0) { PWModalWindowConfiguration.shared().presentModalWindow(queue.first!) } }
func richMediaManager(_ richMediaManager: PWRichMediaManager!, presentingDidFailFor richMedia: PWRichMedia!, withError error: Error!) { self.richMediaManager(richMediaManager, didClose: richMedia) }}