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

Kể từ iOS 14, hệ điều hành sẽ thực thi các hạn chế và quyền mới ảnh hưởng đến trải nghiệm người dùng Cast. Điều này cũng sẽ ảnh hưởng đến cách bạn tích hợp Cast SDK vào ứng dụng. Để ứng dụng duy trì chức năng Cast với các phiên bản iOS mới nhất, bạn phải cập nhật để xử lý những thay đổi về quyền này.

iOS 14

Nhà phát triển nên cập nhật ứng dụng gửi Cast cho iOS lên Google Cast SDK phiên bản 4.6.0 trở lên. Các phiên bản này hỗ trợ iOS 14 và các yêu cầu của phiên bản này.

Kể từ iOS 14, các ứng dụng quét thiết bị trên mạng cục bộ sẽ nhắc người dùng bằng một 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 Cast sử dụng mạng cục bộ để khám phá và kiểm soát các thiết bị Cast. 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 sẽ 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 về trải nghiệm người dùng này giúp người dùng hiểu rõ hơn lý do cần có quyền truy cập 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 thiết bị mạng cục bộ đã bị tắt.

Các ứng dụng được xây dựng bằng các phiên bản Cast SDK sử dụng phiên bản 4.4.8 trở xuống sẽ tiếp tục hoạt động miễn là được xây dựng bằng Xcode 11.7 trở xuống. Nếu bạn đang xây dựng cho iOS 14 bằng Xcode 12 trở lên, bạn nên cập nhật lên Cast SDK phiên bản 4.6.0 trở lên để đảm bảo ứng dụng Cast sẽ tiếp tục hoạt động đúng cách.

Bạn có thể tải Cast iOS SDK phiên bản 4.6.0 trở lên bằng CocoaPods bằng cách làm theo hướng dẫn thiết lập CocoaPods hoặc 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 các thiết bị Cast trên mạng. Nút Truyền hiện phải 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, một hộp thoại sẽ xuất hiện để hướng dẫn lý do thiết bị có thể không có sẵn, bao gồm cả thông tin về cách bật lại quyền truy cập mạng cục bộ.

Các thay đổi trong Cast SDK

Truyền lần đầu tiên

Lần đầu tiên người dùng cố gắng 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ộ cho iOS do Apple cung cấp. Các bản mô phỏng bên dưới minh hoạ quy trình:

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

Không truyền được

Kể từ SDK gửi iOS 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ị Cast, việc nhấn vào nút Truyền sẽ hiển thị một hộp thoại gợi ý cho người dùng về những lý do có thể khiến tính năng Truyền không hoạt động, như minh hoạ trong các bản mô phỏng bên dưới:

Không dùng được Flow có tính năng truyền

Cập nhật ứng dụng trên iOS 14

  1. Thêm Cast iOS SDK 4.8.4 vào dự án

    Nếu sử dụng CocoaPods, hãy dùng pod update để thêm SDK 4.8.4 vào dự án.

    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 trên iOS 14.

    Bạn cần thêm cả _googlecast._tcp_<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 vào 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á Cast 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 như một phần của hộp thoại Quyền truy cập mạng cục bộ cho iOS như minh hoạ trong bản mô phỏng.

    Hình ảnh hộp thoại yêu cầu cấp quyền truy cập mạng cục bộ để truyền
  4. Phát hành lại ứng dụng 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.4 càng sớm càng tốt.

Tuỳ chỉnh

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

Theo mặc định, tính năng 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 Cast trên mạng cục bộ sau khi nâng cấp lên iOS 14, thì hộp thoại xen kẽ LNA mới sẽ xuất hiện, sau đó là hộp thoại cấp quyền truy cập mạng cục bộ cho iOS.

Một cờ mới có sẵn để cho phép bạn 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 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 được đặt thành true, tính năng 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 thông tin sẽ được hiển thị cho người dùng để cho họ biết lý do cần có quyền truy cập mạng cục bộ. Sau thông báo đó, thông báo LNA cho iOS 14 sẽ xuất hiện. Tính năng khám phá thiết bị truyền sẽ bắt đầu sau khi thông báo được xác nhận.

Trong các lần khởi chạy ứng dụng tiếp theo, GCKUICastButton luôn hiển thị.

Nếu được đặt thành false, tính năng 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 gửi Cast bằng Cast SDK phiên bản 4.4.8 và Xcode 12?

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

Nếu tôi phát hành lại ứng dụng bằng Cast SDK mới, thì người dùng chạy iOS 13 trở xuống sẽ có trải nghiệm như thế nào?

Họ sẽ tiếp tục thấy trải nghiệm người dùng giống như trước khi bạn phát hành lại ứng dụng. Các thay đổi hiển thị cho người dùng chỉ giới hạn ở những người dùng chạy iOS 14.

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

  • Cập nhật Info.plist của ứng dụng để đưa vào 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 gửi để sử dụng Cast SDK 4.6.0.
  • Phát hành lại ứng dụng lên Apple App Store.

Tại sao các thiết bị ngừng xuất hiện trong bộ chọn thiết bị tuỳ chỉnh 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ị tiêu chuẩn. Trong phiên bản 4.4.8 của Cast SDK trở xuống, tính năng quét thiết bị là tự động. Kể từ phiên bản 4.6.0, bạn cần gọi phương thức startDiscovery một cách rõ ràng trên lớp GCKDiscoveryManager để bắt đầu khám phá thiết bị.

Lý do 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ể dẫn đến việc hộp thoại cấp quyền xuất hiện ở những vị trí ngẫu nhiên trong ứng dụng.

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

iOS 13

Với iOS 13, các yêu cầu mới về quyền đã được giới thiệu, ảnh hưởng đến các ứng dụng sử dụng Google Cast SDK.

Kể từ Google Cast SDK phiên bản 4.4.3, một SDK bổ sung có sẵn và không yêu cầu quyền Bluetooth®. SDK này có sẵn trên cả trang web dành cho nhà phát triển và trên Cocoapods mới google-cast-sdk-no-bluetooth.

Phân tích ứng dụng

Sau đây là phân tích tuỳ thuộc vào phiên bản iOS SDK mà bạn hiện đang sử dụng:

Các ứng dụng được xây dựng bằng iOS 12 SDK trở xuống

  • Việc nên làm. Hiệu suất khám phá thiết bị có thể giảm khi chạy trên iOS 13, nhưng vẫn hoạt động. Nhà phát triển nên nâng cấp lên Cast SDK phiên bản 4.4.4 khi có.
  • iOS 13 sẽ nhắc người dùng cấp quyền Bluetooth® cho ứng dụng.

Các ứng dụng được xây dựng bằng iOS 13 SDK

  • Việc cần làm: Cập nhật lên Cast SDK 4.4.4 hoặc nút truyền có thể không xuất hiện nếu người dùng không cấp quyền truy cập thông tin vị trí. Bạn cần nâng cấp lên Cast SDK 4.4.4 để đảm bảo trải nghiệm truyền đáng tin cậy trên iOS 13.