iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Mobile Development

React Native CLI 開發心法系列 第 14

DAY 14 使用 Firebase 發佈 React Native 測試版 APP - 多種環境配置

  • 分享至 

  • xImage
  •  

現在了解了如何打包 Andriod 的 APK 跟 iOS 的 IPA ,接下來要使用 Firebase 來發佈這些打包好的應用程式,以提供其他人安裝測試版應用程式使用。當然以真實開發的情境,通常會需要配置不同的環境,所以在此篇文中會實作將 Firebase 的環境分別配置成 Production 環境與 Development 環境。

建置 Firebase 專案 - 給開發環境使用

登入 Firebase,點選新增專案。
為了與正式環境有所區隔,專案名稱使用 ironmanDev 。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496pgy9szeImV.png

可以選擇要不要加入 GA 。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496fV7NNqifVF.png

https://ithelp.ithome.com.tw/upload/images/20230918/20162496a8RM9pOYZn.png

https://ithelp.ithome.com.tw/upload/images/20230918/20162496eVeFn1gOE3.png

https://ithelp.ithome.com.tw/upload/images/20230918/20162496DG0UvwyzzM.png

建立完成會進到這個畫面,可以從左邊的側欄看到 firebase 有許多的功能,包含效能監測、測試、推播...等,我會在後續的文章中提到。現在要使用的功能是 App distrubution。

點擊左上角的齒輪中的專案設定。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496pEdHn7d0ay.png

新增 React Native Firebase 至你的專案

yarn add @react-native-firebase/app

yarn add @react-native-firebase/app-distribution

cd ios && pod install

新增 iOS 應用程式至 Firebase

點選下方 iOS icon 開始新增 iOS 應用程式至 Firebase 專案。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496HIKeKh5sB9.png

https://ithelp.ithome.com.tw/upload/images/20230918/20162496Cmv7HrWdEg.png

下載 GoogleService-Info.plist

https://ithelp.ithome.com.tw/upload/images/20230918/201624964GXO9392q5.png

GoogleService-Info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>API_KEY</key>
	<string>*YOUR_API_KEY*</string>
	<key>GCM_SENDER_ID</key>
	<string>*YOUR_GCM_SENDER_ID*</string>
	<key>PLIST_VERSION</key>
	<string>*YOUR_PLIST_VERSION*</string>
	<key>BUNDLE_ID</key>
	<string>*com.YOUR_PROJECT.dev*</string>
	<key>PROJECT_ID</key>
	<string>*YOUR_PROJECT_ID*</string>
	<key>STORAGE_BUCKET</key>
	<string>*YOUR_STORAGE_BUCKET*</string>
	<key>IS_ADS_ENABLED</key>
	<false></false>
	<key>IS_ANALYTICS_ENABLED</key>
	<false></false>
	<key>IS_APPINVITE_ENABLED</key>
	<true></true>
	<key>IS_GCM_ENABLED</key>
	<true></true>
	<key>IS_SIGNIN_ENABLED</key>
	<true></true>
	<key>GOOGLE_APP_ID</key>
	<string>*YOUR_GOOGLE_APP_ID*</string>
</dict>
</plist>

ios/專案名稱.xcodeprojios/專案名稱.xcworkspace 的目錄底下新增一個 Firebase 的資料夾,裡面分別加入 Dev 的資料夾跟 Prod 的資料夾,再把剛剛下載的 GoogleService-Info.plist 放到 Dev 的資料夾中。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496nyk85t4EwU.png

新增 Firebase SDK

https://ithelp.ithome.com.tw/upload/images/20230918/20162496sbUJ0DhxSs.png

Xcode 中新增 Firebase iOS SDK

https://ithelp.ithome.com.tw/upload/images/20230918/20162496Za15ZhQHsJ.png

https://ithelp.ithome.com.tw/upload/images/20230918/201624967fLYk5BCcj.png

https://ithelp.ithome.com.tw/upload/images/20230918/20162496bBBRmnNx59.png

