مجوزها و کشف iOS

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

iOS 14

برنامه‌نویسان باید برنامه‌های فرستنده iOS Cast خود را به Google Cast SDK نسخه 4.6.0 یا جدیدتر به‌روزرسانی کنند. این نسخه ها از iOS 14 و الزامات آن پشتیبانی می کنند.

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

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

برنامه‌هایی که با نسخه‌های Cast SDK با نسخه 4.4.8 یا نسخه‌های قبلی ساخته شده‌اند، تا زمانی که با Xcode 11.7 یا قبل‌تر ساخته شده باشند، به کار خود ادامه خواهند داد. اگر برای iOS 14 با Xcode 12 یا بالاتر می‌سازید، توصیه می‌کنیم Cast SDK نسخه 4.6.0 یا بالاتر را به‌روزرسانی کنید تا مطمئن شوید که برنامه Cast شما به درستی کار می‌کند.

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

Cast SDK تغییر می کند

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

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

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

پخش در دسترس نیست

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

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

در حال به روز رسانی برنامه خود در iOS 14

  1. Cast iOS SDK 4.8.1 را به پروژه خود اضافه کنید

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

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

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

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

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

    appID همان شناسه گیرنده شما است که در GCKDiscoveryCriteria شما تعریف شده است.

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

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

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

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

    این پیام همانطور که در ماک نشان داده شده است به عنوان بخشی از گفتگوی دسترسی به شبکه محلی iOS ظاهر می شود.

    تصویر گفتگوی مجوزهای دسترسی به شبکه محلی Cast
  4. برنامه خود را مجدداً در Apple App Store منتشر کنید

    توصیه می کنیم در اسرع وقت برنامه خود را با استفاده از 4.8.1 مجدداً منتشر کنید.

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

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

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

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

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

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

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

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

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

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

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

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

چرا پس از ارتقاء به 4.6.0، دستگاه‌ها در انتخابگر دستگاه سفارشی من نشان داده نمی‌شوند؟

این یک مشکل شناخته شده است که اگر از یک انتخاب کننده دستگاه سفارشی به جای انتخابگر دستگاه استاندارد استفاده می کنید، ممکن است رخ دهد. در نسخه 4.4.8 Cast SDK و پیش از آن، اسکن دستگاه به صورت خودکار بود. با شروع نسخه 4.6.0، برای شروع کشف دستگاه، باید به صراحت متد startDiscovery را در کلاس GCKDiscoveryManager فراخوانی کنید.

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

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

iOS 13

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

با شروع Google Cast SDK نسخه 4.4.3، یک SDK اضافی در دسترس است که به مجوز Bluetooth® نیاز ندارد. این هم در سایت توسعه دهنده و هم در google-cast-sdk-no-bluetooth Cocoapods جدید موجود است.

تجزیه برنامه

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

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

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

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

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