বিষয়বস্তুতে যান

tvOS মোডাল রিচ মিডিয়া

Pushwoosh SDK সংস্করণ 6.11.0 থেকে, আপনি tvOS ডিভাইসগুলিতে (Apple TV) মোডাল রিচ মিডিয়া পাঠাতে পারবেন।

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

রিচ মিডিয়া পেজ সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে আমাদের গাইড দেখুন।

ইনস্টলেশন

Anchor link to

PushwooshTVOS মডিউলটি ঐচ্ছিক এবং এটি Swift Package Manager বা CocoaPods ব্যবহার করে আপনার tvOS প্রজেক্টে ইন্টিগ্রেট করা যেতে পারে।

Swift Package Manager

Anchor link to

আপনার tvOS প্রজেক্টে Pushwoosh প্যাকেজ যোগ করুন:

  1. Xcode-এ, FileAdd Package Dependencies… নির্বাচন করুন
  2. রিপোজিটরি URL লিখুন: https://github.com/Pushwoosh/Pushwoosh-XCFramework
  3. সর্বশেষ সংস্করণ নির্বাচন করুন
  4. আপনার tvOS টার্গেটে নিম্নলিখিত ফ্রেমওয়ার্কগুলি যোগ করুন:
    • PushwooshFramework
    • PushwooshCore
    • PushwooshBridge
    • PushwooshLiveActivities
    • PushwooshTVOS

আপনার Podfile-এ যোগ করুন:

target 'YourTvOSApp' do
platform :tvos, '13.0'
pod 'PushwooshXCFramework'
pod 'PushwooshXCFramework/PushwooshTVOS'
end

তারপর রান করুন:

Terminal window
pod install

বেসিক ইন্টিগ্রেশন

Anchor link to

১. আপনার AppDelegate-এ Pushwoosh কনফিগার করুন

Anchor link to

প্রয়োজনীয় মডিউলগুলি ইম্পোর্ট করুন এবং আপনার অ্যাপ্লিকেশন কোড দিয়ে Pushwoosh কনফিগার করুন:

import UIKit
import PushwooshTVOS
import PushwooshFramework
@main
class 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 to

Pushwoosh-এর সাথে ডিভাইস রেজিস্টার করার জন্য ডিভাইস টোকেন হ্যান্ডলার ইমপ্লিমেন্ট করুন:

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 to

tvOS-এর জন্য মোডাল রিচ মিডিয়া স্ক্রিনের পাঁচটি স্থানে পজিশন করা যেতে পারে:

// সেন্টার পজিশন (ডিফল্ট)
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 to

tvOS SDK স্বয়ংক্রিয়ভাবে Apple TV-এর রিমোট কন্ট্রোলের জন্য ফোকাস নেভিগেশন পরিচালনা করে। আপনার রিচ মিডিয়া HTML কন্টেন্টের ইন্টারেক্টিভ এলিমেন্টগুলি (বাটন, লিঙ্ক) Apple TV রিমোট ব্যবহার করে ফোকাসযোগ্য হবে।

ফোকাস আচরণ

Anchor link to
  • HTML কন্টেন্টে ফোকাসযোগ্য এলিমেন্টগুলি স্বয়ংক্রিয়ভাবে সনাক্ত করা হয়
  • ব্যবহারকারীরা Apple TV রিমোটের ডিরেকশনাল প্যাড ব্যবহার করে এলিমেন্টগুলির মধ্যে নেভিগেট করতে পারে
  • বর্তমানে ফোকাস করা এলিমেন্টটি একটি ভিজ্যুয়াল হাইলাইট পায়
  • ব্যবহারকারীরা রিমোটের সেন্টার বাটন টিপে ফোকাস করা এলিমেন্টগুলি সক্রিয় করতে পারে
  • সিস্টেম ক্লোজ বাটন (যখন দৃশ্যমান থাকে) ফোকাস নেভিগেশনের একটি অংশ

HTML কন্টেন্টের জন্য সেরা অনুশীলন

Anchor link to

tvOS রিচ মিডিয়ার জন্য HTML কন্টেন্ট তৈরি করার সময়:

  1. স্ট্যান্ডার্ড ইন্টারেক্টিভ HTML এলিমেন্ট ব্যবহার করুন: <button>, <a>, <input />
  2. পরিষ্কার ফোকাস ইঙ্গিতের জন্য ইন্টারেক্টিভ এলিমেন্টগুলির মধ্যে পর্যাপ্ত ব্যবধান নিশ্চিত করুন
  3. ফোকাস নেভিগেশন যাচাই করতে Apple TV সিমুলেটর দিয়ে আপনার কন্টেন্ট পরীক্ষা করুন
  4. iOS-এর তুলনায় বড় টাচ টার্গেট ব্যবহার করার কথা বিবেচনা করুন (ন্যূনতম 250pt প্রস্থ প্রস্তাবিত)

সম্পূর্ণ ইন্টিগ্রেশন উদাহরণ

Anchor link to

এখানে সমস্ত ফিচার দেখানো একটি সম্পূর্ণ উদাহরণ দেওয়া হলো:

import UIKit
import PushwooshTVOS
import PushwooshFramework
@main
class 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

যদি ফোকাস নেভিগেশন সঠিকভাবে কাজ না করে:

  1. যাচাই করুন যে আপনার HTML কন্টেন্ট স্ট্যান্ডার্ড ইন্টারেক্টিভ এলিমেন্ট (<button>, <a>) ব্যবহার করছে
  2. ফোকাস আচরণ যাচাই করতে Apple TV সিমুলেটরে পরীক্ষা করুন
  3. নিশ্চিত করুন যে ইন্টারেক্টিভ এলিমেন্টগুলির পর্যাপ্ত আকার এবং ব্যবধান রয়েছে
  4. চেক করুন যে আপনার HTML/CSS ফোকাস স্টেটগুলির সাথে হস্তক্ষেপ করছে না

রিয়েল ডিভাইস উদাহরণ

Anchor link to

একটি আসল Apple TV ডিভাইসে রিচ মিডিয়া কেমন দেখায় তা এখানে দেওয়া হলো:

tvOS Rich Media on Apple TV

স্ক্রিনশটটি Apple TV-তে প্রদর্শিত রিচ মিডিয়া কন্টেন্ট দেখাচ্ছে যেখানে রয়েছে:

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

রেফারেন্স

Anchor link to