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)}বিকল্প ১: 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 {
// মোডাল উপস্থাপনা শৈলী সেট করুন 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মোডাল রিচ মিডিয়া স্ক্রিনের বিভিন্ন স্থানে অবস্থান করানো যেতে পারে।
/** একটি মোডাল উইন্ডো প্রদর্শনের জন্য সম্ভাব্য অবস্থানগুলি নির্ধারণকারী 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মোডাল রিচ মিডিয়া প্রদর্শনের জন্য অতিরিক্ত প্যারামিটারগুলির মধ্যে রয়েছে ভাইব্রেশন টাইপের হ্যাপটিক ফিডব্যাক যোগ করা, সোয়াইপ জেসচার সক্রিয় করা এবং একটি নির্দিষ্ট সময় পরে একটি স্বয়ংক্রিয় ক্লোজ টাইমার সেট করা।
// হ্যাপটিক ফিডব্যাক টাইপ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