iOS Send ऐप्लिकेशन को Cast SDK v2 से Cast ऐप्लिकेशन फ़्रेमवर्क (CAF) में माइग्रेट करें

इस प्रोसेस की मदद से, iOS SDK टूल को Cast SDK टूल v2 से CAF Sender में बदला जा सकता है. यह GCKCastContext के सिंगल पर आधारित होता है.

सुविधा के बारे में जानकारी

  • CAF भेजने वाले को अब भी Google Cast डेवलपर वेबसाइट और CocoaPods, जैसे कि v2 पर बांटा जाता है.
  • नई क्लास जोड़ी गई हैं, जो Google Cast डिज़ाइन चेकलिस्ट के अनुपालन की ज़िम्मेदारी लेती हैं.
  • CAF की मदद से भेजने वाले उपयोगकर्ता, Cast UX की ज़रूरी शर्तों का पालन करने वाले विजेट उपलब्ध कराते हैं. वर्शन 2 को किसी भी यूज़र इंटरफ़ेस (यूआई) का कॉम्पोनेंट नहीं मिला है और आपको इन विजेट को लागू करने की ज़रूरत है.
  • CAF की मदद से भेजने वाले का डिज़ाइन, Android SDK टूल के डिज़ाइन से मेल खाता है.
  • CAF भेजने वाले के पास बिट कोड होता है, जैसे कि v2.
  • CAF में सबटाइटल v2 के जैसा ही होता है.

डिपेंडेंसी

CAF, iOS 8 और उसके बाद के वर्शन पर काम करता है.

डेटा लेयर में इवेंट बनाने की प्रोसेस

CAF में, कास्ट फ़्रेमवर्क के लिए एक साफ़ शुरू करने वाला चरण ज़रूरी होता है. इसमें GCKCastContext सिंगलटन को शुरू करना शामिल है. इसके लिए, सही GCKCastOptions का इस्तेमाल किया गया है, ताकि वेब रिसीवर ऐप्लिकेशन आईडी और किसी भी दूसरे ग्लोबल विकल्प के बारे में बताया जा सके. आम तौर पर, ऐसा AppDelegate -[application:didFinishLaunchingWithOptions:] तरीके से किया जाता है:

GCKCastOptions *options = [[GCKCastOptions alloc]
    initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];

वर्शन 2 में यह चरण ज़रूरी नहीं था.

कास्ट की सुविधा वाले डिवाइस खोजना

CAF में, खोज की प्रक्रिया फ़्रेम के ज़रिए अपने-आप शुरू हो जाती है. जब ऐप्लिकेशन फ़ोरग्राउंड पर आता है और बैकग्राउंड में जाता है, तब यह प्रक्रिया अपने-आप बंद हो जाती है. वर्शन 2 की 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 में किया जाता था.

वर्शन 2 में, GCKDeviceManagerDelegate प्रोटोकॉल ने डिवाइस की स्थिति में हुए बदलावों की सूचनाएं दी थीं. इनमें आवाज़, म्यूट की स्थिति, स्टैंडबाय स्थिति वगैरह शामिल हैं. सीएएफ़ में, आवाज़/म्यूटेशन की स्थिति में होने वाली सूचनाएं GCKSessionManagerListener प्रोटोकॉल में कॉलबैक मैथड के ज़रिए दी जाती हैं. ये लिसनर GCKSessionManager के साथ रजिस्टर होते हैं. डिवाइस की बाकी बची सभी स्थितियों के बारे में सूचनाएं, GCKCastDeviceStatusListener प्रोटोकॉल के ज़रिए दी जाती हैं. ये सुनने वाले, GCKCastSession के साथ रजिस्टर होते हैं.

फिर से कनेक्शन करने का तर्क

वर्शन 2 की तरह, CAF नेटवर्क कनेक्शन को फिर से बनाने की कोशिश करता है जो कुछ समय के लिए वाई-फ़ाई सिग्नल खो जाने या नेटवर्क में होने वाली दूसरी गड़बड़ियों की वजह से खो जाते हैं. यह अब सत्र स्तर पर किया जाता है; जब कनेक्शन टूट जाता है, तो सत्र एक "निलंबित" स्थिति में जा सकता है और कनेक्टिविटी बहाल होने पर वापस "कनेक्ट है" स्थिति में चला जाएगा. फ़्रेमवर्क, वेब रिसीवर ऐप्लिकेशन से फिर से कनेक्ट करता है और इस प्रक्रिया के भाग के रूप में किसी भी कास्ट चैनल को फिर से कनेक्ट करता है.

