tvOS মোডাল রিচ মিডিয়া
Pushwoosh SDK সংস্করণ 6.11.0 থেকে, আপনি tvOS ডিভাইসগুলিতে (Apple TV) মোডাল রিচ মিডিয়া পাঠাতে পারবেন।
tvOS-এর জন্য মোডাল রিচ মিডিয়া একটি ইন্টারেক্টিভ HTML-ভিত্তিক কন্টেন্ট ডিসপ্লে প্রদান করে যা Apple TV-এর রিমোট কন্ট্রোল নেভিগেশনের জন্য অপ্টিমাইজ করা হয়েছে। এই রিচ মিডিয়া বিভিন্ন পজিশন, অ্যানিমেশন এবং ফোকাস নেভিগেশন সাপোর্ট সহ কাস্টমাইজ করা যেতে পারে।
রিচ মিডিয়া পেজ সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে আমাদের গাইড দেখুন।
ইনস্টলেশন
Anchor link toPushwooshTVOS মডিউলটি ঐচ্ছিক এবং এটি Swift Package Manager বা CocoaPods ব্যবহার করে আপনার tvOS প্রজেক্টে ইন্টিগ্রেট করা যেতে পারে।
Swift Package Manager
Anchor link toআপনার tvOS প্রজেক্টে Pushwoosh প্যাকেজ যোগ করুন:
- Xcode-এ, File → Add Package Dependencies… নির্বাচন করুন
- রিপোজিটরি URL লিখুন:
https://github.com/Pushwoosh/Pushwoosh-XCFramework - সর্বশেষ সংস্করণ নির্বাচন করুন
- আপনার tvOS টার্গেটে নিম্নলিখিত ফ্রেমওয়ার্কগুলি যোগ করুন:
- PushwooshFramework
- PushwooshCore
- PushwooshBridge
- PushwooshLiveActivities
- PushwooshTVOS
CocoaPods
Anchor link toআপনার Podfile-এ যোগ করুন:
target 'YourTvOSApp' do platform :tvos, '13.0'
pod 'PushwooshXCFramework' pod 'PushwooshXCFramework/PushwooshTVOS'endতারপর রান করুন:
pod installবেসিক ইন্টিগ্রেশন
Anchor link to১. আপনার AppDelegate-এ Pushwoosh কনফিগার করুন
Anchor link toপ্রয়োজনীয় মডিউলগুলি ইম্পোর্ট করুন এবং আপনার অ্যাপ্লিকেশন কোড দিয়ে Pushwoosh কনফিগার করুন:
import UIKitimport PushwooshTVOSimport PushwooshFramework
@mainclass AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Configure Pushwoosh with your app code Pushwoosh.TVoS.setAppCode("XXXXX-XXXXX")
// Register for push notifications Pushwoosh.TVoS.registerForTvPushNotifications()
return true }}২. ডিভাইস টোকেন রেজিস্ট্রেশন হ্যান্ডেল করুন
Anchor link toPushwoosh-এর সাথে ডিভাইস রেজিস্টার করার জন্য ডিভাইস টোকেন হ্যান্ডলার ইমপ্লিমেন্ট করুন:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Pushwoosh.TVoS.registerForTvPushNotifications(withToken: deviceToken) { error in if let error = error { print("Failed to register: \(error)") } else { print("Successfully registered for push notifications") } }}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { Pushwoosh.TVoS.handleTvPushRegistrationFailure(error)}৩. ইনকামিং পুশ নোটিফিকেশন হ্যান্ডেল করুন
Anchor link toরিচ মিডিয়া কন্টেন্ট সহ ইনকামিং পুশ নোটিফিকেশন প্রসেস করুন:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Handle push notification and display rich media if present if Pushwoosh.TVoS.handleTVOSPush(userInfo: userInfo) { completionHandler(.newData) } else { completionHandler(.noData) }}রিচ মিডিয়া কনফিগারেশন
Anchor link toপজিশনিং
Anchor link totvOS-এর জন্য মোডাল রিচ মিডিয়া স্ক্রিনের পাঁচটি স্থানে পজিশন করা যেতে পারে:
// সেন্টার পজিশন (ডিফল্ট)Pushwoosh.TVoS.configureRichMediaWith(position: .center, presentAnimation: .none, dismissAnimation: .none)
// স্ক্রিনের বাম দিকেPushwoosh.TVoS.configureRichMediaWith(position: .left, presentAnimation: .fromLeft, dismissAnimation: .toLeft)
// স্ক্রিনের ডান দিকেPushwoosh.TVoS.configureRichMediaWith(position: .right, presentAnimation: .fromRight, dismissAnimation: .toRight)
// স্ক্রিনের উপরেPushwoosh.TVoS.configureRichMediaWith(position: .top, presentAnimation: .fromTop, dismissAnimation: .toTop)
// স্ক্রিনের নিচেPushwoosh.TVoS.configureRichMediaWith(position: .bottom, presentAnimation: .fromBottom, dismissAnimation: .toBottom)উপলব্ধ পজিশন অপশন:
enum PWTVOSRichMediaPosition { case center // কন্টেন্ট স্ক্রিনের কেন্দ্রে পজিশন করা (ডিফল্ট) case left // কন্টেন্ট স্ক্রিনের বাম দিকে পজিশন করা case right // কন্টেন্ট স্ক্রিনের ডান দিকে পজিশন করা case top // কন্টেন্ট স্ক্রিনের উপরে পজিশন করা case bottom // কন্টেন্ট স্ক্রিনের নিচে পজিশন করা}প্রেজেন্ট অ্যানিমেশন
Anchor link toরিচ মিডিয়া কন্টেন্ট স্ক্রিনে কীভাবে প্রদর্শিত হবে তা নিয়ন্ত্রণ করুন:
enum PWTVOSRichMediaPresentAnimation { case none // কোনো অ্যানিমেশন নেই, কন্টেন্ট অবিলম্বে প্রদর্শিত হয় (ডিফল্ট) case fromTop // কন্টেন্ট স্ক্রিনের উপর থেকে স্লাইড করে আসে case fromBottom // কন্টেন্ট স্ক্রিনের নিচ থেকে স্লাইড করে আসে case fromLeft // কন্টেন্ট স্ক্রিনের বাম দিক থেকে স্লাইড করে আসে case fromRight // কন্টেন্ট স্ক্রিনের ডান দিক থেকে স্লাইড করে আসে}ডিসমিস অ্যানিমেশন
Anchor link toরিচ মিডিয়া কন্টেন্ট স্ক্রিন থেকে কীভাবে অদৃশ্য হবে তা নিয়ন্ত্রণ করুন:
enum PWTVOSRichMediaDismissAnimation { case none // কোনো অ্যানিমেশন নেই, কন্টেন্ট অবিলম্বে অদৃশ্য হয়ে যায় (ডিফল্ট) case toTop // কন্টেন্ট স্ক্রিনের উপরের দিকে স্লাইড করে বেরিয়ে যায় case toBottom // কন্টেন্ট স্ক্রিনের নিচের দিকে স্লাইড করে বেরিয়ে যায় case toLeft // কন্টেন্ট স্ক্রিনের বাম দিকে স্লাইড করে বেরিয়ে যায় case toRight // কন্টেন্ট স্ক্রিনের ডান দিকে স্লাইড করে বেরিয়ে যায়}কনফিগারেশন উদাহরণ
Anchor link toঅ্যানিমেশন সহ বাম দিকে প্রদর্শিত হওয়ার জন্য রিচ মিডিয়া কনফিগার করুন:
Pushwoosh.TVoS.configureRichMediaWith( position: .left, presentAnimation: .fromBottom, dismissAnimation: .toLeft)স্লাইড অ্যানিমেশন সহ নিচে প্রদর্শিত হওয়ার জন্য রিচ মিডিয়া কনফিগার করুন:
Pushwoosh.TVoS.configureRichMediaWith( position: .bottom, presentAnimation: .fromBottom, dismissAnimation: .toBottom)অ্যানিমেশন ছাড়া কেন্দ্রে প্রদর্শিত হওয়ার জন্য রিচ মিডিয়া কনফিগার করুন:
Pushwoosh.TVoS.configureRichMediaWith( position: .center, presentAnimation: .none, dismissAnimation: .none)ক্লোজ বাটন কনফিগারেশন
Anchor link toডিফল্টরূপে, রিচ মিডিয়া প্রেজেন্টেশনের নিচে একটি ক্লোজ বাটন প্রদর্শিত হয়। প্রয়োজনে আপনি এই বাটনটি লুকাতে পারেন:
// সিস্টেম ক্লোজ বাটনটি লুকানPushwoosh.TVoS.configureCloseButton(false)Apple TV-এর জন্য ফোকাস নেভিগেশন
Anchor link totvOS SDK স্বয়ংক্রিয়ভাবে Apple TV-এর রিমোট কন্ট্রোলের জন্য ফোকাস নেভিগেশন পরিচালনা করে। আপনার রিচ মিডিয়া HTML কন্টেন্টের ইন্টারেক্টিভ এলিমেন্টগুলি (বাটন, লিঙ্ক) Apple TV রিমোট ব্যবহার করে ফোকাসযোগ্য হবে।
ফোকাস আচরণ
Anchor link to- HTML কন্টেন্টে ফোকাসযোগ্য এলিমেন্টগুলি স্বয়ংক্রিয়ভাবে সনাক্ত করা হয়
- ব্যবহারকারীরা Apple TV রিমোটের ডিরেকশনাল প্যাড ব্যবহার করে এলিমেন্টগুলির মধ্যে নেভিগেট করতে পারে
- বর্তমানে ফোকাস করা এলিমেন্টটি একটি ভিজ্যুয়াল হাইলাইট পায়
- ব্যবহারকারীরা রিমোটের সেন্টার বাটন টিপে ফোকাস করা এলিমেন্টগুলি সক্রিয় করতে পারে
- সিস্টেম ক্লোজ বাটন (যখন দৃশ্যমান থাকে) ফোকাস নেভিগেশনের একটি অংশ
HTML কন্টেন্টের জন্য সেরা অনুশীলন
Anchor link totvOS রিচ মিডিয়ার জন্য HTML কন্টেন্ট তৈরি করার সময়:
- স্ট্যান্ডার্ড ইন্টারেক্টিভ HTML এলিমেন্ট ব্যবহার করুন:
<button>,<a>,<input /> - পরিষ্কার ফোকাস ইঙ্গিতের জন্য ইন্টারেক্টিভ এলিমেন্টগুলির মধ্যে পর্যাপ্ত ব্যবধান নিশ্চিত করুন
- ফোকাস নেভিগেশন যাচাই করতে Apple TV সিমুলেটর দিয়ে আপনার কন্টেন্ট পরীক্ষা করুন
- iOS-এর তুলনায় বড় টাচ টার্গেট ব্যবহার করার কথা বিবেচনা করুন (ন্যূনতম 250pt প্রস্থ প্রস্তাবিত)
সম্পূর্ণ ইন্টিগ্রেশন উদাহরণ
Anchor link toএখানে সমস্ত ফিচার দেখানো একটি সম্পূর্ণ উদাহরণ দেওয়া হলো:
import UIKitimport PushwooshTVOSimport PushwooshFramework
@mainclass AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Pushwoosh কনফিগার করুন Pushwoosh.TVoS.setAppCode("XXXXX-XXXXX")
// রিচ মিডিয়ার অ্যাপিয়ারেন্স কনফিগার করুন Pushwoosh.TVoS.configureRichMediaWith( position: .center, presentAnimation: .fromBottom, dismissAnimation: .toTop )
// ক্লোজ বাটন দেখান (ডিফল্ট) Pushwoosh.TVoS.configureCloseButton(true)
// পুশ নোটিফিকেশনের জন্য রেজিস্টার করুন Pushwoosh.TVoS.registerForTvPushNotifications()
return true }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Pushwoosh.TVoS.registerForTvPushNotifications(withToken: deviceToken) { error in if let error = error { print("Failed to register: \(error)") } else { print("Successfully registered") } } }
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { Pushwoosh.TVoS.handleTvPushRegistrationFailure(error) }
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if Pushwoosh.TVoS.handleTVOSPush(userInfo: userInfo) { completionHandler(.newData) } else { completionHandler(.noData) } }}ট্রাবলশুটিং
Anchor link toফোকাস নেভিগেশন সমস্যা
Anchor link toযদি ফোকাস নেভিগেশন সঠিকভাবে কাজ না করে:
- যাচাই করুন যে আপনার HTML কন্টেন্ট স্ট্যান্ডার্ড ইন্টারেক্টিভ এলিমেন্ট (
<button>,<a>) ব্যবহার করছে - ফোকাস আচরণ যাচাই করতে Apple TV সিমুলেটরে পরীক্ষা করুন
- নিশ্চিত করুন যে ইন্টারেক্টিভ এলিমেন্টগুলির পর্যাপ্ত আকার এবং ব্যবধান রয়েছে
- চেক করুন যে আপনার HTML/CSS ফোকাস স্টেটগুলির সাথে হস্তক্ষেপ করছে না
রিয়েল ডিভাইস উদাহরণ
Anchor link toএকটি আসল Apple TV ডিভাইসে রিচ মিডিয়া কেমন দেখায় তা এখানে দেওয়া হলো:

স্ক্রিনশটটি Apple TV-তে প্রদর্শিত রিচ মিডিয়া কন্টেন্ট দেখাচ্ছে যেখানে রয়েছে:
- গ্রেডিয়েন্ট ব্যাকগ্রাউন্ড সহ কাস্টম HTML লেআউট
- Apple TV রিমোট কন্ট্রোলের জন্য অপ্টিমাইজ করা ইন্টারেক্টিভ বাটন
- সমস্ত ইন্টারেক্টিভ এলিমেন্টের জন্য ফোকাস নেভিগেশন সাপোর্ট