/frame-flutter

The Frame compatible app for iOS and Android

Primary LanguageDartOtherNOASSERTION

Noa for iOS and Android – A Flutter app for Frame

Welcome to the Noa app repository! Built using Flutter, this repository also serves as a great example of how to build your own Frame apps.

Apple App Store badge       Google Play Store badge

Noa screenshots

Getting started

  1. Ensure you have XCode and/or Android studio correctly set up for app development

  2. Install Flutter for VSCode

  3. Clone this repository

    git clone https://github.com/brilliantlabsAR/noa-flutter.git
    cd noa-flutter
  4. Get the required packages

    flutter pub get
  5. Rename .env.template to .env and populate it with your own Google O-auth client IDs if desired

  6. Connect your phone and run the app in release mode

    flutter run --release

Regenerating the platform files

Sometimes it may be necessary to regenerate the platform files. To do this, delete the ios and android folders, and run the following commands. Adjust for your own organization identifier accordingly:

  1. Delete the ios and android folders

    rm -rf android ios
  2. Regenerate them

    flutter create --platforms ios --org xyz.brilliant --project-name noa .
    flutter create --platforms android --org xyz.brilliant --project-name noa .
  3. Regenerate the app icons

    flutter pub run flutter_launcher_icons
  4. Insert the following into ios/Runner/Info.plist to enable Bluetooth for iOS

    <dict>
        <key>NSBluetoothAlwaysUsageDescription</key>
        <string>This app always needs Bluetooth to function</string>
        <key>NSBluetoothPeripheralUsageDescription</key>
        <string>This app needs Bluetooth Peripheral to function</string>
        <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
        <string>This app always needs location and when in use to function</string>
        <key>NSLocationAlwaysUsageDescription</key>
        <string>This app always needs location to function</string>
        <key>NSLocationWhenInUseUsageDescription</key>
        <string>This app needs location when in use to function</string>
        <key>UIBackgroundModes</key>
        <array>
            <string>bluetooth-central</string>
        </array>
        ...
    
  5. Insert the following into `ios/Runner/Info.plist to enable Google sign in for iOS

    <dict>
        <key>CFBundleURLTypes</key>
        <array>
            <dict>
                <key>CFBundleTypeRole</key>
                <string>Editor</string>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>com.googleusercontent.apps.178409912024-a779l8d62k0r94f8qg63bcs77j986htk</string>
                </array>
            </dict>
        </array>
        ...
    
    1. Finally, you may want to find and replace all occurrences of the string xyz.brilliant to your own reverse-domain bundle identifier