इसके अलावा, CAF अपने-आप सेशन फिर से शुरू होने की सुविधा भी जोड़ता है. अगर भेजने वाला ऐप्लिकेशन बैकग्राउंड में भेजा जाता है या कास्ट सेशन चालू रहने के दौरान बंद (स्वाइप करके या क्रैश की वजह से) किया जाता है, तो फ़्रेमवर्क उस सेशन को फिर से शुरू करने की कोशिश करता है. जब भेजने वाला ऐप्लिकेशन फ़ोरग्राउंड पर लौटता है या फिर से लॉन्च होता है, तब यह अपने-आप GCKSessionManager के ज़रिए मैनेज हो जाता है. इससे, रजिस्टर किए गए सभी GCKSessionManagerListener इंस्टेंस पर सही कॉलबैक जारी हो जाएंगे.

कस्टम चैनल रजिस्ट्रेशन

वर्शन 2 में, कस्टम चैनलों को (GCKCastChannel सब-क्लास या GCKGenericChannel और डेलिगेट का इस्तेमाल करके) GCKDeviceManager के साथ रजिस्टर किया गया था. CAF में, कस्टम चैनलों को GCKCastSession इंस्टेंस के साथ रजिस्टर किया जाता है. रजिस्ट्रेशन GCKSessionManagerListener -[sessionManager:didStartCastSession:] कॉलबैक तरीके से किया जा सकता है. मीडिया ऐप्लिकेशन के लिए, अब GCKMediaControlChannel को साफ़ तौर पर रजिस्टर करना ज़रूरी नहीं है. ज़्यादा जानकारी के लिए यह सेक्शन देखें.

मीडिया नियंत्रण

v2 क्लास GCKMediaControlChannel को रोक दिया गया है और इसका इस्तेमाल नहीं किया जाना चाहिए. सीएएफ़ में, नए GCKRemoteMediaClient क्लास की जगह ले ली जाती है, जिससे ज़्यादा आसानी से एपीआई काम करता है. इस ऑब्जेक्ट को साफ़ तौर पर चालू या रजिस्टर करने की ज़रूरत नहीं है. फ़्रेमवर्क अपने-आप ऑब्जेक्ट को इंस्टैंशिएट कर देगा और सेशन शुरू होने पर मीडिया नामस्थान की सुविधा देने वाले वेब रिसीवर ऐप्लिकेशन के कनेक्ट होने पर मीडिया चैनल को रजिस्टर कर देगा.

GCKRemoteMediaClient -[remoteMediaClient] brGCKCastSession की ऑब्जेक्ट के साथ ऐक्सेस किया जा सकता है.

वर्शन 2 में, GCKMediaControlChannel पर जारी किए गए सभी मीडिया अनुरोधों के लिए, अंकों का अनुरोध आईडी दिया जाएगा. GCKMediaControlChannelDelegate को अनुरोध करने के तरीके से, अनुरोध पूरा होने या विफल होने के बारे में सूचनाएं भेजी जाएंगी.

CAF में, GCKRemoteMediaClient पर जारी किए गए सभी मीडिया अनुरोधों के लिए GCKRequest ऑब्जेक्ट दिया जाएगा. इस ऑब्जेक्ट के साथ GCKRequestDelegate प्रोटोकॉल का इस्तेमाल किया जाएगा, जिसका इस्तेमाल अनुरोध की प्रगति और उसके नतीजों को ट्रैक करने के लिए किया जा सकता है.

वर्शन 2GCKMediaControlChannel; GCKMediaControlChannelDelegate के ज़रिए वेब रिसीवर पर मीडिया प्लेयर की स्थिति में हुए बदलावों के बारे में सूचनाएं भेजेगा. CAF में, GCKRemoteMediaClient को अपने GCKRemoteMediaClientListener प्रोटोकॉल के ज़रिए समान कॉलबैक देता है. GCKRemoteMediaClient की मदद से, कितने भी लिसनर रजिस्टर किए जा सकते हैं. इससे, भेजने वाले कई कॉम्पोनेंट, सेशन से जुड़े GCKRemoteMediaClient के एक ही इंस्टेंस को शेयर कर सकते हैं.

