مجوزها و کشف iOS

با شروع iOS 14، این سیستم عامل محدودیت‌ها و مجوزهای جدیدی را اعمال خواهد کرد که بر تجربه کاربری Cast تأثیر می‌گذارد. همچنین بر نحوه ساخت SDK Cast در برنامه شما تأثیر خواهد گذاشت. برای اینکه برنامه شما بتواند عملکرد Cast را با آخرین نسخه‌های iOS حفظ کند، باید به‌روزرسانی‌هایی را برای مدیریت این تغییرات مجوزها انجام دهید.

آی‌او‌اس ۱۴

توسعه‌دهندگان باید برنامه‌های ارسال‌کننده‌ی iOS Cast خود را به Google Cast SDK نسخه ۴.۶.۰ یا بالاتر به‌روزرسانی کنند. این نسخه‌ها از iOS 14 و الزامات آن پشتیبانی می‌کنند.

از iOS 14 به بعد، برنامه‌هایی که دستگاه‌های موجود در شبکه محلی را اسکن می‌کنند، اکنون با یک پنجره مجوز یکبار مصرف، کاربران را برای یافتن و اتصال به دستگاه‌های شبکه محلی ترغیب می‌کنند. پلتفرم Cast از شبکه محلی برای کشف و کنترل دستگاه‌های Cast استفاده می‌کند، بنابراین اگر کاربر مجوز را رد کند، قادر به ارسال محتوا نخواهد بود.

برای بهبود تجربه کاربری، ما در حال ایجاد برخی تغییرات در رابط کاربری (UX) در SDK برای برنامه‌هایی هستیم که از انتخابگر استاندارد دستگاه استفاده می‌کنند. این تغییرات در رابط کاربری، دلیل نیاز به مجوزهای دسترسی به شبکه محلی و همچنین نحوه فعال‌سازی ارسال در صورت غیرفعال بودن دسترسی به دستگاه شبکه محلی را برای کاربران آشکارتر می‌کند.

برنامه‌هایی که با نسخه‌های Cast SDK با استفاده از نسخه ۴.۴.۸ یا قبل از آن ساخته شده‌اند، تا زمانی که با Xcode 11.7 یا قبل از آن ساخته شده‌اند، به کار خود ادامه خواهند داد. اگر در حال ساخت برنامه برای iOS 14 با Xcode 12 یا بالاتر هستید، توصیه می‌کنیم Cast SDK را به نسخه ۴.۶.۰ یا بالاتر به‌روزرسانی کنید تا مطمئن شوید که برنامه Cast شما به درستی کار خواهد کرد.

کیت توسعه نرم‌افزار Cast iOS نسخه ۴.۶.۰ یا بالاتر را می‌توان با CocoaPods و با دنبال کردن مراحل راه‌اندازی CocoaPods یا به صورت دستی با دنبال کردن مراحل راه‌اندازی دستی دانلود کرد. این نسخه شامل تغییراتی در مکانیسم کشف اساسی است تا به برنامه‌هایی که با Xcode 12 ساخته شده‌اند، اجازه دهد دستگاه‌های Cast را در شبکه پیدا کنند. اکنون دکمه Cast باید همیشه نمایش داده شود. اگر وقتی کاربر روی دکمه Cast ضربه می‌زند، هیچ دستگاهی در دسترس نباشد، یک کادر محاوره‌ای نمایش داده می‌شود که راهنمایی‌هایی در مورد دلیل عدم دسترسی دستگاه‌ها، از جمله اطلاعاتی در مورد نحوه فعال کردن مجدد مجوز دسترسی به شبکه محلی، ارائه می‌دهد.

تغییرات SDK مربوط به Cast

بازیگری برای اولین بار

اولین باری که کاربر سعی در ارسال محتوا (Cast) می‌کند، یک پنجره‌ی محاوره‌ای دسترسی به شبکه‌ی محلی (LNA) ظاهر می‌شود که توضیح می‌دهد چرا به دسترسی به شبکه‌ی محلی نیاز است و پس از آن، اعلان مجوزهای دسترسی به شبکه‌ی محلی iOS که توسط اپل ارائه شده است، نمایش داده می‌شود. تصاویر شبیه‌سازی‌شده‌ی زیر روند کار را نشان می‌دهند:

جریان مجوزهای دسترسی به شبکه محلی

بازیگران در دسترس نیستند

