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

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

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

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

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

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

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

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

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

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

‫Flow with Cast دردسترس نیست

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

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

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

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

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

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

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

    appID همان receiverID شما است که در 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 و دیگر سرویس‌های کاوش، مثل 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 اولین باری که کاربر روی دکمه Cast (GCKUICastButton) تک‌ضرب می‌زند آغاز می‌شود. اگر این اولین باری باشد که کاربر تلاش می‌کند از برنامه Cast در شبکه محلی استفاده کند، میان‌آگهی جدید LNA ظاهر می‌شود و به‌دنبال آن کادر گفتگوی اجازه‌های دسترسی به شبکه محلی iOS نمایش داده می‌شود.

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

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

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

پرسشگان

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

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

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

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

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

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

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

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