वर्शन 2 में, भेजने वाले ऐप्लिकेशन को वेब रिसीवर पर मीडिया प्लेयर की स्थिति के साथ उपयोगकर्ता इंटरफ़ेस को सिंक रखने का बोझ उठाना पड़ा. CAF में, क्लास GCKUIMediaController इस ज़्यादातर ज़िम्मेदारी को निभाती है. इस कॉम्पोनेंट को इस्तेमाल करने के तरीके से जुड़े उदाहरणों के लिए, कोडलैब ट्यूटोरियल का दस्तावेज़ देखें.

शुरुआती ओवरले

वर्शन 2 शुरुआती ओवरले नहीं देता.

CAF की मदद से क्लास GCKCastContext को इस तरीके से जोड़ा जाता है -[presentCastInstructionsViewControllerOnce] उपयोगकर्ताओं को पहली बार दिखाए जाने पर, Cast ऐप्लिकेशन उनके बटन को हाइलाइट करने के लिए, मैसेज भेजने वाले ऐप्लिकेशन का इस्तेमाल कर सकता है.

मिनी कंट्रोलर

वर्शन 2 में, आपको भेजने वाले ऐप्लिकेशन में एक मिनी कंट्रोलर लागू करना होगा.

सीएएफ़ में, फ़्रेमवर्क एक कंट्रोल बार देता है, GCKUIMiniMediaControlsViewController. जिसे आप उन सीन में जोड़ सकते हैं जहां आपको लगातार कंट्रोल दिखाने हैं. मिनी कंट्रोलर को भेजने वाले ऐप्लिकेशन में जोड़ने के दो तरीके हैं:

  • कास्ट फ़्रेमवर्क को अपने मौजूदा व्यू कंट्रोलर को GCKUICastContainerViewController से रैप करके, उसके व्यू के नीचे GCKUIMiniMediaControlsViewController जोड़कर, मिनी कंट्रोलर का लेआउट मैनेज करने दें.

  • मिनी कंट्रोलर को सीधे अपने मौजूदा व्यू कंट्रोलर में जोड़ें. इसके लिए, -[createMiniMediaControlsViewController]GCKUIMiniMediaControlsViewController इंस्टेंस का इस्तेमाल करें और फिर उसे सबव्यू के तौर पर कंटेनर व्यू कंट्रोलर में जोड़ें.

विस्तृत नियंत्रक

वर्शन 2 में, आपको भेजने वाले ऐप्लिकेशन में एक विस्तृत नियंत्रक लागू करना होगा.

CAF, GCKUIMediaController जोड़ता है, जिसे आप बड़े किए गए कंट्रोलर को आसानी से लागू करने के लिए इस्तेमाल कर सकते हैं.

CAF, पहले से बनाया गया कंट्रोलर विजेट GCKUIExpandedMediaControlsViewController जोड़ता है, जिसे आप अपने ऐप्लिकेशन में आसानी से जोड़ सकते हैं. अब आपको GCKUIMediaController का इस्तेमाल करके, अपनी पसंद के मुताबिक बड़ा किया गया कंट्रोलर लागू करने की ज़रूरत नहीं है.

डीबग लॉगिंग

GCKLogger और GCKLoggerDelegate कक्षाओं को v2 से, सीएएफ़ में ले जाया गया है. हालांकि, इनमें कुछ बदलाव किए गए हैं और इन्हें बेहतर बनाया गया है.

GCKLoggerDelegate -[logFromFunction:message:] मैथड को -[logMessage:fromFunction:] के पक्ष में रोक दिया गया है.

फ़्रेमवर्क के लॉग मैसेज को अब सही GCKLoggerFilter इंस्टेंस बनाकर और उसे GCKLogger सिंगलटन की -[filter] प्रॉपर्टी सेट करके, उसे फ़िल्टर करके फ़िल्टर किया जा सकता है.

ऐप्लिकेशन के नमूने

हमारा सुझाव है कि सीएएफ़ के लिए लिखे गए कोडलैब (कोड बनाना सीखना) और सैंपल ऐप्लिकेशन का उदाहरण देखें.