Quyền và khám phá trên iOS

Giờ đây, các ứng dụng quét tìm thiết bị trên mạng cục bộ sẽ nhắc người dùng bằng hộp thoại cấp quyền một lần để tìm và kết nối với các thiết bị trên mạng cục bộ. Nền tảng Truyền sử dụng mạng cục bộ để khám phá và điều khiển các thiết bị Truyền. Vì vậy, nếu người dùng từ chối cấp quyền, họ sẽ không thể truyền.

Để cải thiện trải nghiệm người dùng, chúng tôi đang thực hiện một số thay đổi về trải nghiệm người dùng đối với SDK cho những ứng dụng đang sử dụng bộ chọn thiết bị tiêu chuẩn. Những thay đổi này về trải nghiệm người dùng giúp người dùng hiểu rõ hơn lý do cần có quyền truy cập vào mạng cục bộ, cũng như cách bật tính năng truyền nếu quyền truy cập vào thiết bị mạng cục bộ đã bị tắt.

Bạn có thể thêm SDK Truyền cho iOS phiên bản 4.6.0 trở lên bằng Trình quản lý gói Swift bằng cách làm theo hướng dẫn thiết lập Trình quản lý gói Swift hoặc tải xuống theo cách thủ công bằng cách làm theo hướng dẫn thiết lập thủ công. Bản phát hành này bao gồm các thay đổi đối với cơ chế khám phá cơ bản để cho phép các ứng dụng được xây dựng bằng Xcode 12 tìm thấy thiết bị Truyền trên mạng. Giờ đây, nút Truyền sẽ luôn hiển thị. Nếu không có thiết bị nào khi người dùng nhấn vào nút Truyền, thì một hộp thoại sẽ xuất hiện để hướng dẫn về lý do có thể không có thiết bị, bao gồm cả thông tin về cách bật lại quyền truy cập vào mạng cục bộ.

Thay đổi đối với SDK Cast

Truyền lần đầu

Lần đầu tiên người dùng tìm cách Truyền, một hộp thoại xen kẽ về quyền truy cập mạng cục bộ (LNA) sẽ xuất hiện để giải thích lý do cần có quyền truy cập mạng cục bộ, sau đó là lời nhắc cấp quyền truy cập mạng cục bộ trên iOS do Apple cung cấp. Hình minh hoạ dưới đây cho thấy quy trình này:

Quy trình cấp quyền truy cập vào mạng cục bộ

Không thể truyền

Kể từ SDK người gửi iOS phiên bản 4.6.0, nút Truyền luôn xuất hiện khi người dùng kết nối với Wi-Fi. Khi không có thiết bị Truyền, việc nhấn vào nút Truyền sẽ hiển thị một hộp thoại cung cấp cho người dùng gợi ý về các lý do có thể khiến tính năng Truyền không hoạt động, như minh hoạ trong bản mô phỏng dưới đây:

Không thể sử dụng quy trình có Cast

Cập nhật ứng dụng

  1. Thêm SDK Truyền 4.8.6 cho iOS vào dự án của bạn

    Nếu bạn sử dụng Trình quản lý gói Swift, hãy cập nhật gói google-cast-ios-sdk lên phiên bản 4.8.6.

    Nếu không, hãy kéo SDK theo cách thủ công.

  2. Thêm NSBonjourServices vào Info.plist

    Chỉ định NSBonjourServices trong Info.plist để cho phép khám phá mạng cục bộ thành công.

    Bạn cần thêm cả _googlecast._tcp và _<your-app-id>._googlecast._tcp làm dịch vụ để tính năng khám phá thiết bị hoạt động đúng cách.

    appID là receiverID của bạn, đây là cùng một mã nhận dạng được xác định trong GCKDiscoveryCriteria.

    Cập nhật định nghĩa NSBonjourServices trong ví dụ sau và thay thế "ABCD1234" bằng appID của bạn.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Thêm NSLocalNetworkUsageDescription vào Info.plist

    Bạn nên tuỳ chỉnh thông báo xuất hiện trong lời nhắc Mạng cục bộ bằng cách thêm một chuỗi quyền dành riêng cho ứng dụng trong tệp Info.plist của ứng dụng cho NSLocalNetworkUsageDescription, chẳng hạn như để mô tả tính năng khám phá Truyền và các dịch vụ khám phá khác, như DIAL.

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

    Thông báo này sẽ xuất hiện trong hộp thoại Quyền truy cập vào mạng cục bộ trên iOS như trong bản mô phỏng.

    Hình ảnh hộp thoại Quyền truy cập vào mạng cục bộ của Cast
  4. Phát hành lại ứng dụng của bạn lên Apple App Store

    Bạn cũng nên phát hành lại ứng dụng bằng phiên bản 4.8.6 càng sớm càng tốt.

