BREAKING:

Tạo môi trường Staging cho iOS project sử dụng Firebase

Bước 1: Thiết lập trên Firebase Console

Thay vì dùng chung một Project, cách an toàn nhất là tạo hai Firebase Projects riêng biệt.

  1. Project 1 (Production): Ví dụ MyAwesomeApp-Prod
  2. Project 2 (Staging): Ví dụ MyAwesomeApp-Staging
  3. Trong mỗi Project, hãy thêm một iOS App. Bạn nên dùng Bundle ID khác nhau để có thể cài đặt cả hai bản app trên cùng một điện thoại:
    • Prod: com.yourcompany.app
    • Staging: com.yourcompany.app.stg
  4. Tải cả hai file GoogleService-Info.plist về máy. Đổi tên chúng để dễ phân biệt (ví dụ: GoogleService-Info-Prod.plistGoogleService-Info-Stg.plist).

Bước 2: Cấu hình Build Configurations trong Xcode

Chúng ta cần tạo ra các “môi trường” bên trong Xcode.

  1. Mở dự án Xcode -> Chọn Project (không phải Target).
  2. Tại tab Info, tìm mục Configurations.
  3. Nhấn nút + và chọn “Duplicate ‘Debug’ Configuration”, đặt tên là Staging.
  4. Lặp lại nếu bạn muốn có cả bản Release (Staging).

Bước 3: Phân tách Bundle Identifier

Để hai app có thể “sống chung” trên một thiết bị:

  1. Chọn Target của app -> Tab Build Settings.
  2. Tìm từ khóa Product Bundle Identifier.
  3. Mở rộng mục này ra, bạn sẽ thấy các hàng tương ứng với các Configuration đã tạo.
  4. Chỉnh sửa giá trị:
    • Debug/Staging: com.yourcompany.app.stg
    • Release: com.yourcompany.app

Bước 4: Tổ chức file GoogleService-Info.plist

Bạn cần đưa cả hai file plist vào Xcode nhưng không được tick vào mục “Add to targets”. Chúng ta sẽ dùng script để copy file phù hợp vào app khi build.

  1. Tạo một thư mục trong project (ví dụ: FirebaseConfig).
  2. Bỏ file GoogleService-Info-Stg.plistGoogleService-Info-Prod.plist vào đó.
  3. Tại Tab Build Phases, nhấn dấu + -> New Run Script Phase.
  4. Đặt tên script là “Firebase Environment Selector” và dán đoạn mã sau:

Bash

# Đường dẫn tới thư mục chứa file cấu hình
PATH_TO_CONFIG=$SRCROOT/$PROJECT_NAME/FirebaseConfig

if [ "${CONFIGURATION}" == "Staging" ] || [ "${CONFIGURATION}" == "Debug" ]; then
    cp -r "${PATH_TO_CONFIG}/GoogleService-Info-Stg.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
    echo "Using Staging Firebase config"
else
    cp -r "${PATH_TO_CONFIG}/GoogleService-Info-Prod.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
    echo "Using Production Firebase config"
fi

Bước 5: Kiểm tra trong Code (Tùy chọn)

Nếu bạn cần thay đổi logic code tùy theo môi trường (ví dụ: URL API khác nhau), bạn có thể thêm Swift Compiler Custom Flags.

  1. Vào Build Settings -> Tìm Other Swift Flags.
  2. Tại dòng Staging, thêm flag -DSTAGING.
  3. Trong code, bạn có thể kiểm tra:

Swift

#if STAGING
    print("Đang chạy môi trường Staging")
    let apiURL = "https://staging-api.example.com"
#else
    print("Đang chạy môi trường Production")
    let apiURL = "https://api.example.com"
#endif

Bước 6: Cách chạy

Bây giờ, khi muốn test bản Staging:

  1. Nhấn vào Scheme của App (cạnh nút Play) -> Edit Scheme.
  2. Tại mục Run -> Tab Info, đổi Build Configuration thành Staging.
  3. Build và Run. App của bạn sẽ tự động kết nối với Database/Auth của Firebase Staging.

Lưu ý quan trọng:

  • Firebase SDK: Đảm bảo bạn gọi FirebaseApp.configure() trong AppDelegate như bình thường. Script ở Bước 4 sẽ lo việc nạp đúng file cấu hình cho nó.
  • Push Notifications: Bạn sẽ cần upload cả 2 chứng chỉ APNs (một cho Prod, một cho Staging) lên từng project Firebase tương ứng.

Post A Comment

Your email address will not be published. Required fields are marked *

Leave a Reply