Trang này cung cấp các mẹo và cách khắc phục sự cố dành riêng cho nền tảng của Apple mà bạn có thể gặp phải khi sử dụng Firebase.
Có những thách thức khác hoặc không nhìn thấy vấn đề của bạn nêu dưới đây? Đảm bảo xem Câu hỏi thường gặp chính về Firebase để biết thêm Câu hỏi thường gặp về pan-Firebase hoặc dành riêng cho sản phẩm.
Bạn cũng có thể xem repo SDK GitHub của Firebase Apple platforms để biết danh sách cập nhật các sự cố được báo cáo và cách khắc phục sự cố. Chúng tôi cũng khuyến khích bạn gửi các vấn đề liên quan đến SDK nền tảng Apple cho Firebase của riêng bạn tại đó!
Firebase hỗ trợ những phiên bản Xcode nào?
Firebase hỗ trợ tối đa hai phiên bản Xcode chính, không bao gồm các phiên bản Xcode mà Apple không còn hỗ trợ. Ví dụ: bắt đầu từ tháng 3 năm 2019, Apple yêu cầu ít nhất iOS 12 trên tất cả các ứng dụng, nghĩa là hỗ trợ Xcode 9 đã bị loại bỏ và Xcode 10 là phiên bản chính duy nhất được hỗ trợ.
Các thay đổi để hỗ trợ cho các phiên bản nhỏ hoặc bản vá cụ thể của Xcode (ví dụ: 9.2.0 đến 9.4.1) được xác định dựa trên nhu cầu của SDK nền tảng Firebase của Apple và khảo sát về việc sử dụng của nhà phát triển. Những thay đổi này được phản ánh trong ghi chú phát hành SDK nền tảng Apple của Firebase và trên trang thiết lập SDK nền tảng Apple của Firebase .
Để xem phiên bản Xcode tối thiểu được SDK hỗ trợ, hãy kiểm tra các yêu cầu được liệt kê trong Add Firebase to your Apple project .
Hỗ trợ Firebase cho các bản phát hành Xcode Beta có sẵn trên cơ sở "nỗ lực tốt nhất". Các nhà phát triển có thể theo dõi và gửi các sự cố trong kho lưu trữ SDK nền tảng Apple của Firebase trên GitHub .
Ứng dụng của tôi nhắc người dùng nhập mật khẩu của họ để truy cập các mục Chuỗi khóa trên macOS. Làm thế nào để tôi khắc phục điều này?
Nâng cấp phần phụ thuộc Firebase của bạn lên phiên bản 9.6.0 trở lên và thêm [Khả năng chia sẻ chuỗi khóa](/docs/ios/troubleshooting-faq#macos-keychain-sharing) vào mục tiêu của bạn.
Tại sao Firebase yêu cầu khả năng Chia sẻ chuỗi khóa trên macOS?
SDK Firebase sử dụng chuỗi khóa để lưu trữ thông tin như ID cài đặt Firebase được sử dụng cho FCM. Nếu không có quyền truy cập Keychain, SDK Firebase có thể không hoạt động chính xác. Chuỗi khóa macOS hoạt động khác với chuỗi khóa kiểu iOS được sử dụng trên các nền tảng khác (iOS, tvOS, macCatalyst và watchOS).
Trên macOS, các ứng dụng sử dụng chuỗi khóa dùng chung có thể được sửa đổi bởi các ứng dụng và quy trình khác. Không giống như iOS, không có chuỗi khóa hộp cát nào mà ứng dụng có quyền truy cập ngầm định. Vì vậy, khi một ứng dụng Mac tương tác với chuỗi khóa, hệ thống sẽ nhắc người dùng truy cập vì ứng dụng Mac có thể đang sửa đổi một mục chuỗi khóa mà nó không tạo. Để giải quyết sự khác biệt này, Firebase truy vấn chuỗi khóa bằng khóa kSecUseDataProtectionKeychain
, khóa này yêu cầu ứng dụng truy vấn một mục chuỗi khóa là một phần của nhóm truy cập chuỗi khóa (đây là hành vi mặc định trên các nền tảng khác). Khả năng Chia sẻ chuỗi khóa là bắt buộc vì ứng dụng cần nó để tổng hợp một nhóm truy cập có thể được chia sẻ giữa các mục tiêu của nó, do đó cho phép ứng dụng tự do truy cập các mục chuỗi khóa trong nhóm truy cập.
Để biết thêm thông tin, hãy xem tài liệu Chuỗi khóa của Apple.
Trong Xcode phiên bản 13 trở lên, tại sao ứng dụng UIKit của tôi không thể mở một số URL mà tôi đã đăng ký
trong Info.plist của tôi?
Apple đã giới thiệu giới hạn 50 mục LSApplicationQueriesSchemes
trong tệp Info.plist
. Vào năm 2015, Apple đã giới thiệu LSApplicationQueriesSchemes
để giới hạn số lượng truy vấn URL mà mỗi ứng dụng có thể thực hiện. Với việc phát hành Xcode 13, các giới hạn này được thực thi, trong khi ở Xcode 12 trở về trước, không có giới hạn hiệu quả đối với số lượng lược đồ.
Một số sản phẩm Firebase, như Xác thực Firebase và Liên kết động Firebase, yêu cầu sử dụng giao thức URL tùy chỉnh để chuyển hướng đến ứng dụng của bạn. Các URL này tuân theo sơ đồ URL ngắn gọn và nhất quán, không được tính đáng kể so với giới hạn sơ đồ 50 liên kết.
Lưu ý rằng đối với các ứng dụng tiếp tục đăng ký hơn 50 LSApplicationQueriesSchemes
, một số lược đồ sẽ bị bỏ qua một cách âm thầm. Ứng dụng có thể không thực thi được một số liên kết sâu nhất định, tùy thuộc vào thứ tự chúng được thêm vào.