নিম্নলিখিত পদ্ধতি আপনাকে আপনার iOS প্রেরক অ্যাপটিকে Cast SDK v2 থেকে CAF সেন্ডারে রূপান্তর করতে সক্ষম করে, যা GCKCastContext সিঙ্গেলটনের উপর ভিত্তি করে।
ভূমিকা
- CAF প্রেরক এখনও Google Cast ডেভেলপার ওয়েবসাইট এবং CocoaPods- এ বিতরণ করা হয়, যেমন v2৷
- নতুন ক্লাস যোগ করা হয়েছে যা Google Cast ডিজাইন চেকলিস্ট মেনে চলার দায়িত্ব নেয়।
- CAF প্রেরক উইজেট প্রদান করে যা Cast UX প্রয়োজনীয়তা মেনে চলে; v2 কোনো UI উপাদান প্রদান করেনি এবং আপনাকে এই উইজেটগুলি বাস্তবায়ন করতে হবে।
- CAF প্রেরকের ডিজাইন Cast Android SDK ডিজাইনের সাথে সামঞ্জস্যপূর্ণ।
- CAF প্রেরক বিটকোড সমর্থন করে, যেমন v2।
- CAF-তে ক্লোজড ক্যাপশনিং v2 এর মতো।
নির্ভরতা
CAF প্রেরক iOS 8 এবং পরবর্তী সংস্করণ সমর্থন করে।
সূচনা
CAF-তে, কাস্ট ফ্রেমওয়ার্কের জন্য একটি সুস্পষ্ট সূচনা পদক্ষেপ প্রয়োজন। ওয়েব রিসিভার অ্যাপ্লিকেশন আইডি এবং অন্য কোনো বৈশ্বিক বিকল্প নির্দিষ্ট করার জন্য একটি উপযুক্ত GCKCastOptions
ব্যবহার করে GCKCastContext
সিঙ্গেলটন শুরু করা জড়িত। এটি সাধারণত AppDelegate
-[application:didFinishLaunchingWithOptions:]
পদ্ধতিতে করা হয়:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
এই পদক্ষেপটি v2 তে প্রয়োজনীয় ছিল না।
ডিভাইস আবিষ্কার
CAF-তে, আবিষ্কার প্রক্রিয়াটি ফ্রেমওয়ার্ক দ্বারা স্বয়ংক্রিয়ভাবে শুরু হয় এবং বন্ধ হয়ে যায় যখন অ্যাপটি ফোরগ্রাউন্ডে আসে এবং যথাক্রমে ব্যাকগ্রাউন্ডে যায়। v2 থেকে GCKDeviceScanner
এবং GCKFilterCriteria
ক্লাসগুলি অবহেলিত এবং ব্যবহার করা উচিত নয়৷
কাস্ট বোতাম এবং কাস্ট ডায়ালগ
CAF-তে, কাস্ট বোতাম এবং ডায়ালগ ফ্রেমওয়ার্ক দ্বারা সরবরাহ করা হয়। কাস্ট বোতামটি তাৎক্ষণিকভাবে নেভিগেশন বারে যুক্ত করা যেতে পারে:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
কাস্ট বোতামটি স্টোরিবোর্ডেও যোগ করা যেতে পারে।
যখন কেউ বোতামে ট্যাপ করে, কাস্ট ডায়ালগ স্বয়ংক্রিয়ভাবে উপস্থাপন করা হয়।
ডিভাইস নিয়ন্ত্রণ
CAF-তে, ডিভাইস নিয়ন্ত্রণ মূলত ফ্রেমওয়ার্ক দ্বারা পরিচালিত হয়। প্রেরক অ্যাপ্লিকেশনটিকে ডিভাইসের সাথে সংযোগ করা এবং ওয়েব রিসিভার অ্যাপ্লিকেশন চালু করা পরিচালনা করার প্রয়োজন নেই৷ v2 ক্লাস GCKDeviceManager
অবচিত এবং ব্যবহার করা উচিত নয়। প্রেরক এবং ওয়েব রিসিভারের মধ্যে মিথস্ক্রিয়া এখন একটি "সেশন" হিসাবে উপস্থাপন করা হয়। CAF GCKSessionManager
ক্লাস সেশন লাইফসাইকেল পরিচালনা করে এবং ব্যবহারকারীর অঙ্গভঙ্গির প্রতিক্রিয়ায় সেশনগুলি স্বয়ংক্রিয়ভাবে শুরু এবং বন্ধ করে দেয়: একটি সেশন শুরু হয় যখন ব্যবহারকারী কাস্ট ডায়ালগে একটি কাস্ট ডিভাইস নির্বাচন করে এবং যখন ব্যবহারকারী কাস্টে "স্টপ কাস্টিং" বোতামে ট্যাপ করে তখন শেষ হয় ডায়ালগ বা যখন প্রেরক অ্যাপ নিজেই বন্ধ হয়ে যায়। GCKSessionManager
এর সাথে একটি GCKSessionManagerListener
রেজিস্টার করে সেশন লাইফসাইকেল ইভেন্টের বিষয়ে প্রেরকের আবেদন জানানো যেতে পারে। GCKSessionManagerListener
প্রোটোকল সমস্ত সেশন জীবনচক্র ইভেন্টের জন্য কলব্যাক পদ্ধতি সংজ্ঞায়িত করে।
GCKCastSession
ক্লাস একটি কাস্ট ডিভাইস সহ একটি সেশন উপস্থাপন করে। ক্লাসে ডিভাইসের ভলিউম এবং নিঃশব্দ অবস্থা নিয়ন্ত্রণ করার পদ্ধতি রয়েছে, যা পূর্বে GCKDeviceManager
এ পদ্ধতি ব্যবহার করে v2 তে করা হয়েছিল।
v2-এ, GCKDeviceManagerDelegate
প্রোটোকল ভলিউম, নিঃশব্দ অবস্থা, স্ট্যান্ডবাই স্ট্যাটাস ইত্যাদি সহ ডিভাইসের অবস্থার পরিবর্তনের বিজ্ঞপ্তি প্রদান করে। CAF-তে, ভলিউম/মিউট স্টেট পরিবর্তনের বিজ্ঞপ্তিগুলি GCKSessionManagerListener
প্রোটোকলে কলব্যাক পদ্ধতির মাধ্যমে বিতরণ করা হয়; এই শ্রোতারা GCKSessionManager
এর সাথে নিবন্ধিত। অবশিষ্ট ডিভাইসের অবস্থার সমস্ত বিজ্ঞপ্তি একটি GCKCastDeviceStatusListener
প্রোটোকলের মাধ্যমে বিতরণ করা হয়; এই শ্রোতারা GCKCastSession
এর সাথে নিবন্ধিত।
পুনঃসংযোগ যুক্তি
v2 এর মতো, CAF অস্থায়ী ওয়াইফাই সিগন্যাল ক্ষতি বা অন্যান্য নেটওয়ার্ক ত্রুটির কারণে হারিয়ে যাওয়া নেটওয়ার্ক সংযোগগুলি পুনঃস্থাপন করার চেষ্টা করে। এটি এখন সেশন স্তরে করা হয়; সংযোগ হারিয়ে গেলে একটি সেশন একটি "সাসপেন্ডেড" অবস্থায় প্রবেশ করতে পারে এবং সংযোগ পুনরুদ্ধার করা হলে এটি একটি "সংযুক্ত" অবস্থায় ফিরে যাবে। ফ্রেমওয়ার্ক ওয়েব রিসিভার অ্যাপ্লিকেশনের সাথে পুনঃসংযোগের যত্ন নেয় এবং এই প্রক্রিয়ার অংশ হিসাবে যেকোনও কাস্ট চ্যানেল পুনঃসংযোগ করে।
উপরন্তু, CAF এছাড়াও স্বয়ংক্রিয় অধিবেশন পুনরায় শুরু যোগ করে. যদি প্রেরকের অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে পাঠানো হয় বা একটি কাস্ট সেশন চলাকালীন (সোয়াইপ-অ্যাওয়ে বা ক্র্যাশের কারণে) বন্ধ করা হয়, প্রেরক অ্যাপ্লিকেশনটি ফোরগ্রাউন্ডে ফিরে গেলে বা পুনরায় লঞ্চ করা হলে ফ্রেমওয়ার্ক সেই সেশনটি পুনরায় শুরু করার চেষ্টা করবে ; এটি GCKSessionManager
দ্বারা স্বয়ংক্রিয়ভাবে পরিচালনা করা হয়, যা যেকোনো নিবন্ধিত GCKSessionManagerListener
দৃষ্টান্তে উপযুক্ত কলব্যাক জারি করবে।
কাস্টম চ্যানেল নিবন্ধন
v2-এ, কাস্টম চ্যানেলগুলি (একটি GCKCastChannel
সাবক্লাস বা একটি GCKGenericChannel
এবং প্রতিনিধি ব্যবহার করে বাস্তবায়িত) GCKDeviceManager
এর সাথে নিবন্ধিত ছিল। CAF-তে, কাস্টম চ্যানেলগুলি পরিবর্তে GCKCastSession
উদাহরণের সাথে নিবন্ধিত হয়। নিবন্ধনটি GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
কলব্যাক পদ্ধতিতে করা যেতে পারে। মিডিয়া অ্যাপ্লিকেশনের জন্য, GCKMediaControlChannel
স্পষ্টভাবে নিবন্ধন করার আর প্রয়োজন নেই; আরো বিস্তারিত জানার জন্য নিম্নলিখিত বিভাগ দেখুন.
মিডিয়া নিয়ন্ত্রণ
v2 ক্লাস GCKMediaControlChannel
অবচিত এবং ব্যবহার করা উচিত নয়। CAF-তে, এটিকে নতুন GCKRemoteMediaClient
ক্লাস দ্বারা স্থানান্তর করা হয়েছে, যা আরও সুবিধাজনক API-এ সমতুল্য কার্যকারিতা প্রদান করে। এই বস্তুটিকে স্পষ্টভাবে আরম্ভ বা নিবন্ধন করার প্রয়োজন নেই; ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে অবজেক্টটিকে ইনস্ট্যান্টিয়েট করবে এবং অধিবেশন শুরুর সময়ে অন্তর্নিহিত মিডিয়া চ্যানেল নিবন্ধন করবে যদি ওয়েব রিসিভার অ্যাপ্লিকেশন মিডিয়া নেমস্পেস সমর্থন করে।
GCKCastSession
অবজেক্টের -[remoteMediaClient]
বৈশিষ্ট্যের সাথে GCKRemoteMediaClient
অ্যাক্সেস করা যেতে পারে।
v2-এ, GCKMediaControlChannel
এ জারি করা সমস্ত মিডিয়া অনুরোধ একটি সাংখ্যিক অনুরোধ আইডি ফেরত দেবে, এবং GCKMediaControlChannelDelegate
এর পদ্ধতিগুলি অনুরোধ সম্পূর্ণ বা ব্যর্থতা সম্পর্কে বিজ্ঞপ্তি পাঠানোর সময় এই ID প্রদান করবে।
CAF-তে, GCKRemoteMediaClient
এ জারি করা সমস্ত মিডিয়া অনুরোধ একটি GCKRequest
অবজেক্ট ফেরত দেবে; এই অবজেক্টের একটি সম্পর্কিত GCKRequestDelegate
প্রোটোকল রয়েছে যা অনুরোধের অগ্রগতি এবং চূড়ান্ত ফলাফল ট্র্যাক করতে ব্যবহার করা যেতে পারে।
v2 GCKMediaControlChannel
; GCKMediaControlChannelDelegate
এর মাধ্যমে ওয়েব রিসিভারে মিডিয়া প্লেয়ারের অবস্থার পরিবর্তন সম্পর্কে বিজ্ঞপ্তি পাঠাবে। CAF-তে, GCKRemoteMediaClient
তার GCKRemoteMediaClientListener
প্রোটোকলের মাধ্যমে সমতুল্য কলব্যাক প্রদান করে। যেকোন সংখ্যক শ্রোতা GCKRemoteMediaClient
এর সাথে নিবন্ধিত হতে পারে, যা একাধিক প্রেরক উপাদানকে সেশনের সাথে যুক্ত GCKRemoteMediaClient
এর একক দৃষ্টান্ত শেয়ার করতে দেয়।
v2-এ, প্রেরক অ্যাপ্লিকেশনটিকে ওয়েব রিসিভারে মিডিয়া প্লেয়ার স্টেটের সাথে ইউজার ইন্টারফেস সিঙ্কে রাখার ভার নিতে হয়েছিল। CAF-তে, ক্লাস GCKUIMediaController
এই দায়িত্বের বেশিরভাগই নেয়; এই উপাদানটি কীভাবে ব্যবহার করবেন তার উদাহরণের জন্য কোডল্যাব টিউটোরিয়াল ডকুমেন্টেশন দেখুন।
পরিচায়ক ওভারলে
V2 একটি পরিচায়ক ওভারলে UI প্রদান করে না।
CAF একটি পদ্ধতির সাথে GCKCastContext
ক্লাস যুক্ত করে -[presentCastInstructionsViewControllerOnce]
যেটি ব্যবহারকারীদের কাছে প্রথম দেখানো হলে একটি প্রেরক অ্যাপ কাস্ট বোতাম হাইলাইট করতে ব্যবহার করতে পারে।
মিনি কন্ট্রোলার
v2-এ, আপনাকে প্রেরক অ্যাপে স্ক্র্যাচ থেকে একটি মিনি কন্ট্রোলার প্রয়োগ করতে হবে।
CAF-এ, ফ্রেমওয়ার্ক একটি কন্ট্রোল বার প্রদান করে, GCKUIMiniMediaControlsViewController
, যা আপনি সেই দৃশ্যগুলিতে যোগ করতে পারেন যেখানে আপনি ক্রমাগত নিয়ন্ত্রণগুলি দেখাতে চান৷ একটি প্রেরক অ্যাপে মিনি কন্ট্রোলার যোগ করার দুটি উপায় রয়েছে:
আপনার বিদ্যমান ভিউ কন্ট্রোলারকে
GCKUICastContainerViewController
দিয়ে মোড়ানো এবং এর ভিউয়ের নীচে একটিGCKUIMiniMediaControlsViewController
যোগ করে কাস্ট ফ্রেমওয়ার্ককে মিনি কন্ট্রোলারের লেআউট পরিচালনা করতে দিন।একটি
GCKUIMiniMediaControlsViewController
দৃষ্টান্ত তৈরি করতে-[createMiniMediaControlsViewController]
ব্যবহার করে আপনার বিদ্যমান ভিউ কন্ট্রোলারে সরাসরি মিনি কন্ট্রোলার যোগ করুন এবং তারপর একটি সাবভিউ হিসাবে কন্টেইনার ভিউ কন্ট্রোলারে যোগ করুন।
প্রসারিত নিয়ামক
v2-এ, আপনাকে প্রেরক অ্যাপে স্ক্র্যাচ থেকে একটি প্রসারিত নিয়ামক প্রয়োগ করতে হবে।
CAF যোগ করে GCKUIMediaController
, যা আপনি একটি প্রসারিত কন্ট্রোলারকে আরও সহজে প্রয়োগ করতে ব্যবহার করতে পারেন।
CAF একটি প্রাক-নির্মিত প্রসারিত কন্ট্রোলার উইজেট GCKUIExpandedMediaControlsViewController
যোগ করে যা আপনি সহজভাবে আপনার অ্যাপে যোগ করতে পারেন। GCKUIMediaController
ব্যবহার করে আপনাকে আর একটি কাস্টম প্রসারিত কন্ট্রোলার প্রয়োগ করতে হবে না।
ডিবাগ লগিং
V2 থেকে GCKLogger
এবং GCKLoggerDelegate
ক্লাসগুলি কিছু পরিবর্তন এবং বর্ধিতকরণ সহ CAF-তে নিয়ে যাওয়া হয়।
GCKLoggerDelegate
-[logFromFunction:message:]
পদ্ধতিটি -[logMessage:fromFunction:]
এর পক্ষে বাতিল করা হয়েছে।
ফ্রেমওয়ার্ক লগ বার্তাগুলি এখন একটি উপযুক্ত GCKLoggerFilter
দৃষ্টান্ত তৈরি করে এবং GCKLogger
সিঙ্গেলটনের -[filter]
বৈশিষ্ট্য সেট করার মাধ্যমে ফিল্টার করা যেতে পারে।
নমুনা অ্যাপ্লিকেশন
আমরা CAF-এর জন্য লেখা কোডল্যাব এবং নমুনা অ্যাপগুলি দেখার পরামর্শ দিই।