Client

Configuration and compilation of the client side (Flutter)
In order to watch the video tutorial for this section please head to the customer panel at: https://support.ridy.io
First, we will proceed with the necessary updates for both the Android and iOS apps. After completing the updates, we will then connect the configured apps to Firebase in order to utilize their Free Phone Authentication service.

Android

To begin, we need to create release keystores for signing the APKs or aab bundles. You can use the command provided below, replacing [key_alias_name] with the desired alias name of your choice:
keytool -genkey -v -keystore keystore.jks -alias [your_alias_name] -keyalg RSA -keysize 2048 -validity 10000
Ensure you have copied this file to the driver's and rider's app folders. Then, open the key.properties file located in the android folder and enter the alias name and password you have chosen for the keystore in the appropriate fields.
Now, execute the following command to display the signature of both your system's debug keystore and the release keystore. Take a copy of the SHA-1 and SHA-256 values, as we will need them later.
../gradlew signingreport
Next, open the build.gradle file located in the app folder. Inside this file, you will find the line that specifies the applicationId. Update this line to match the application identifier of your own brand.
android {
compileSdkVersion 33
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID
- applicationId com.ridy.taxi.rider
+ applicationId com.yourCompanyName.taxi.driver

iOS

Next, we will do the same for iOS apps. Please open the Runner.xcworkspace in either rider-app/driver-app's ios folder. Next click on the Runner project in the left panel so the project settings would appear. Then under the Signing and Capabilities tab, you can change the bundle identifier:

Firebase

You can now head to the Firebase console and create a Flutter Firebase app.
First, you need to install the Firebase CLI. After that, you'll need to log in to your Firebase account using the CLI. Additionally, make sure to install the flutterfire CLI tool. If you already don't have these standard tools installed, follow the guidelines provided by Firebase during the Flutter app creation wizard.
Once you have installed those tools, Firebase will prompt you to connect your apps to the Firebase project. This process is seamless and can be accomplished by executing a command similar to the one provided below by Firebase:
flutterfire configure --project=something
When you run this command, you will be presented with the option to configure which apps you want to connect with Firebase. You can uncheck the macOS version since its support is not currently maintained.

Android (Post Firebase)

Now, navigate to the Firebase console, where you will notice that Flutterfire has automatically created the necessary Android and iOS apps for you. For both the driver and rider applications created by Firebase, make sure to provide both the previously saved SHA-1 and SHA-256 values. This step is essential for Firebase to verify and accept your verification requests.

iOS (Post Firebase)

Open the Runner workspaces for both the rider's and driver's iOS applications. Locate the GoogleService-Info.plist file within each workspace. Find the row labeled REVERSE_CLIENT_ID inside this file and copy its corresponding value.
Next, open the Info.plist file and navigate to URL Types -> Item 0 (Firebase) -> URL Schemes -> Item 0. Paste the copied value from the REVERSE_CLIENT_ID row as the new value in this location.

Pointing to the server

In order for the apps to communicate with your server's backend, you need to modify the config.dartfile in the client-shared project. Open the file and locate the variable that specifies the server IP. If you access your admin panel at 1.1.1.1:4003, remove the:4003 part and update the variable's value accordingly. Here's an example of how to edit the variable:
- String serverIP = "x.x.x.x";
+ String serverIP = "1.1.1.1";
With the above steps completed, you can now compile either the driver or rider app using Flutter's standard build commands.
Android
iOS
// Build with debug keystore
flutter build apk
flutter build appbundle
// Build with release keystore
flutter build apk --release
flutter build appbundle --release
flutter build ipa