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 của người dùng tính năng Truyền. Điều này cũng sẽ ảnh hưởng đến cách bạn tạo SDK Truyền vào ứng dụng của mình. Để ứng dụng của bạn duy trì chức năng Truyền 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 các ứng dụng gửi dữ liệu iOS Cast lên SDK Google Cast 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 tương ứng.

Kể từ iOS 14, 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ị 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 từ chối cấp quyền, người dùng sẽ không thể truyền.

Để cải thiện trải nghiệm người dùng, chúng tôi sẽ sửa đổi một số nội dung 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 sửa đổ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 của thiết bị mạng cục bộ đã bị vô hiệu hoá.

Các ứng dụng được tạo bằng các phiên bản SDK truyền sử dụng phiên bản 4.4.8 trở xuống sẽ tiếp tục hoạt động, miễn là ứng dụng đó được tạo bằng Xcode 11.7 trở xuống. Nếu đ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 SDK truyền phiên bản 4.6.0 trở lên để đảm bảo ứng dụng Truyền sẽ tiếp tục hoạt động đúng cách.

Bạn có thể tải SDK Cast dành cho iOS 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 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 tạo bằng Xcode 12 tìm thấy Thiết bị truyền trên mạng. Lúc nà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, một hộp thoại sẽ xuất hiện cung cấp hướng dẫn về lý do có thể không sử dụng được thiết bị, bao gồm cả thông tin về cách bật lại quyền truy cập mạng cục bộ.

Thay đổi về SDK truyền

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

Trong lần đầu tiên người dùng cố gắng Truyền, một hộp thoại quảng cáo xen kẽ truy cập mạng cục bộ (LNA) sẽ xuất hiện để giải thích lý do cần 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. Các ví dụ dưới đây minh hoạ quy trình này:

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

Không truyền được

Kể từ SDK dành cho người 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ị Truyền, thao tác nhấn vào nút Truyền sẽ mở ra một hộp thoại cho người dùng biết gợi ý về những lý do có thể khiến tính năng Truyền không hoạt động, như minh hoạ trong phần mô phỏng dưới đây:

Không dùng được quy trình và tính năng Truyền

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

  1. Thêm SDK Truyền iOS 4.8.1 vào dự án

    Nếu sử dụng CocoaPods, hãy sử dụng pod update để thêm SDK 4.8.1 vào dự án của bạn.

    Nếu không, hãy lấy SDK theo cách thủ công.

  2. Thêm NSBonjourServices vào Info.plist của bạn

    Hãy 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 sẽ 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, cũng là ID được xác định trong GCKDiscoveryCriteria.

    Cập nhật định nghĩa NSBonjourServices mẫu 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 của bạn

    Bạn nên tuỳ chỉnh thông báo xuất hiện trong lời nhắc về Mạng cục bộ bằng cách thêm 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ả khả năng khám phá tính năng Truyền và các dịch vụ khám phá khác, chẳng hạn như DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} sử dụng mạng cục bộ để khám phá các thiết bị hỗ trợ Cast trên mạng Wi-Fi của bạn.</string>

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

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

    Bạn cũng nên phát hành lại ứng dụng lên phiên bản 4.8.1 trong thời gian sớm nhất có thể.

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 được bắt đầu lần đầu tiên người dùng nhấn vào nút Truyền (GCKUICastButton). 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ộ sau khi nâng cấp lên iOS 14, thì quảng cáo xen kẽ LNA mới sẽ xuất hiện, tiếp theo là hộp thoại cấp quyền truy cập mạng cục bộ iOS.

Sẽ có một cờ mới để 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ố phần tử 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 chính sách này 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. Người dùng sẽ thấy một thông báo cung cấp thông tin để cho họ biết lý do cần đến quyền truy cập mạng cục bộ. Sau thông báo đó, thông báo LNA iOS 14 sẽ hiển thị. Quá trình khám phá thiết bị truyền bắt đầu sau khi tin nhắn được xác nhận.

Trong các lần chạy Ứng dụng tiếp theo, GCKUICastButton sẽ luôn hiển thị.

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

Ứng dụng của bạn có thể sẽ không phát hiện được các thiết bị Truyền trên mạng cục bộ, trừ phi bạn đã được Apple cấp quyền phát đa hướng kết nối mạng. 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ợ 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 của mình bằng Cast 4.6.0.

Nếu tôi phát hành lại ứng dụng của mình bằng SDK truyền mới, người dùng chạy trên iOS 13 trở xuống sẽ gặp phải vấn đề gì?

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

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

  • Cập nhật Info.plist của ứng dụng để bổ sung nội dung mô tả về mứ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 tính năng Truyền cũng như mã ứng dụng của bạn.
  • Nâng cấp ứng dụng dành cho người gửi để sử dụng SDK Truyền 4.6.0.
  • Phát hành lại ứng dụng 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 có thể xảy ra nếu bạn dùng một 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 SDK Truyền trở xuống, tính năng quét thiết bị sẽ được tự động quét. Kể từ phiên bản 4.6.0, bạn sẽ 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 cho sự thay đổi này là vì lời nhắc cấp quyền truy cập vào 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 cấp quyền xuất hiện ở những vị trí ngẫu nhiên trong ứng dụng của bạn.

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

iOS 13

Với iOS 13, chúng tôi đã đưa ra các yêu cầu mới về quyền nhằm ảnh hưởng đến các ứng dụng sử dụng SDK Google Cast.

Kể từ SDK Google Cast phiên bản 4.4.3, sẽ có thêm một SDK khác không yêu cầu quyền truy cập Bluetooth®. Tính năng này có cả trên trang web dành cho nhà phát triển và trên google-cast-sdk-no-bluetoothCocoapods mới.

Bảng chi tiết về ứng dụng

Dưới đây là bảng chi tiết tuỳ thuộc vào phiên bản SDK iOS mà bạn đang sử dụng:

Ứng dụng được tạo bằng SDK iOS 12 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 sẽ vẫn hoạt động. Các nhà phát triển nên nâng cấp lên Cast SDK phiên bản 4.4.4 khi có sẵn.
  • iOS 13 sẽ nhắc người dùng cấp quyền Bluetooth® cho ứng dụng.

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

  • 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í. 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.