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.configure.handlePushReceived(userInfo) completionHandler(.noData)}বিকল্প ১: 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>বিকল্প ২: প্রোগ্রাম্যাটিক কনফিগারেশন (SDK 7.0.14+)
Anchor link toআপনি আপনার AppDelegate-এ প্রোগ্রাম্যাটিকভাবে রিচ মিডিয়া প্রেজেন্টেশন স্টাইল কনফিগার করতে পারেন:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set modal presentation style Pushwoosh.media.setRichMediaPresentationStyle(.modal)
// Configure modal window appearance Pushwoosh.media.modalRichMedia.configure( position: .PWModalWindowPositionBottom, presentAnimation: .PWAnimationPresentFromBottom, dismissAnimation: .PWAnimationDismissDown )
Pushwoosh.configure.registerForPushNotifications() return true}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Set modal presentation style [[Pushwoosh media] setRichMediaPresentationStyle:PWRichMediaPresentationStyleModal];
// Configure modal window appearance [[[Pushwoosh media] modalRichMedia] configureWithPosition:PWModalWindowPositionBottom presentAnimation:PWAnimationPresentFromBottom dismissAnimation:PWAnimationDismissDown];
[[Pushwoosh configure] registerForPushNotifications]; return YES;}ডিফল্টরূপে, মোডাল রিচ মিডিয়া স্ক্রিনের কেন্দ্রে নিচ থেকে উপরে প্রদর্শিত হওয়ার অ্যানিমেশন সহ দেখানো হবে।
মোডাল রিচ মিডিয়া পজিশনিং
Anchor link toমোডাল রিচ মিডিয়া স্ক্রিনের বিভিন্ন স্থানে স্থাপন করা যেতে পারে।
/** মোডাল উইন্ডো প্রদর্শনের জন্য সম্ভাব্য অবস্থানগুলি সংজ্ঞায়িত করে এমন enum।
- `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মোডাল রিচ মিডিয়া প্রদর্শনের জন্য অতিরিক্ত প্যারামিটারগুলির মধ্যে ভাইব্রেশন টাইপের হ্যাপটিক ফিডব্যাক যোগ করা, সোয়াইপ জেসচার সক্ষম করা এবং একটি নির্দিষ্ট সময় পরে একটি স্বয়ংক্রিয় ক্লোজ টাইমার সেট করার মতো বিকল্পগুলি অন্তর্ভুক্ত রয়েছে।
// Haptic Feedback TypePushwoosh.media.modalRichMedia.setHapticFeedbackType(.PWHapticFeedbackLight)
// Swipe directions to dismissPushwoosh.media.modalRichMedia.setDismissSwipeDirections([ NSNumber(value: DismissSwipeDirection.PWSwipeDismissDown.rawValue), NSNumber(value: DismissSwipeDirection.PWSwipeDismissUp.rawValue)])
// Set Rich Media corner radiuslet topCorners = PWCornerTypeTopLeft.rawValue | PWCornerTypeTopRight.rawValuePushwoosh.media.modalRichMedia.setCornerType(CornerType(rawValue: topCorners), withRadius: 16)
// Close Modal Rich Media after N secondsPushwoosh.media.modalRichMedia.closeAfter(3)// Haptic Feedback Type[[[Pushwoosh media] modalRichMedia] setHapticFeedbackType:PWHapticFeedbackLight];
// Swipe directions to dismiss[[[Pushwoosh media] modalRichMedia] setDismissSwipeDirections:@[ @(PWSwipeDismissDown), @(PWSwipeDismissUp)]];
// Set Rich Media corner radiusCornerType topCorners = PWCornerTypeTopLeft | PWCornerTypeTopRight;[[[Pushwoosh media] modalRichMedia] setCornerType:topCorners withRadius:16.0];
// Close Modal Rich Media after N seconds[[[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