Tùy chỉnh

Bắt đầu khám phá thiết bị truyền

Theo mặc định, quá trình khám phá thiết bị Truyền sẽ bắt đầu khi người dùng nhấn vào nút Truyền (GCKUICastButton) lần đầu tiên. Nếu đây là lần đầu tiên người dùng cố gắng sử dụng ứng dụng Truyền trên mạng cục bộ, thì quảng cáo xen kẽ LNA mới sẽ xuất hiện, theo sau là hộp thoại Quyền truy cập vào mạng cục bộ của iOS.

Bạn có thể sử dụng một cờ mới để kiểm soát thời điểm bắt đầu khám phá thiết bị và hành vi của một số thành phần nhất định trong trải nghiệm người dùng:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

Giá trị mặc định là true. Cờ này chỉ áp dụng khi cờ GCKCastOptions::disableDiscoveryAutostart được đặt thành false.

Nếu bạn đặt thành true, thì quá trình khám phá thiết bị Truyền sẽ bắt đầu khi người dùng nhấn vào GCKUICastButton lần đầu tiên. Một thông báo sẽ hiển thị cho người dùng biết lý do cần có quyền truy cập vào mạng cục bộ. Sau thông báo đó, thông báo LNA trên iOS sẽ xuất hiện. Quá trình khám phá thiết bị truyền bắt đầu sau khi thông báo được xác nhận.

Trong những lần khởi chạy ứng dụng tiếp theo, GCKUICastButton luôn xuất hiện.

Nếu bạn đặt thành false, thì quá trình khám phá thiết bị sẽ bắt đầu dựa trên giá trị của cờ GCKCastOptions::disableDiscoveryAutostart.

Câu hỏi thường gặp

Điều gì sẽ xảy ra nếu tôi phát hành lại ứng dụng người gửi Cast bằng SDK Truyền phiên bản 4.4.8 và Xcode 12?

Ứng dụng của bạn có thể không tìm được thiết bị Truyền trên mạng cục bộ trừ phi bạn đã có quyền đa hướng mạng của Apple. Xin lưu ý rằng Apple sẽ không cấp quyền đa hướng chỉ nhằm mục đích hỗ trợ tính năng Truyền. Nếu dự định tạo bằng Xcode 12, bạn nên phát hành ứng dụng bằng Cast 4.6.0.

Tôi cần làm gì để cập nhật ứng dụng sau khi phiên bản mới của SDK Truyền được phát hành?

  • Cập nhật tệp Info.plist của ứng dụng để thêm nội dung mô tả về việc sử dụng mạng cục bộ.
  • Thêm NSBonjourServices vào Info.plist của ứng dụng và cung cấp tên dịch vụ Bonjour cho Cast và mã ứng dụng của bạn.
  • Nâng cấp ứng dụng của người gửi để sử dụng SDK Truyền 4.6.0.
  • Phát hành lại ứng dụng của bạn lên cửa hàng ứng dụng của Apple.

Tại sao các thiết bị ngừng xuất hiện trong bộ chọn thiết bị tuỳ chỉnh của tôi sau khi tôi nâng cấp lên phiên bản 4.6.0?

Đây là một vấn đề đã biết và có thể xảy ra nếu bạn đang sử dụng bộ chọn thiết bị tuỳ chỉnh thay vì bộ chọn thiết bị chuẩn. Trong phiên bản 4.4.8 của Cast SDK trở xuống, quá trình quét thiết bị diễn ra tự động. Kể từ phiên bản 4.6.0, bạn sẽ cần gọi rõ ràng phương thức startDiscovery trên lớp GCKDiscoveryManager để bắt đầu khám phá thiết bị.

Lý do cho thay đổi này là vì lời nhắc cấp quyền truy cập mạng cục bộ (LNA) sẽ xuất hiện sau khi ứng dụng quét lần đầu tiên. Điều này có thể khiến hộp thoại quyền xuất hiện ở những vị trí ngẫu nhiên trong ứng dụng của bạn.

Nhà phát triển xây dựng bộ chọn thiết bị tuỳ chỉnh cho ứng dụng của họ sẽ phải cung cấp một quảng cáo xen kẽ một lần trước khi bắt đầu quét thiết bị lần đầu tiên.