با شروع از SDK فرستنده iOS 4.6.0، دکمه Cast همیشه زمانی که کاربر به Wi-Fi متصل است، ظاهر می‌شود. هنگامی که دستگاه‌های Cast در دسترس نیستند، ضربه زدن روی دکمه Cast پنجره‌ای را نمایش می‌دهد که به کاربر در مورد دلایل احتمالی عدم دسترسی به Cast، همانطور که در تصاویر زیر نشان داده شده است، اشاره می‌کند:

جریان با Cast در دسترس نیست

به‌روزرسانی برنامه در iOS 14

  1. کیت توسعه نرم‌افزار Cast iOS نسخه ۴.۸.۴ را به پروژه خود اضافه کنید.

    اگر از CocoaPods استفاده می‌کنید، از pod update برای اضافه کردن SDK نسخه ۴.۸.۴ به پروژه خود استفاده کنید.

    در غیر این صورت، SDK را به صورت دستی وارد کنید .

  2. NSBonjourServices به Info.plist خود اضافه کنید

    برای اینکه کشف شبکه محلی در iOS 14 با موفقیت انجام شود، NSBonjourServices در Info.plist خود مشخص کنید.

    برای اینکه کشف دستگاه به درستی کار کند، باید هم _googlecast._tcp و هم _<your-app-id>._googlecast._tcp را به عنوان سرویس اضافه کنید.

    appID همان receiverID شماست که همان ID تعریف شده در GCKDiscoveryCriteria شما می‌باشد.

    تعریف NSBonjourServices مثال زیر را به‌روزرسانی کنید و "ABCD1234" را با appID خود جایگزین کنید.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. NSLocalNetworkUsageDescription را به Info.plist خود اضافه کنید

    اکیداً توصیه می‌کنیم که پیام نمایش داده شده در اعلان شبکه محلی را با اضافه کردن یک رشته مجوز خاص برنامه در فایل Info.plist برنامه خود برای NSLocalNetworkUsageDescription ، مانند توصیف کشف Cast و سایر سرویس‌های کشف، مانند DIAL، سفارشی کنید.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    این پیام به عنوان بخشی از پنجره‌ی دسترسی به شبکه‌ی محلی iOS، همانطور که در تصویر نشان داده شده است، ظاهر خواهد شد.

    تصویر محاوره‌ای مجوزهای دسترسی به شبکه محلی را پخش کنید
  4. برنامه خود را دوباره در فروشگاه اپل منتشر کنید

    توصیه می‌کنیم در اسرع وقت برنامه خود را با استفاده از نسخه ۴.۸.۴ دوباره منتشر کنید.

سفارشی‌سازی‌ها

شروع کشف دستگاه Cast

به طور پیش‌فرض، کشف دستگاه Cast اولین باری که کاربر دکمه Cast ( GCKUICastButton ) را لمس می‌کند، آغاز می‌شود. اگر این اولین باری باشد که کاربر پس از ارتقا به iOS 14 سعی در استفاده از برنامه Cast در شبکه محلی داشته باشد، پنجره بینابینی LNA جدید و پس از آن پنجره مجوزهای دسترسی به شبکه محلی iOS ظاهر می‌شود.

یک پرچم جدید در دسترس است که به شما امکان می‌دهد زمان شروع کشف دستگاه و رفتار عناصر خاصی از UX را کنترل کنید:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

مقدار پیش‌فرض true است. این پرچم فقط زمانی قابل اجرا است که پرچم GCKCastOptions::disableDiscoveryAutostart روی false تنظیم شده باشد.

اگر روی true تنظیم شود، کشف دستگاه پخش هنگامی شروع می‌شود که کاربر برای اولین بار روی GCKUICastButton ضربه بزند. یک پیام اطلاعاتی به کاربر نمایش داده می‌شود که به او اطلاع می‌دهد چرا به مجوز شبکه محلی نیاز است. پس از آن پیام، پیام LNA iOS 14 نمایش داده می‌شود. کشف دستگاه پخش پس از تأیید پیام شروع می‌شود.

در اجرای بعدی برنامه، GCKUICastButton همیشه نمایش داده می‌شود.

اگر روی false تنظیم شود، کشف دستگاه بر اساس مقدار پرچم GCKCastOptions::disableDiscoveryAutostart شروع می‌شود.

سوالات متداول

چه اتفاقی می‌افتد اگر برنامه‌ی ارسال‌کننده‌ی Cast خود را با Cast SDK نسخه ۴.۴.۸ و Xcode 12 دوباره منتشر کنم؟

