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.
Bạn có những thách thức khác hoặc không thấy vấn đề của mình được nêu dưới đây? Hãy nhớ xem Câu hỏi thường gặp về Firebase chính để biết thêm Câu hỏi thường gặp về Firebase hoặc dành riêng cho sản phẩm.
Bạn cũng có thể xem kho lưu trữ SDK GitHub của nền tảng Firebase Apple để 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 khuyến khích bạn gửi các vấn đề liên quan đến SDK nền tảng Apple Firebase của riêng mình tại đó!
Firebase hỗ trợ 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ợ.
Những thay đổi để hỗ trợ cho các phiên bản Xcode nhỏ hoặc bản vá cụ thể (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ề cách 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 Firebase của Apple và trên trang thiết lập SDK nền tảng Firebase của Apple .
Để 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 Thêm Firebase vào dự án Apple của bạn .
Hỗ trợ Firebase cho các bản phát hành Beta của Xcode được cung cấp trên cơ sở "nỗ lực tốt nhất". Nhà phát triển có thể theo dõi và gửi 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 để truy cập các mục Chuỗi khóa trên macOS. Làm cách nào để 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 Chuỗi khóa, 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 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. Vì vậy, khi ứng dụng Mac tương tác với chuỗi khóa, hệ thống sẽ nhắc người dùng cấp quyền truy cập vì ứng dụng Mac có thể đang sửa đổi mục chuỗi khóa mà nó không tạo ra. Để giải quyết sự khác biệt này, Firebase truy vấn chuỗi khóa bằng khóa kSecUseDataProtectionKeychain
để yêu cầu ứng dụng truy vấn một mục chuỗi khóa nằm trong 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 về 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 mở được một số URL 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 lượ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ể vào 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ố chương trình sẽ bị âm thầm bỏ qua. Ứ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.