Tôi gặp vấn đề tương tự. Tôi có bốn mục tiêu khác nhau cần sử dụng cùng một tệp GoogleService-Info.plist nhưng với các bundleID khác nhau. Tôi tình cờ gặp phải điều này excellent article from Restless Thinker cung cấp giải pháp cho vấn đề chính xác này.
PlistBuddy là một công cụ miễn phí được cung cấp bởi Apple và được tích hợp sẵn trong OSX.!
PlistBuddy có thể tạo và sửa đổi tệp plist. Here's a great tutorial by Fotis. Anh ấy làm cho nó trông giống như một miếng bánh.
Điều đầu tiên là bạn kiểm tra xem tệp GoogleService-Info.plist có được liệt kê trong phần Xây dựng giai đoạn> Sao chép tài nguyên cho từng mục tiêu hay không. Điều này đã được đưa ra, nhưng một kiểm tra lại sẽ không bị tổn thương. Thêm tệp nếu nó không có.
Điều tiếp theo bạn cần làm là tạo một Giai đoạn xây dựng mới cho từng mục tiêu. Chuyển đến Dự án> Mục tiêu> Chọn mục tiêu của bạn> Tạo giai đoạn Kiểm tra phần trên cùng bên trái của màn hình Xây dựng giai đoạn cho nút +.
Thêm giai đoạn tùy chỉnh mới. (Bạn có thể đã có giai đoạn Run Script, trong trường hợp này, chỉ cần tiếp tục bổ sung các lệnh sau lệnh hiện tại của bạn)
Chọn New Run Script Giai đoạn và trong hộp mới mở ra, nhập lệnh PlistBuddy bạn
/usr/libexec/PlistBuddy -c "Set :BUNDLE_ID ${PRODUCT_BUNDLE_IDENTIFIER}" $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/GoogleService-Info.plist
Đảm bảo tên tệp .app (trong Sản phẩm) giống với tên mục tiêu của bạn hoặc tên này sẽ không hoạt động. Bạn có thể $ TARGET_NAME.app để làm cho nó giống như tên project.app của bạn.
Bạn có thể thay đổi nhiều giá trị theo cách này, chỉ cần thêm một dòng mới khác vào tập lệnh. Bạn sẽ cần phải thêm hai dòng nữa ít nhất để thay đổi CLIENT_ID và REVERSE_CLIENT_ID.
/usr/libexec/PlistBuddy -c "Set :CLIENT_ID 123456789012-abcdefghijklmnopqrstuvwxyzabcdefghijklm.apps.googleusercontent.com" $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/GoogleService-Info.plist
/usr/libexec/PlistBuddy -c "Set :REVERSED_CLIENT_ID com.googleusercontent.apps.123456789012-abcdefghijklmnopqrstuvwxyzabcdefghijklm" $BUILT_PRODUCTS_DIR/$TARGET_NAME.app/GoogleService-Info.plist
Bạn có thể phải dọn dẹp để hoạt động. Xây dựng và chạy trên thiết bị. Bạn có thể cần phải chọn hộp nhỏ bên dưới Tập lệnh chạy có nội dung 'Chạy tập lệnh chỉ khi cài đặt' khi cài đặt trên thiết bị.Khi tôi bỏ chọn hộp này, XCode giữ liên quan đến dữ liệu gốc đã có của tôi.
Sử dụng PlistBuddy, bạn có thể thay đổi bất kỳ giá trị plist nào dựa trên mục tiêu. Hy vọng điều này đã giúp.
Bạn đã xem các giai đoạn xây dựng tùy chỉnh trong Xcode chưa? Tạo một pha cho mỗi mục tiêu sao chép plist mong muốn vào GoogleService-Info.plist. – rascal2210
Bạn có thể hình dung ra điều này không? Tôi đang cố gắng thiết lập Đăng nhập bằng Google với hai mục tiêu và một tài khoản hoạt động tốt và mặt khác, chế độ xem Chế độ đăng nhập xuất hiện nhưng không có nút "Hủy". Kỳ dị. – Adama
Chưa, không. Tôi có thể sẽ lại truy cập lại vấn đề này vào tháng 10 để bắt đầu một đợt phát hành phiên bản phụ khác của tôi vào cửa hàng ứng dụng. Bạn có quản lý để nhận hai ID gói riêng cho các phiên bản khác nhau của mình không? – NCIXGreg