اجازه‌ها و شناسایی iOS

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

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

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

تغییرات کیت توسعه نرم‌افزار Cast

پخش محتوا برای اولین‌بار

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

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

پخش محتوا دردسترس نیست

از SDK فرستنده iOS نسخه ۴.۶.۰، دکمه «پخش محتوا» همیشه وقتی کاربر به Wi-Fi متصل است نمایش داده می‌شود. وقتی دستگاه‌های «پخش محتوا» دردسترس نباشند، با تک‌ضرب زدن روی دکمه «پخش محتوا»، کادر گفتگویی باز می‌شود که به کاربر درباره دلایل احتمالی دردسترس نبودن «پخش محتوا» سرنخ می‌دهد، همان‌طور که در نمونه‌های زیر نشان داده شده است:

‫Flow با «پخش محتوا» دردسترس نیست

درحال به‌روزرسانی برنامه

  1. افزودن Cast iOS SDK 4.8.6 به پروژه

    اگر از مدیر بسته Swift استفاده می‌کنید، بسته google-cast-ios-sdk را به نسخه ۴.۸.۶ به‌روز کنید.

    درغیراین‌صورت، کیت توسعه نرم‌افزار را به‌صورت دستی بکشید.

  2. افزودن NSBonjourServices به Info.plist

    NSBonjourServices را در Info.plist خود مشخص کنید تا کاوش شبکه محلی موفقیت‌آمیز باشد.

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

    ‫appID همان receiverID شما است، که همان شناسه‌ای است که در 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، مثلاً برای توصیف شناسایی «پخش محتوا» و دیگر سرویس‌های شناسایی مثل DIAL، پیامی را که در پیام‌واره «شبکه محلی» نشان داده می‌شود سفارشی‌سازی کنید.

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

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

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

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

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

شروع کشف دستگاه پخش محتوا

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

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

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

پرسشگان

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

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

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

  • Info.plist برنامه‌تان را به‌روز کنید تا شرح استفاده از شبکه محلی را اضافه کنید.
  • NSBonjourServices را به Info.plist برنامه‌تان اضافه کنید و نام‌های سرویس Bonjour را برای Cast و شناسه برنامه‌تان ارائه دهید.
  • برنامه فرستنده را ارتقا دهید تا از «کیت توسعه نرم‌افزار Cast» نسخه ۴.۶.۰ استفاده کند.
  • برنامه‌تان را در فروشگاه برنامه Apple دوباره منتشر کنید.

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

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

دلیل این تغییر این است که پیام‌واره اجازه‌های «دسترسی به شبکه محلی» (LNA) پس‌از اینکه برنامه برای اولین‌بار اسکن کرد نمایش داده خواهد شد. این کار می‌تواند باعث شود کادرهای گفتگوی اجازه‌ها در مکان‌های تصادفی در برنامه‌تان نشان داده شود.

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