ممکن است برنامه شما نتواند دستگاه‌های Cast را در شبکه محلی کشف کند، مگر اینکه مجوز شبکه چندپخشی را از اپل دریافت کرده باشید. توجه داشته باشید که اپل مجوز چندپخشی را صرفاً به منظور پشتیبانی از Cast اعطا نمی‌کند. اگر قصد دارید با Xcode 12 برنامه بسازید، باید برنامه خود را با Cast 4.6.0 منتشر کنید.

اگر برنامه‌ام را با SDK جدید Cast دوباره منتشر کنم، کاربرانی که از iOS 13 یا نسخه‌های قدیمی‌تر استفاده می‌کنند، چه تجربه‌ای خواهند داشت؟

آنها همچنان همان تجربه کاربری را که قبل از انتشار مجدد برنامه شما داشتند، مشاهده خواهند کرد. تغییرات قابل مشاهده توسط کاربر محدود به کاربرانی است که از iOS 14 استفاده می‌کنند.

پس از انتشار نسخه جدید Cast SDK، برای به‌روزرسانی برنامه‌ام چه کاری باید انجام دهم؟

  • Info.plist برنامه خود را به‌روزرسانی کنید تا شامل توضیحاتی در مورد میزان استفاده از شبکه محلی باشد.
  • NSBonjourServices به Info.plist برنامه خود اضافه کنید و نام سرویس‌های Bonjour را برای Cast و شناسه برنامه خود را ارائه دهید.
  • برنامه فرستنده خود را برای استفاده از Cast SDK 4.6.0 ارتقا دهید.
  • برنامه خود را دوباره در فروشگاه برنامه اپل منتشر کنید.

چرا بعد از ارتقا به نسخه ۴.۶.۰، دیگر دستگاه‌ها در انتخابگر دستگاه سفارشی من نمایش داده نمی‌شوند؟

این یک مشکل شناخته شده است که در صورت استفاده از یک انتخابگر دستگاه سفارشی به جای انتخابگر دستگاه استاندارد، می‌تواند رخ دهد. در نسخه ۴.۴.۸ از Cast SDK و قبل از آن، اسکن دستگاه به صورت خودکار انجام می‌شد. از نسخه ۴.۶.۰، برای شروع کشف دستگاه، باید صریحاً متد startDiscovery را در کلاس GCKDiscoveryManager فراخوانی کنید.

دلیل این تغییر این است که پیام دسترسی به شبکه محلی (LNA) پس از اولین اسکن برنامه ظاهر می‌شود. این می‌تواند منجر به نمایش پنجره‌های مجوز در مکان‌های تصادفی در برنامه شما شود.

توسعه‌دهندگانی که یک انتخابگر دستگاه سفارشی برای برنامه خود می‌سازند، انتظار می‌رود قبل از شروع اسکن دستگاه برای اولین بار در iOS 14، یک نمایش بینابینی یک‌باره ارائه دهند.

آی‌او‌اس ۱۳

با iOS 13، الزامات مجوز جدیدی معرفی شد که بر برنامه‌هایی که از SDK گوگل کست استفاده می‌کنند، تأثیر می‌گذارد.

با شروع از Google Cast SDK نسخه ۴.۴.۳، یک SDK اضافی در دسترس است که نیازی به مجوز بلوتوث ندارد. این SDK هم در سایت توسعه‌دهنده و هم در Cocoapods جدید google-cast-sdk-no-bluetooth موجود است.

تجزیه برنامه

در اینجا بسته به نسخه iOS SDK که در حال حاضر استفاده می‌کنید، جزئیات آن آمده است:

برنامه‌های ساخته شده با iOS 12 SDK یا نسخه‌های قدیمی‌تر

  • اقدام توصیه می‌شود . عملکرد کشف دستگاه ممکن است هنگام اجرا در iOS 13 کاهش یابد، اما همچنان کاربردی خواهد بود. ما اکیداً به توسعه‌دهندگان توصیه می‌کنیم در صورت امکان، Cast SDK نسخه ۴.۴.۴ را ارتقا دهند.
  • iOS 13 از کاربران می‌خواهد که مجوزهای بلوتوث® را به برنامه اعطا کنند.

برنامه‌های ساخته شده با iOS 13 SDK

  • اقدام مورد نیاز : به Cast SDK 4.4.4 به‌روزرسانی کنید، در غیر این صورت اگر کاربر اجازه موقعیت مکانی را ندهد، ممکن است دکمه Cast ظاهر نشود. برای اطمینان از یک تجربه Cast قابل اعتماد در iOS 13، ارتقا به Cast SDK 4.4.4 ضروری است.