يمكّنك الإجراء التالي من تحويل تطبيق المُرسِل على iOS من حزمة تطوير البرامج (SDK) لتكنولوجيا Cast. الإصدار 2 إلى مرسِل CAF، والذي يعتمد على GCKCastContext سينغلتون.
مقدمة
- لا يزال مرسل CAF موزعًا على الموقع الإلكتروني لمطوّري Google Cast CocoaPods، مثل الإصدار 2.
- تمت إضافة فئات جديدة تتولى مسؤولية الالتزام قائمة التحقق الخاصة بتصميم Google Cast.
- يوفّر تطبيق CAF Sender التطبيقات المصغّرة التي تتوافق مع متطلبات تجربة المستخدم لجهاز Cast؛ v2 لم يوفّر أي مكونات لواجهة المستخدم وطُلب منك تنفيذ هذه التطبيقات المصغّرة.
- يتوافق تصميم "مُرسِل CAF" مع تصميم Cast Android SDK.
- يدعم مرسل CAF استخدام رمز Bitcode، مثل الإصدار 2.
- تشبه الترجمة النصية في CAF الإصدار 2.
التبعيات
يتوافق تطبيق CAF Sender مع الإصدار 8 من نظام التشغيل iOS والإصدارات الأحدث.
الإعداد
في CAF، يجب تنفيذ خطوة إعداد واضحة لإطار عمل Cast. هذا النمط
تتضمن تهيئة
GCKCastContext
سينغلتون، باستخدام طريقة
GCKCastOptions
لتحديد معرّف تطبيق WebRecipient وأي إعدادات عامة أخرى
الخيارات. يتم تنفيذ ذلك عادةً في AppDelegate
.
طريقة -[application:didFinishLaunchingWithOptions:]
:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
لم تكن هذه الخطوة ضرورية في الإصدار 2.
رصد الأجهزة
في CAF، تبدأ عملية الاكتشاف وتتوقف تلقائيًا عن طريق
إطار العمل عندما يظهر التطبيق في المقدّمة
وينتقل إلى الخلفية
على التوالي. الصفان GCKDeviceScanner
وGCKFilterCriteria
من الإصدار 2
نهائيًا ويجب عدم استخدامها.
زر البث ومربّع حوار البث
في CAF، يوفر إطار العمل زر البث ومربع الحوار. طاقم العمل يمكن إنشاء مثيل للزر وإضافته إلى شريط التنقل كما يلي:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
يمكن أيضًا إضافة زر البث إلى لوحة العمل.
عندما ينقر أحد الأشخاص على الزر، يتم عرض مربّع حوار البث تلقائيًا.
التحكم بالجهاز
في CAF، يتعامل إطار العمل إلى حد كبير مع التحكُّم في الأجهزة. المُرسِل
التطبيق لا يحتاج إلى التعامل مع الاتصال بالجهاز وتشغيل
Web Installr. فئة v2
GCKDeviceManager
تم إيقافها وينبغي
عدم استخدامها. يتم الآن تمثيل التفاعل بين المرسل ومستقبل الويب على أنه
"جلسة". فريق CAF
GCKSessionManager
أن يتعامل الفصل مع دورة حياة الجلسة
بدء الجلسات وإيقافها تلقائيًا استجابةً لإيماءات المستخدم: جلسة
يبدأ عندما يختار المستخدم جهاز بث في مربّع حوار البث وينتهي
عندما ينقر المستخدم على زر "إيقاف البث" الزر في مربع حوار البث أو عند
إنهاء تطبيق المرسل نفسه. يمكن إبلاغ تطبيق المرسل بالجلسة
الأحداث في مراحل النشاط من خلال تسجيل
GCKSessionManagerListener
مع
GCKSessionManager
تشير رسالة الأشكال البيانية
GCKSessionManagerListener
طرق معاودة الاتصال لجميع أحداث مراحل نشاط الجلسة.
تشير رسالة الأشكال البيانية
GCKCastSession
تمثل الفئة جلسة مع جهاز بث. الفئة
طرق للتحكم في مستوى صوت الجهاز وحالات كتم الصوت، والتي كانت
تم إجراؤه سابقًا في الإصدار 2 باستخدام طرق
GCKDeviceManager
في الإصدار 2،
GCKDeviceManagerDelegate
الإخطارات التي قدّمها البروتوكول بشأن التغييرات
بحالة الجهاز، بما في ذلك مستوى الصوت وحالة كتم الصوت وحالة الاستعداد وما إلى ذلك
في CAF، يتم إرسال إشعارات تغيير مستوى الصوت/كتم الصوت من خلال معاودة الاتصال
الطرق في
GCKSessionManagerListener
والبروتوكول تم تسجيل هؤلاء المستمعين لدى
GCKSessionManager
جميع إشعارات حالة الجهاز المتبقية
التسليم عبر
GCKCastDeviceStatusListener
والبروتوكول تم تسجيل هؤلاء المستمعين لدى
GCKCastSession
منطق إعادة الربط
وكما هو الحال مع الإصدار 2، يحاول CAF إعادة إنشاء اتصالات الشبكة التي فقدان الاتصال بسبب فقدان إشارة واي فاي مؤقتًا أو أخطاء أخرى في الشبكة. هذا الآن على مستوى الجلسة يمكن أن تدخل الجلسة "معلقة" الحالة عندما ينقطع اتصال الإنترنت، وسينتقل مرة أخرى إلى الحالة "متصل" الحالة عند تتم استعادة الاتصال. ويعتني إطار العمل بإعادة الاتصال تطبيق الويب لجهاز الاستقبال وإعادة ربط أي قنوات بث كجزء من هذه العملية.
بالإضافة إلى ذلك، يضيف CAF أيضًا الاستئناف التلقائي للجلسة. إذا كان المُرسِل
يتم إرسال التطبيق إلى الخلفية أو يتم إنهاؤه (عن طريق التمرير سريعًا أو
بسبب عطل) أثناء جلسة البث، فإن إطار العمل
محاولة استئناف الجلسة عند عودة تطبيق المرسل إلى
التي تعمل في المقدّمة أو تمت إعادة تشغيلها يتم التعامل مع هذا الأمر تلقائيًا من خلال
GCKSessionManager
،
الذي سيُصدر عمليات معاودة الاتصال المناسبة على أي
GCKSessionManagerListener
الحالات.
تسجيل القناة المخصّصة
في الإصدار 2، القنوات المخصّصة (يتم تنفيذها باستخدام
GCKCastChannel
فئة فرعية أو
GCKGenericChannel
والمفوض) تم تسجيلها في
GCKDeviceManager
في CAF، يتم تسجيل القنوات المخصّصة بدلاً من ذلك بواسطة
GCKCastSession
مثال. يمكن إجراء التسجيل في
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
. بالنسبة إلى تطبيقات الوسائط، لم يعد من الضروري
لتسجيل
GCKMediaControlChannel
راجِع القسم التالي للاطّلاع على مزيد من التفاصيل.
التحكم في الوسائط
فئة v2
GCKMediaControlChannel
تم إيقافها ويجب عدم استخدامها. وفي CAF، حل محله النموذج الجديد
GCKRemoteMediaClient
التي توفر وظائف مماثلة في واجهة برمجة تطبيقات أكثر ملاءمة.
ليس من الضروري إعداد هذا الكائن أو تسجيله بشكل صريح؛ الـ
سيعمل تلقائيًا على إنشاء مثيل الكائن وتسجيل
قناة وسائط في وقت بدء الجلسة في حال اتصال تطبيق WebRecipient.
لدعم مساحة اسم الوسائط.
تشير رسالة الأشكال البيانية
GCKRemoteMediaClient
الوصول إليه من خلال
-[remoteMediaClient]
خاصية
GCKCastSession
الخاص بك.
في الإصدار الثاني، سيتم تقديم كل طلبات الوسائط الصادرة
GCKMediaControlChannel
سيُرجع معرف طلب رقمي والطرق على
GCKMediaControlChannelDelegate
سيوفر هذا المعرّف عند إرسال إشعارات حول اكتمال الطلب أو
إخفاقًا.
في CAF، فإن جميع طلبات الوسائط الصادرة
GCKRemoteMediaClient
فستُرجع
GCKRequest
كائن؛ يرتبط هذا الكائن بـ
GCKRequestDelegate
البروتوكول
والتي يمكن استخدامها لتتبع التقدم والنتيجة النهائية للطلب.
الإصدار 2
GCKMediaControlChannel
يرسل إشعارات حول التغييرات في حالة مشغّل الوسائط على جهاز استقبال الويب
من خلال
GCKMediaControlChannelDelegate
في CAF،
GCKRemoteMediaClient
يوفر استدعاءات مكافئة عبر
GCKRemoteMediaClientListener
والبروتوكول. يمكن تسجيل أي عدد من المستمعين في
GCKRemoteMediaClient
، والذي يسمح لمكونات مرسلة متعددة بمشاركة
مثال واحد من GCKRemoteMediaClient
مرتبط بالجلسة.
في الإصدار 2، كان على تطبيق المرسل أن يتحمل عبء الحفاظ على المستخدم
متزامنة مع حالة مشغّل الوسائط على جهاز استقبال الويب. في CAF، الفئة
GCKUIMediaController
ويتحمل معظم هذه المسئولية؛ اطّلِع على
دليل تعليمي حول الترميز
مستندات للحصول على أمثلة حول كيفية استخدام هذا المكون.
تراكب تمهيدي
لا يوفر الإصدار 2 واجهة مستخدم تمهيدية تظهر على سطح الفيديو
يضيف CAF فئة
GCKCastContext
باستخدام طريقة
-[presentCastInstructionsViewControllerOnce]
الذي يمكن لتطبيق المرسل استخدامه لتمييز زر البث عند عرضه لأول مرة
للمستخدمين.
وحدة تحكُّم صغيرة
في الإصدار 2، تحتاج إلى استخدام وحدة تحكم صغيرة من البداية. تطبيق المُرسِل.
في CAF، يوفر إطار العمل شريط تحكم
GCKUIMiniMediaControlsViewController
،
والذي يمكنك إضافته إلى المشاهد حيث تريد إظهار العناصر الثابتة
والتحكم المستمر. هناك طريقتان لإضافة وحدة التحكم المصغّرة إلى تطبيق المرسِل:
السماح لإطار عمل Google Cast بإدارة تصميم وحدة التحكّم الصغيرة من خلال إكمال وحدة التحكم في العرض الحالية
GCKUICastContainerViewController
وإضافةGCKUIMiniMediaControlsViewController
في الجزء السفلي من إطار العرض.أضِف وحدة التحكّم المصغّرة مباشرةً إلى وحدة التحكّم الحالية في العرض باستخدام
-[createMiniMediaControlsViewController]
لإنشاءGCKUIMiniMediaControlsViewController
مثيل ثم إضافته إلى وحدة التحكم في عرض الحاوية كطريقة عرض فرعية.
تم توسيع وحدة التحكُّم
في الإصدار 2، يجب تنفيذ وحدة تحكّم موسّعة من البداية تطبيق المرسل.
إضافات CAF
GCKUIMediaController
،
التي يمكنك استخدامها لتنفيذ وحدة تحكم موسّعة بسهولة أكبر.
CAF يضيف تطبيق مصغّر تم إنشاؤه مسبقًا لوحدة التحكم
GCKUIExpandedMediaControlsViewController
التي يمكنك إضافتها ببساطة إلى تطبيقك لم تعد بحاجة إلى تنفيذ إعلان موسّع مخصّص
باستخدام GCKUIMediaController
.
تسجيل تصحيح الأخطاء
تشير رسالة الأشكال البيانية
GCKLogger
أو
GCKLoggerDelegate
الفئات من الإصدار 2 إلى CAF، مع بعض التغييرات والتحسينات.
تشير رسالة الأشكال البيانية
GCKLoggerDelegate
تحتوي طريقة -[logFromFunction:message:]
على
تم إيقافها لصالح
-[logMessage:fromFunction:]
ويمكن الآن تصفية رسائل سجل إطار العمل من خلال إنشاء قائمة
GCKLoggerFilter
المثيل وتعيينه عن طريق تعيين
السمة -[filter]
من
سينغلتون GCKLogger
.
نماذج التطبيقات
ننصحك بالاطّلاع على دروس تطبيقية حول الترميز نماذج تطبيقات تمت كتابتها بتنسيق CAF.