選擇要使用的 Firebase 程式庫,這邊選了

  • FirebaseAnalytics:前面的選項有打開了 ga 的設定,如果不需要就選FirebaseAnalyticsWithoutAdId
  • FirebaseAppDistribution: 應用程式發佈的功能。
  • FirebaseAppCrashlytics: 應用程式當機追蹤的功能。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496vkeMfjGlUj.png

https://ithelp.ithome.com.tw/upload/images/20230918/20162496vXZvAJX56s.png

在 iOS 中配置 Firebase:

打開 /ios/專案名稱/AppDelegate.mm/ios/專案名稱/AppDelegate.m

引用 Firebase SDK:

#import "AppDelegate.h" 的後方,放入:#import <Firebase.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [FIRApp configure];//加入這行
  // ...
}

https://ithelp.ithome.com.tw/upload/images/20230918/201624961cgz6f4pHf.png

在 CocoaPods 中使用use_frameworks

官方文件中指出 firebase-ios-sdk v9+ (react-native-firebase v15+) 必須使用 use_frameworks

這裡有就是目前使用時 use_frameworks Flipper、Hermes 和 Fabric 會有兼容性問題
./ios/Podfile 在取得原生模組後加入 use_frameworks! :linkage => :static
並在全域加入$RNFirebaseAsStaticFramework = true

使用use_frameworks 就無法使用 Flipper了,必須把:flipper_configuration 這段註解掉。
然後輸入 cd ios && pod install --repo-update 去更新 Pod。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496ICiNJWMGw5.png

因為目前相容性的問題還沒有被解決,在筆者在其他維護的 React Native 專案中,選擇使用 react-native-firebase v15+ 以下的版本。

新增 Android 應用程式至 Firebase

https://ithelp.ithome.com.tw/upload/images/20230918/20162496tABkY9YzgV.png

下載 GoogleService-Info.plist

https://ithelp.ithome.com.tw/upload/images/20230918/20162496AOoHsxcsDZ.png

GoogleService-Info.plist 放在 andriod/app/src/development 的目錄底下。

GoogleService-Info.plist:

{
  "project_info": {
    "project_number": "your_project_number",
    "project_id": "your_project__id",
    "storage_bucket": "your_storage_bucket"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "your_mobilesdk_app_id",
        "android_client_info": {
          "package_name": "com.your_project"
        }
      },
      "oauth_client": [],
      "api_key": [
        {
          "current_key": "your_current_key"
        }
      ],
      "services": {
        "appinvite_service": {
          "other_platform_oauth_client": []
        }
      }
    }
  ],
  "configuration_version": "1"
}

https://ithelp.ithome.com.tw/upload/images/20230918/20162496glX5bIFOD3.png

在 Android 中配置 Firebase:

android/build.gradle 中加入

buildscript {
  dependencies {
    // ... other 
     classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0'
    classpath 'com.google.gms:google-services:4.3.15'
  }
}

android/app/build.gradle 中加入

apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.android.application'

建置 Firebase 專案 - 給正式環境使用

再建一個 Firebase 專案,步驟跟剛才一模一樣。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496Q2kt8rJ46X.png

分別取得 iOS 跟 Andriod 的 GoogleService-Info.plist

iOS 放入 ios/專案名稱.xcodeprojios/專案名稱.xcworkspace 的目錄 Firebase/Prod

Andriod 放在 android/app 的目錄底下。

設定 Firebase 專案環境類型:

在專案設定中,可以將環境類型設置成 實際工作環境 ,如此一來便於管理區分多個環境的專案,紅色的 Prod 標籤也意味著你在這個專案中的任何變更都會影響到正式環境。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496Mm290GGMDW.png

專案列表會用火箭特別標注。

https://ithelp.ithome.com.tw/upload/images/20230918/20162496BqYmxljAzp.png


這樣就完成了兩個環境的 Firebase 專案的建置,接著就會進入使用 Firebase 分發應用程式的教學囉。


上一篇
DAY 13 React Native iOS 打包 - IPA
下一篇
DAY 15 使用 Firebase 發佈 React Native 測試版 APP - 發佈應用程式
系列文
React Native CLI 開發心法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言