iOS मोडल रिच मीडिया
Pushwoosh SDK संस्करण 6.7.5 से, आप मोडल रिच मीडिया भेज सकते हैं।
हम नए मोडल रिच मीडिया पेश कर रहे हैं, जिन्हें अनुकूलित किया जा सकता है। नए मोडल रिच मीडिया स्क्रीन को पूरी तरह से ब्लॉक नहीं करते हैं और स्क्रीन के विभिन्न हिस्सों (ऊपर, नीचे, और केंद्र) में स्थित किए जा सकते हैं।
रिच मीडिया पृष्ठों पर अधिक जानकारी के लिए, कृपया हमारी गाइड देखें।
कॉन्फ़िगरेशन
Anchor link to//साइलेंट पुश नोटिफिकेशन के लिएfunc application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { Pushwoosh.configure.handlePushReceived(userInfo) completionHandler(.noData)}विकल्प 1: Info.plist कॉन्फ़िगरेशन
Anchor link toमोडल रिच मीडिया के प्रदर्शन को सक्षम करने के लिए, अपने info.plist में Pushwoosh_RICH_MEDIA_STYLE पैरामीटर सेट करें और इसे MODAL_RICH_MEDIA मान असाइन करें।
Info.plist:
<key>Pushwoosh_RICH_MEDIA_STYLE</key><string>MODAL_RICH_MEDIA</string>विकल्प 2: प्रोग्रामेटिक कॉन्फ़िगरेशन (SDK 7.0.14+)
Anchor link toआप अपने AppDelegate में रिच मीडिया प्रस्तुति शैली को प्रोग्रामेटिक रूप से भी कॉन्फ़िगर कर सकते हैं:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// मोडल प्रस्तुति शैली सेट करें Pushwoosh.media.setRichMediaPresentationStyle(.modal)
// मोडल विंडो की उपस्थिति को कॉन्फ़िगर करें Pushwoosh.media.modalRichMedia.configure( position: .PWModalWindowPositionBottom, presentAnimation: .PWAnimationPresentFromBottom, dismissAnimation: .PWAnimationDismissDown )
Pushwoosh.configure.registerForPushNotifications() return true}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// मोडल प्रस्तुति शैली सेट करें [[Pushwoosh media] setRichMediaPresentationStyle:PWRichMediaPresentationStyleModal];
// मोडल विंडो की उपस्थिति को कॉन्फ़िगर करें [[[Pushwoosh media] modalRichMedia] configureWithPosition:PWModalWindowPositionBottom presentAnimation:PWAnimationPresentFromBottom dismissAnimation:PWAnimationDismissDown];
[[Pushwoosh configure] registerForPushNotifications]; return YES;}डिफ़ॉल्ट रूप से, मोडल रिच मीडिया स्क्रीन के केंद्र में नीचे से ऊपर की ओर दिखने वाले एनीमेशन के साथ प्रदर्शित होगा।
मोडल रिच मीडिया की स्थिति
Anchor link toमोडल रिच मीडिया को स्क्रीन पर विभिन्न स्थानों पर स्थित किया जा सकता है।
/** मोडल विंडो प्रदर्शित करने के लिए संभावित स्थितियों को परिभाषित करने वाला एनम।
- `PWModalWindowPositionTop`: मोडल विंडो स्क्रीन के शीर्ष पर, सुरक्षित क्षेत्र के भीतर दिखाई देती है। - `PWModalWindowPositionCenter`: मोडल विंडो स्क्रीन के केंद्र में, सुरक्षित क्षेत्र के भीतर दिखाई देती है। - `PWModalWindowPositionBottom`: मोडल विंडो स्क्रीन के नीचे, सुरक्षित क्षेत्र के भीतर दिखाई देती है। - `PWModalWindowPositionBottomSheet`: मोडल विंडो स्क्रीन के बिल्कुल नीचे दिखाई देती है, सुरक्षित क्षेत्र को अनदेखा करते हुए। - `PWModalWindowPositionDefault`: डिफ़ॉल्ट स्थिति स्क्रीन का केंद्र है, सुरक्षित क्षेत्र के भीतर। */typedef NS_ENUM(NSInteger, ModalWindowPosition) { PWModalWindowPositionTop, // स्क्रीन के शीर्ष पर दिखाई देता है (सुरक्षित क्षेत्र के भीतर) PWModalWindowPositionCenter, // स्क्रीन के केंद्र में दिखाई देता है (सुरक्षित क्षेत्र के भीतर) PWModalWindowPositionBottom, // स्क्रीन के नीचे दिखाई देता है (सुरक्षित क्षेत्र के भीतर) PWModalWindowPositionBottomSheet, // स्क्रीन के बिल्कुल नीचे दिखाई देता है (सुरक्षित क्षेत्र को अनदेखा करता है) PWModalWindowPositionFullScreen, // फुलस्क्रीन, सुरक्षित क्षेत्र इनसेट को अनदेखा करता है PWModalWindowPositionDefault // डिफ़ॉल्ट स्थिति (स्क्रीन का केंद्र, सुरक्षित क्षेत्र के भीतर)};नीचे दिया गया उदाहरण स्क्रीन के शीर्ष पर प्रदर्शित एक मोडल रिच मीडिया दिखाता है।
मोडल रिच मीडिया शो एनिमेशन में शामिल हैं:
typedef NS_ENUM(NSInteger, PresentModalWindowAnimation) { PWAnimationPresentFromBottom, PWAnimationPresentFromTop, PWAnimationPresentFromRight, PWAnimationPresentFromLeft, PWAnimationPresentNone};मोडल रिच मीडिया क्लोज एनिमेशन में शामिल हैं:
typedef NS_ENUM(NSInteger, DismissModalWindowAnimation) { PWAnimationDismissDown, PWAnimationDismissUp, PWAnimationDismissLeft, PWAnimationDismissRight, PWAnimationCurveEaseInOut, PWAnimationDismissNone,
/** * डिफ़ॉल्ट डिसमिस एनीमेशन `PWAnimationCurveEaseInOut` है */ PWAnimationDismissDefault};नीचे दिया गया उदाहरण स्क्रीन के नीचे बाएं से दाएं शो एनीमेशन और दाईं ओर क्लोज एनीमेशन के साथ मोडल रिच मीडिया का प्रदर्शन दिखाता है:
मोडल रिच मीडिया के लिए अतिरिक्त पैरामीटर
Anchor link toमोडल रिच मीडिया प्रदर्शित करने के लिए अतिरिक्त पैरामीटर में कंपन प्रकार का हैप्टिक फीडबैक जोड़ना, स्वाइप जेस्चर को सक्षम करना, और एक निर्दिष्ट अवधि के बाद एक स्वचालित क्लोज टाइमर सेट करना जैसे विकल्प शामिल हैं।
// हैप्टिक फीडबैक प्रकारPushwoosh.media.modalRichMedia.setHapticFeedbackType(.PWHapticFeedbackLight)
// खारिज करने के लिए स्वाइप दिशाएंPushwoosh.media.modalRichMedia.setDismissSwipeDirections([ NSNumber(value: DismissSwipeDirection.PWSwipeDismissDown.rawValue), NSNumber(value: DismissSwipeDirection.PWSwipeDismissUp.rawValue)])
// रिच मीडिया कॉर्नर रेडियस सेट करेंlet topCorners = PWCornerTypeTopLeft.rawValue | PWCornerTypeTopRight.rawValuePushwoosh.media.modalRichMedia.setCornerType(CornerType(rawValue: topCorners), withRadius: 16)
// N सेकंड के बाद मोडल रिच मीडिया बंद करेंPushwoosh.media.modalRichMedia.closeAfter(3)// हैप्टिक फीडबैक प्रकार[[[Pushwoosh media] modalRichMedia] setHapticFeedbackType:PWHapticFeedbackLight];
// खारिज करने के लिए स्वाइप दिशाएं[[[Pushwoosh media] modalRichMedia] setDismissSwipeDirections:@[ @(PWSwipeDismissDown), @(PWSwipeDismissUp)]];
// रिच मीडिया कॉर्नर रेडियस सेट करेंCornerType topCorners = PWCornerTypeTopLeft | PWCornerTypeTopRight;[[[Pushwoosh media] modalRichMedia] setCornerType:topCorners withRadius:16.0];
// N सेकंड के बाद मोडल रिच मीडिया बंद करें[[[Pushwoosh media] modalRichMedia] closeAfter:3.0];हैप्टिक फीडबैक प्रकार:
typedef NS_ENUM(NSInteger, HapticFeedbackType) { PWHapticFeedbackLight, // हल्का कंपन फीडबैक PWHapticFeedbackMedium, // मध्यम कंपन फीडबैक PWHapticFeedbackHard, // मजबूत कंपन फीडबैक PWHapticFeedbackNone // कंपन बंद है (डिफ़ॉल्ट)};स्वाइप दिशाएं:
typedef NS_ENUM(NSInteger, DismissSwipeDirection) { PWSwipeDismissDown, PWSwipeDismissUp, PWSwipeDismissLeft, PWSwipeDismissRight, PWSwipeDismissNone};PWRichMediaPresentingDelegate
Anchor link toमोडल रिच मीडिया की कतार को प्रबंधित करने के लिए, आपको PWRichMediaPresentingDelegate के डेलीगेट तरीकों को लागू करने की आवश्यकता है।
इस कार्यक्षमता का उपयोग करते समय, मोडल रिच मीडिया क्रमिक रूप से प्रस्तुत किए जाते हैं, और अगला तब तक प्रदर्शित नहीं होगा जब तक उपयोगकर्ता वर्तमान को बंद नहीं कर देता। एक बार जब उपयोगकर्ता प्रस्तुत रिच मीडिया को बंद कर देता है, तो अगला, जो एक अलग पुश नोटिफिकेशन का हिस्सा था, दिखाया जाएगा।
import UIKitimport PushwooshFramework
@mainclass AppDelegate: UIResponder, UIApplicationDelegate, PWRichMediaPresentingDelegate {
var richMediaQueue: [PWRichMedia] = [] var isPresenting = false
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// मोडल रिच मीडिया कॉन्फ़िगर करें Pushwoosh.media.setRichMediaPresentationStyle(.modal) Pushwoosh.media.modalRichMedia.configure( position: .PWModalWindowPositionBottom, presentAnimation: .PWAnimationPresentFromBottom, dismissAnimation: .PWAnimationDismissDown )
// डेलीगेट सेट करें Pushwoosh.media.modalRichMedia.delegate = self
Pushwoosh.configure.registerForPushNotifications() return true }
// MARK: - PWRichMediaPresentingDelegate
func richMediaManager(_ richMediaManager: PWRichMediaManager, shouldPresent richMedia: PWRichMedia) -> Bool { if !richMediaQueue.contains(where: { $0 === richMedia }) { richMediaQueue.append(richMedia) } return !isPresenting }
func richMediaManager(_ richMediaManager: PWRichMediaManager, didPresent richMedia: PWRichMedia) { isPresenting = true }
func richMediaManager(_ richMediaManager: PWRichMediaManager, didClose richMedia: PWRichMedia) { isPresenting = false
if let idx = richMediaQueue.firstIndex(where: { $0 === richMedia }) { richMediaQueue.remove(at: idx) }
// कतार में अगला रिच मीडिया प्रस्तुत करें if let nextRichMedia = richMediaQueue.first { Pushwoosh.media.modalRichMedia.present(nextRichMedia) } }
func richMediaManager(_ richMediaManager: PWRichMediaManager, presentingDidFailFor richMedia: PWRichMedia, withError error: Error) { richMediaManager(richMediaManager, didClose: richMedia) }}#import "AppDelegate.h"#import <PushwooshFramework/PushwooshFramework.h>
@interface AppDelegate () <PWRichMediaPresentingDelegate>
@property (nonatomic, strong) NSMutableArray<PWRichMedia *> *richMediaQueue;@property (nonatomic, assign) BOOL isPresenting;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.richMediaQueue = [NSMutableArray array]; self.isPresenting = NO;
// मोडल रिच मीडिया कॉन्फ़िगर करें [[Pushwoosh media] setRichMediaPresentationStyle:PWRichMediaPresentationStyleModal]; [[[Pushwoosh media] modalRichMedia] configureWithPosition:PWModalWindowPositionBottom presentAnimation:PWAnimationPresentFromBottom dismissAnimation:PWAnimationDismissDown];
// डेलीगेट सेट करें [[[Pushwoosh media] modalRichMedia] setDelegate:self];
[[Pushwoosh configure] registerForPushNotifications]; return YES;}
#pragma mark - PWRichMediaPresentingDelegate
- (BOOL)richMediaManager:(PWRichMediaManager *)richMediaManager shouldPresentRichMedia:(PWRichMedia *)richMedia { if (![self.richMediaQueue containsObject:richMedia]) { [self.richMediaQueue addObject:richMedia]; } return !self.isPresenting;}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didPresentRichMedia:(PWRichMedia *)richMedia { self.isPresenting = YES;}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didCloseRichMedia:(PWRichMedia *)richMedia { self.isPresenting = NO;
[self.richMediaQueue removeObject:richMedia];
// कतार में अगला रिच मीडिया प्रस्तुत करें if (self.richMediaQueue.count > 0) { [[[Pushwoosh media] modalRichMedia] presentRichMedia:self.richMediaQueue.firstObject]; }}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager presentingDidFailForRichMedia:(PWRichMedia *)richMedia withError:(NSError *)error { [self richMediaManager:richMediaManager didCloseRichMedia:richMedia];}
@end